画像からテキスト生成(キャプション生成)の実験報告
前回までの記事で、画像のベクトル検索の実験を進めてきましたが、今回は「画像からテキスト(キャプション)」を生成するモデルの実験を行いました。 画像の内容を言語化することで、検索のキーワードマッチングや、画像の内容説明(アクセシビリティ向上)などへの応用が期待できます。
実験の詳細な結果は以下のノートブックにまとめてあります。
cmscom/image-vector-poc - 78-captioning-summary.ipynb
前回までの記事で、画像のベクトル検索の実験を進めてきましたが、今回は「画像からテキスト(キャプション)」を生成するモデルの実験を行いました。 画像の内容を言語化することで、検索のキーワードマッチングや、画像の内容説明(アクセシビリティ向上)などへの応用が期待できます。
実験の詳細な結果は以下のノートブックにまとめてあります。
cmscom/image-vector-poc - 78-captioning-summary.ipynb
前回の記事ではベクトル検索の基本構成を整理しました。本稿では、言語と画像が同じ空間で検索できるマルチモーダルの話題、近似近傍探索やベクトルDBの選択肢、さらにレガシー環境での工夫やインフラの現実的な論点まで、少し広い視点でまとめます。
前回の記事(2月4日の一部)では、複雑化したLSH Overlap手法を捨て、数学的に扱いやすい「Pivot(参照点)」ベースの手法へ転換する話を書きました。
その後、理論的に美しい「三角不等式を用いた下界(Lower Bound)フィルタ」の実装と検証を進めていましたが、実験結果は予想外のものでした。 結論から言えば、「理論的に正しい厳密なフィルタ」は、「単純でヒューリスティックな範囲検索」に実用面で完敗しました。
今回は、一連のベンチマーク実験から得られた知見と、最終的にたどり着いた「最もシンプルで実用的な構成」について報告します。
エンジニアリングにおいて、複雑なヒューリスティックを積み重ねた結果、管理しきれないほどの複雑さを抱え込んでしまうことがあります。 今回のプロジェクトでも、まさにその「泥沼」に足を踏み入れかけていました。
軽量なベクトル検索を実現するために採用していた「LSH(Locality Sensitive Hashing)」のOverlap戦略が限界を迎え、よりシンプルで数学的な裏付けのある「Pivot(参照点)ベース」の手法へと転換した話をします。31個のカラムを8個に削減し、劇的なスリム化と柔軟性を手に入れた過程の記録です。
前回の記事では、少しマニアックな「LSH Cascade」という独自のアプローチについて書きましたが、今回は基本に立ち返って「ベクトル検索(Vector Search)」そのものの一般的な仕組みや、私が普段利用している技術スタックについてまとめたいと思います。
近年、RAG (Retrieval-Augmented Generation) の流行とともに必須技術となりつつあるベクトル検索ですが、その構成要素を分解してみると、非常に興味深い技術の集合体であることがわかります。