Fessでセマンティックサーチ

Fess 14.9.1にfess-webapp-semantic-searchプラグインを入れることで、通常のキーワードベースの検索に加えて、ベクトルで検索した結果をマージして利用することができます。以前のプラグインでは、上位X件しか、ベクトル検索の結果を表示できなかったのですが、Fess 14.9.1以降ではReciprocal Rank Fusion(RRF)によって、ベクトル検索の結果をマージすることができるので、キーワード検索の結果でページングすることができ、通常の検索システムとしても利用できます。

利用方法は、fess-webapp-semantic-searchのREADME.mdに書いてあるとおりですが、Dockerであれば、簡単に試すことができると思います。まず、docker-fessをcloneして取得します。

git clone --branch v14.9.1 --single-branch https://github.com/codelibs/docker-fess.git
cd docker-fess/compose

compose.yamlを編集して、プラグインがインストールされるようにします。以下のように環境変数に設定されるようにします。

      - "FESS_PLUGINS=fess-webapp-semantic-search:14.9.0"

Fessを起動します。

docker compose -f compose.yaml -f compose-opensearch2.yaml up -d

OpenSearchにモデルをロードさせるために以下のスクリプトを取得してセットアップします。一応、多言語対応のモデルを利用して、ベクトルを生成していますが、必要に応じて、モデルを変更するなどしてください。

curl -o setup.sh https://github.com/codelibs/fess-webapp-semantic-search/blob/fess-webapp-semantic-search-14.9.0/tools/setup.sh
/bin/bash setup.sh

setup.shを実行すると、fess.semantic_search.〜が表示されるので、これは、Fessにログインして、全般のシステムプロパティの入力欄にコピペしてください。

あとは、管理画面のメンテンナンスページにいき、再インデクシングを実行してください。この状態では、何もインデクシングされていないと思いますが、再インデクシングすると、ベクトル検索が可能なインデックスに更新する処理が走ります。

あとは、普通にクロールして、検索するだけです。何かあれば、フォーラムとかで気軽に聞いてください。

「Fessでセマンティックサーチ」への2件のフィードバック

  1. Hello, after I installed the fess-webapp-semantic-search plugin for Fess, I see there is now a content_vector field in OpenSearch. How can I check if semantic search is working properly?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です