ディスカッション (8件)
RAG(Retrieval-Augmented Generation)システムにおいて、テキストだけでなく画像をどのようにインデックス化し、検索精度を高めるかについての技術的な解説です。効率的な検索を実現するための戦略や、マルチモーダルモデルを活用したデータ処理のベストプラクティスを共有します。
あのクッキーのポップアップが出てくると、もうサイトから離脱したくなるし二度と戻ってくる気がしなくなるんだよね。
クエリ実行時にモデルへ画像を送るのではなく、インデックス作成時に安価なビジョンモデルで画像を一度だけ説明化し、そのテキストを通常のテキストチャンクと一緒に保存・取得しています。
これ、私もObsidianのメモ整理でしばらく前からやってるやり方だわ。重要そうな画像なら、その後にテキスト説明(可能ならMermaid、無理なら英語)をブロックで貼り付けてる。これならエージェントが画像を直接認識できなくても中身を理解できるからね。手作業でやってるけど、検索や取得に頼るエージェントのパフォーマンス向上は確実に実感できるし、やる価値はあると思うよ。
メディアの取り込みにおいて、これは「eager(先行)」処理と呼ばれるものだね。歴史的には画像や動画のサムネイル生成や、一般的なサイズの事前生成などで使われてきた手法だよ。これと同じパターンを踏襲していて、非常に理にかなってる。ただ懸念点があるとすれば、LLMの非決定的な性質上、新しいモデルが出るたびにデータから新しい知見が引き出される可能性があることかな。
例えば、画像内の車は認識できても、赤信号を無視しているという文脈までは以前のモデルでは拾えなかったかもしれない。新しいモデルならそれを拾えるようになるわけで、こうした文脈の変化に合わせてLLMの再処理が必要になったり、複数のモデルによる結果を組み合わせるために1対多の管理が必要になるかもしれない。
あと、実際に運用してみるとよく参照されるアセットが見えてくるから、アクセスが多いものに絞って処理をかければコストも大幅に抑えられるはずだ。
なるほど、賢いね。ちょうど先日、RAGシステムで画像やグラフ、リッチなPDFをどう扱うか考えてたところなんだ。知見が深まったよ、ありがとう!
誰かデプロイしたい人向けに、自分たちのオープンソースフレームワークにも実装してるよ:
https://github.com/Qbix/AI/blob/6753f6e453908682401f49760002... (https://github.com/Qbix/AI/blob/6753f6e453908682401f4976000212b71be2d6fc/classes/AI/LLM.js#L434)
https://github.com/Qbix/AI/blob/main/config/observations.jso... (https://github.com/Qbix/AI/blob/main/config/observations.json)
数ヶ月前にここに詳しく書いたよ: https://community.safebots.ai/t/building-cultural-infrastruc... (https://community.safebots.ai/t/building-cultural-infrastructure-with-ai-a-safe-end-to-end-system/14)
マルチモーダルな埋め込みモデルを使わないのはなんで?
他の人たちがどうしているかは分からないけど、私は2年前からこの方法をやっていて、かなりうまくいってるよ。ただ、画像を含むドキュメントをチャンク化する際に、複数の著者を追いかけて画像に適したキャプションを更新してもらう必要があったのは面倒だったかな。
マルチモーダルを使うよりコスト効率はいいし、取り込み時間も短くて済む。唯一の難点は、画像を見ないと答えられないような質問がクエリとして来た場合、このアーキテクチャだと少し修正が必要になることだね。