そのうち、やりたいなーと思っていた画像検索の機能をプラグインとして作ってみました。
fess-webapp-multimodalプラグインにその機能をまとめましたが、マルチモーダルということで、最終的には画像に限らず、音声や動画も対象にできれば、良いなぁという感じで、そのような名前にしてあります。現時点では、画像しか対象にできていませんが。
画像検索については、CLIPにより、テキストと画像の埋め込みベクトルを作成して、OpenSearchでベクトル検索する感じになっています。
CLIPは、OpenAIが開発したモデルで、テキストと画像の関係を学習するために使用されます。具体的には、テキストと画像のペアを大量に学習することで、画像の内容をテキストで表現したり、テキストに基づいて関連する画像を検索することができます。これにより、テキストと画像の間の意味的な類似性を理解し、それぞれの意味で一致するものを検索できるので、このプラグインで利用しています。
Open Images Datasetの画像を利用して、試してますが、red carとかで検索すれば、赤い車がヒットしますし、running dogとかだと走っている犬の画像がヒットするので、期待通りな感じでした。(始めに間違って、距離計算をL2にしていたら、微妙な感じで焦りましたが、コサイン類似度に変えたらいい感じになった)
今回の実装は、Fess 14.15に依存している部分があるので、次のリリースで、docker-multimodalsearchみたいな感じで、まとめようかと思います。(Fessのセマンティックサーチのdocker-semanticsearchみたいな感じで)