Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マルチモーダルRAGやってみた

tanimon
October 31, 2024

 マルチモーダルRAGやってみた

tanimon

October 31, 2024
Tweet

Other Decks in Technology

Transcript

  1. そもそもRAG とは? Retrieval-Augmented Generation の略 日本語では「検索拡張生成」と呼ばれることも LLM ( 大規模言語モデル) に外部知識を与えて回答を生成する手法

    LLM 単体では、学習済みのデータに基づく回答しか行えない 学習後に公開された情報や、社内独自の情報などについては正しく回答できな い(ハルシネーション) RAG を利用することで、外部データに基づいた回答を行える 6
  2. RAG の基本的な流れ | データ準備フェーズ データ データ 前処理されたデータ データソース Loader Preprocessor

    Data Store Loader: データソースからデータを読み込む Preprocessor: データを後続の処理で扱いやすい形に変換する。例えば、データを チャンク分割したり、埋め込みベクトルを生成したりする Data Store: 前処理されたデータを保存し、検索可能な状態にする。Pinecone ・ ChromaDB などのベクトルDB や、Kendra ・OpenSearch などの全文検索エンジン を使用することができる 8
  3. RAG の基本的な流れ | 実行時フェーズ 質問 質問 検索結果 回答 検索クエリ/ 検索結果

    ユーザー Retriever Generator Data Store Retriever: ユーザーからの質問に基づいて、Data Store から関連するデータを検索 する Generator: ユーザーの質問と検索結果からプロンプトを組み立て、回答を生成す る。回答の生成にはLLM を使用する 9
  4. アプローチ1: すべてのモダリティを同じベクトル空間に埋め込む Preprocessor テキストデータ チャンク化されたテキスト データ 画像データ データ データ 前処理されたデータ

    データソース Loader Data Store Data Classifier Text Splitter MultiModalEmbeddingModel 既存のテキストベースRAG システムの埋め込みモデルをマルチモーダルなものに変 更する マルチモーダル埋め込みモデルを用いてテキストと画像を同じベクトル空間でエ ンコードし、複数のモダリティにまたがった検索ができる 14
  5. アプローチ1: すべてのモダリティを同じベクトル空間に埋め込む 😆 メリット: データ準備フェーズの処理内容・インフラ構成がシンプル 既存のテキストベースRAG システムの多くを流用できる 🙁 デメリット: 効果的な埋め込みモデルの選定が難しい

    マルチモーダル埋め込みモデルの最大入力トークン数はテキスト埋め込みモ デルより少ない傾向にある 複雑な画像情報(画像内のテキストや表など)の取り込み精度が課題になりや すい 15
  6. アプローチ2: モダリティごとに異なるストアを用意する データ準備フェーズの処理の流れ: Preprocessor テキストデータ 画像データ データ データ 前処理されたテキストデー タ

    前処理された画像データ データソース Loader テキスト用Data Store 画像用Data Store Data Classifier テキスト用前処理 画像用前処理 実行時フェーズの処理の流れ: 質問 質問 検索結果 リランクされた検索結果 回答 検索クエリ/ 検索結果 検索クエリ/ 検索結果 ユーザー Retriever Reranker Generator テキスト用Data Store 画像用Data Store 16
  7. アプローチ3: すべてのモダリティを1 つの主要なモダリティにまとめ る Preprocessor テキストデータ 画像データ 画像の説明 チャンク化されたテキスト データ

    データ データ 前処理されたデータ データソース Loader Data Store Data Classifier Text Splitter Multimodal Text Generation Model Text Embedding Model 主要なモダリティを1 つ選択し、その他のモダリティをそれに変換 例: テキストを主要なモダリティとして選択し、画像をテキストに変換する 主要なモダリティによって検索できるようにしておき、検索結果に紐付く元デー タを取得できようにしておく 18
  8. データ準備フェーズの概要 MultiVectorRetriever 画像を含むドキュメント 画像 画像の説明 画像の説明の埋め込みベク トル テキスト テキストの埋め込みベクト ル

    画像 テキスト データソース ドキュメントから画像を抽 出 テキストEmbedding Model でテキストの埋め込みベク トルを生成 マルチモーダルLLM で画像 の説明を生成 ベクトルDB (テキスト・画像の説明の 埋め込みベクトルを保持) Docstore (テキスト・画像の元デー タを保持) MultiVectorRetriever は、内部的にベクトルDB とDocstore を管理している ベクトルDB: テキストと画像の説明文の埋め込みベクトルを保持 Docstore: 元の画像データとテキストデータを保持 検索時には、検索クエリに類似するベクトルがベクトルDB から検索され、それに 紐付く元データがDocstore から返される 22
  9. 実行時フェーズの概要 質問 質問 検索結果 (テキスト・画像の説明 文・画像の元データ) 回答 ユーザー MultiVectorRetriever Generator

    検索クエリに類似するテキスト・画像が取得される 画像に関しては、検索クエリと画像の説明文の類似度に基づいた検索が行わ れ、検索結果として画像の説明文と元の画像データが取得される 検索結果とユーザーの質問がGenerator に渡され、回答が生成される 23
  10. まとめ RAG は、LLM に外部知識を与えることでより正確な回答を生成する手法 マルチモーダルRAG は、テキストだけでなく画像や音声などの情報を統合して回 答を生成する手法 マルチモーダルRAG を実現するアプローチを3 つ紹介

    アプローチ1: すべてのモダリティを同じベクトル空間に埋め込む アプローチ2: モダリティごとに異なるストアを用意する アプローチ3: すべてのモダリティを1 つの主要なモダリティにまとめる 今回はアプローチ3 を採用し、LangChain の MultiVectorRetriever を使用して 実装した 27
  11. 参考情報 Build a Retrieval Augmented Generation (RAG) App | 🦜️🔗

    LangChain マルチモーダル検索拡張生成 (RAG) の簡単な紹介 - NVIDIA 技術ブログ 【RAG 】画像・テーブルデータに対応可能な Multi-representation-indexing につ いて | Hakky Handbook 28
  12. 参考情報 Multi-Vector Retriever for RAG on tables, text, and images

    Multimodal Retrieval Augmented Generation (RAG) with Gemini, Vertex AI Vector Search, and LangChain RAG の課題と精度改善のための発展的なアプローチまとめ | Hakky Handbook 29
  13. 30