fess-ingest-vectorizer

fess-text-vectorizerを起動しておいて、Fessにfess-ingest-vectorizerをインストールしておけば、OpenSearchの利用時にはcontent_vectorフィールドをknn_vector型で作って、embeddingを入れてくれるようになりました。

これでインデックスするときにベクトルを入れることができるようになったので、次に検索のクエリーでこのベクトルに当てられるようにする必要がある感じです。fess-webapp-vectorizerみたいのを作る必要がありそうですね。

Fess用のEmbedding環境の準備

そろそろFessでも、セマンティックな検索ができるか?というところに挑戦していくために準備を始める。まずは、テキストを渡したら、ベクトルを返してくれるようなサーバーを用意しないことには始まらないなと思い、実験していくたたき台として、fess-text-vectorizerを作ってみた。Fessは多言語対応しているので、一応、言語を渡して、contentにテキストを渡せば、ベクトルを返してくれる的な感じ。Transformerを使って、ざっくり作ってみただけなので、試しながら変わっていく感じになるとは思っている。

次は、fess-ingestでfess-text-vectorizerを呼び出すようなプラグインを書く感じかなと。その次にはFessのQueryHelperをいじって、検索クエリーを調整できるようにするはず。

という感じで、とりあえず、一歩前進した感じではある。

FessでOpenSearchを使う手順

Fess 14.0のインストールガイドを更新して、OpenSearchを使うインストール方法も追記しておいた。なので、Elasticsearch 8(zip/tar.gz/rpm/deb/docker)、OpenSearch 1.2(tar.gz/docker)でのインストール方法があります。まぁ、Elasticsearch 7でも使えるのだけど、そこまで書いておくとメンテがめんどくさくなるので、最新だけを書いてある感じです。英語の方も更新しないといけないけど、そのうち、時間があるときに対応かなと…。