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 14.9.1のリリース

Fess 14.9.1をリリースしました。セマンティックサーチ関連で調整が必要だったので、その修正をしました。

#2753はベクトル検索などから返ってくる結果が0件だったりすると例外が出る状態だったので修正しました。

#2754はベクトル検索などから返ってくる結果のスコアが低いものは足切りしないと、関連しないものが表示されるので、それを切り捨てるための最低スコア値を設定できるようにしました。

#2755はヘルパークラスなど、Config Loaderが実行される際に呼びさせるような処理を追加しました。

という感じで、fess-webapp-semantic-searchプラグインが利用する機能を追加しました。このプラグインは近いうちにりりーする予定ですが、これにより、自然な形でFessの結果にセマンティックサーチの結果を織り交ぜて、表示することができるようになります。

という感じですが、何かあればフォーラムをご利用ください。

Fess 14.9のリリース

Fess 14.9をリリースしました。大きな機能追加はないですが、OpenSearch 2.8がリリースされているので、それに対応するリリースです。今回の修正点は

#2749はFessのwebappプラグインで、CORSを修正できるようにしました。この機能がないと、ChatGPTプラグインをローカルモードで実行できなかったりするため、追加しました。

#2750はサムネイル生成スクリプトを修正しました。PDFからのサムネイル生成がうまく行かないケースがあるようなので、その対応です。

#2751は複数の検索結果を融合する機能です。今回は実験的に追加しました。この機能により、通常の検索結果に、ベクトル検索した結果を融合することができます。融合方法は、Reciprocal Rank Fusionで行います。今後、セマンティックサーチの機能検証をしながら、改善していく予定です。

という感じです。何かあれば、フォーラムに投げてください。