新卒エンジニアの成長記録:マルチモーダルRAGハッカソンへの挑戦
ExaWizards の新卒エンジニアが、既存のマルチモーダル RAG の検索精度課題を解決するため、抽象概念と詳細チャンクを分離した二層データベース構造を提案・実装した事例である。
キーポイント
既存手法の課題特定
従来の単一データベース方式では、テキスト同士の類似度が高いため、画像と関連するはずの論文が検索結果から漏れるという精度の問題が発生していた。
二層データベースアーキテクチャの提案
詳細情報を格納する「Chunk データベース」と、GPT で抽出したアブストラクトを格納する「Abstract データベース」を分離し、メタデータで連携させる新手法を構築した。
スコア統合による検索精度向上
両データベースからの検索結果を組み合わせ、最終スコアを再計算してランク付けを行うことで、関連性の高い情報へのアクセス精度を大幅に改善した。
実環境を想定したマルチモーダル検証
発表時にスライドやポスターを直接入手できない状況を想定し、スマホ撮影画像からの検索と応答機能を検証しました。
汎用性の高い応用展開の展望
論文やスライドだけでなく、会社の決算資料など他の画像ドキュメントへの適用も視野に入れています。
技術とビジネス視点の両輪成長
LLM や RAG などのアルゴリズムに加え、Docker や AWS の開発知識、そしてユースケース分析といったビジネス思考も習得しました。
影響分析・編集コメントを表示
影響分析
この記事は、マルチモーダル RAG の実運用における典型的な「検索精度の壁」を、アーキテクチャレベルの工夫で打破した実践的な事例を示しています。単なるツールの紹介ではなく、なぜ既存手法が失敗し、どう設計変更を行ったかを論理的に説明しているため、RAG 開発者にとって非常に参考になる知見です。
編集コメント
新卒エンジニアが直面した技術的ボトルネックを、理論的な分析と具体的なアーキテクチャ変更で解決したプロセスは、実務家にとって非常に示唆に富んでいます。特に「抽象度」と「詳細度」の情報を分離管理するアプローチは、大規模ドキュメント処理における普遍的な課題への有効解となり得ます。
こんにちは!Exa Enterprise AIのZHANG Zhanhangと申します。
私は機械学習エンジニアとして2024年4月に入社し、Exa Enterprise AIのAI戦略グループに配属されました。これから定期的にテックブログを発信していきますので、エンジニアとして挑戦したい方の参考になれば嬉しいです!
初回記事では、主に新卒ハッカソン研修の取り組みを振り返ります。
新卒研修の一環として、AI技術が社会でどう使えるのか、実際のアプリケーションまで作る3ヶ月のプロジェクトを行いました。
私たちは先輩エンジニアと「マルチモーダルRAG」に主題を絞り、4月中にユーザーニーズ・要件定義を検討し、5月から6月の2ヶ月間でアプリ開発・デプロイを行いました。
ビジネスメンバーと相談して、「プレゼンテーション理解を効率化するMultimodal RAG」をテーマに選び、アイデアシートを作成しました。
アイデアシート
現在、学術会議やビジネスカンファレンスでプレゼンテーションに使用するドキュメントやスライドの関連知識を検索する時間および読解時間が長引くことが大きな問題となっています。この課題に直面しているのは、学術や業界カンファレンスの参加者であり、研究者やビジネスマンを含みます。これらの参加者は、複雑なテーマやデータを素早く理解し、必要な情報を迅速に抽出する能力が求められています。効率的にスライドを理解することで、インプットの時間を短縮することをサポートするのが、この提案の目標です。
提案する解決策は、マルチモーダルRAGの活用です。マルチモーダルRAG(Retrieval-Augmented Generation)とは、テキストと画像の二つのデータモダリティを組み合わせて、情報検索と生成を統合する手法を指します。ユーザーのクエリに対してまず関連するテキストと画像を大規模なデータベースから検索し、その取得したマルチモーダル情報を基に応答を生成します。テキストと画像の相互関係を活用することで、単一のモダリティに依存する手法よりも高い情報精度と表現力を実現します。
普段使用しているマルチモーダルRAGの構築
具体的には、すべての論文の画像とテキストを認識可能なAIモデルを用いて、ドキュメントから特徴量を抽出し、データベースに格納します。ユーザーが質問を持った際には、ユーザーから画像を含めたドキュメントをアップロードし、その質問に基づいて、テキストと画像を同時に理解するモデルを用いて、特定のページを検索します。最後に、ユーザーの質問と検索結果を合わせて、RAGテンプレートを用いて質問用プロンプトを生成して、GPT-4 Visionを投げて回答を得ます。
このアプローチにより、複雑な情報を迅速に処理し、必要なデータに素早くアクセスできます。チャット形式でユーザーが直感的に操作可能なため、時間が限られている学術会議などの場で、スライドの疑問に即座に補足情報を得られます。これにより、情報の効率的な取得と深い理解が促進され、プレゼンテーションからの情報理解時間が大幅に短縮されます。したがって、参加者は年間数百時間の業務時間削減が可能となり、企業や研究機関はコストを削減し、生産性を向上させることができます。情報の理解度が向上することで、新しいアイデアや創造的なソリューションの開発が促進されます。さらに、この技術を活用することで、カンファレンスやセミナーの運営側は参加者の満足度を高め、イベントの成功を確実にすることが可能です。効率的な情報提供により参加者の理解と関与が深まり、イベント全体の魅力が向上します。
普段のマルチモーダルRAGでは、画像およびテキストのベクトルを混ぜて一つのデータベースに格納します。そして検索時には、アップロードされたテキストと画像に基づいて、その一つのデータベースとの類似度を計算します。実際に試してみると、関連するドキュメントの検索が難しいという問題がありました。Clipを使うと内容にかかわらず、テキスト同士や画像同士の類似度が高い。その結果、テキストと画像に対する質問には関連する画像またはテキストが見つからない、代わりに関連性のない論文のテキスト・画像の検索結果が出てきます。
検索が難しい例
例えば、ユーザーがテキストだけで「論文1についてを教えてください」で聞かれて検索したら、ランク1はもちろん論文1のテキストですが、二つ目は論文1の画像はずなのに、テキスト同士の類似度が高いので、論文2のテキストがランク2になりました。故に、一つのデータベースを使って課題を解決しにくいです。
そこで、新しいRAG構築と検索方法を提案しました。ベクトル化方法として、一つではなく、二つのデータベースを用いました。一つはChunkデータベースで、普段使用されるMultimodal RAGとほとんど同じで、文字ごとに格納し、画像は1枚ごとに格納します。もう一つのAbstractデータベースでは、論文からGPTによりアブストラクトを抽出し、Clipでベクトル化してアブストラクトデータベースに格納し、メタデータを用いてChunkデータベースと連携させました。
マルチモーダルRAGの構築
検索の際には、ユーザーからの質問をClipでベクトル化し、二つのデータベースをそれぞれ検索します。アブストラクトデータベースとの類似度計算の結果はabstract1, 2, 3…として、Chunkデータベースとの類似度計算の結果はテキストのChunkと画像で、各Chunkがどの論文から抽出されたものかというメタデータもわかります。最後に、Chunkのスコアと対応するアブストラクトを加えて最終スコアを計算します。最終スコアによって並び替え、K個のChunkをGPTに入力して回答を生成する手法で精度が上がりました。
アルゴリズムの設計が終わり、Chainlitを使ってExabase Studioでデプロイを行いました。
アプリ使用時のイメージ
実際の発表時には、論文のテキストと画像ではなく、プレゼンテーションはスライドまたは発表ポスターを使用するため、スライドの検索と応答を検証しました。例えば、特定のページがわからない場合、画像のスクリーンショットをアップロードし、RAGに質問の形で応答を得ることができます。本番の発表環境ではスライドを直接入手できない場合があり、スマホでスライドの写真を撮ってRAGに質問する可能性があるため、スマホで写真を撮る形も検証し、ポスターの写真を撮る形も検証しました。
今回のハッカソンでは、今後の展開について、論文・スライドで「Multi-modal RAG」を検証しましたが、応用場面を広げるために、他の画像ドキュメントを使用する場合、例えば会社の決算発表などでも利用できるようにしたいと思います。
この3ヶ月間の取り組みを振り返り、アイデアシートの作成からデプロイまで、一連のアプローチを経て、様々な技術を学びました。機械学習エンジニアとして「LLM」、「RAG」、「類似度検索」などのアルゴリズムはもとより、「Docker」、「Git」、「AWS」などのソフトウェア開発知識、そしてビジネス的な考え方・ユースケース分析の能力も身につけました。これからもより一層努力し、立派な社会人になるように頑張ります!
原文を表示
こんにちは!Exa Enterprise AIのZHANG Zhanhangと申します。
私は機械学習エンジニアとして2024年4月に入社し、Exa Enterprise AIのAI戦略グループに配属されました。これから定期的にテックブログを発信していきますので、エンジニアとして挑戦したい方の参考になれば嬉しいです!
初回記事では、主に新卒ハッカソン研修の取り組みを振り返ります。
新卒研修の一環として、AI技術が社会でどう使えるのか、実際のアプリケーションまで作る3ヶ月のプロジェクトを行いました。
私たちは先輩エンジニアと「マルチモーダルRAG」に主題を絞り、4月中にユーザーニーズ・要件定義を検討し、5月から6月の2ヶ月間でアプリ開発・デプロイを行いました。
ビジネスメンバーと相談して、「プレゼンテーション理解を効率化するMultimodal RAG」をテーマに選び、アイデアシートを作成しました。
アイデアシート
現在、学術会議やビジネスカンファレンスでプレゼンテーションに使用するドキュメントやスライドの関連知識を検索する時間および読解時間が長引くことが大きな問題となっています。この課題に直面しているのは、学術や業界カンファレンスの参加者であり、研究者やビジネスマンを含みます。これらの参加者は、複雑なテーマやデータを素早く理解し、必要な情報を迅速に抽出する能力が求められています。効率的にスライドを理解することで、インプットの時間を短縮することをサポートするのが、この提案の目標です。
提案する解決策は、マルチモーダルRAGの活用です。マルチモーダルRAG(Retrieval-Augmented Generation)とは、テキストと画像の二つのデータモダリティを組み合わせて、情報検索と生成を統合する手法を指します。ユーザーのクエリに対してまず関連するテキストと画像を大規模なデータベースから検索し、その取得したマルチモーダル情報を基に応答を生成します。テキストと画像の相互関係を活用することで、単一のモダリティに依存する手法よりも高い情報精度と表現力を実現します。
普段使用しているマルチモーダルRAGの構築
具体的には、すべての論文の画像とテキストを認識可能なAIモデルを用いて、ドキュメントから特徴量を抽出し、データベースに格納します。ユーザーが質問を持った際には、ユーザーから画像を含めたドキュメントをアップロードし、その質問に基づいて、テキストと画像を同時に理解するモデルを用いて、特定のページを検索します。最後に、ユーザーの質問と検索結果を合わせて、RAGテンプレートを用いて質問用プロンプトを生成して、GPT-4 Visionを投げて回答を得ます。
このアプローチにより、複雑な情報を迅速に処理し、必要なデータに素早くアクセスできます。チャット形式でユーザーが直感的に操作可能なため、時間が限られている学術会議などの場で、スライドの疑問に即座に補足情報を得られます。これにより、情報の効率的な取得と深い理解が促進され、プレゼンテーションからの情報理解時間が大幅に短縮されます。したがって、参加者は年間数百時間の業務時間削減が可能となり、企業や研究機関はコストを削減し、生産性を向上させることができます。情報の理解度が向上することで、新しいアイデアや創造的なソリューションの開発が促進されます。さらに、この技術を活用することで、カンファレンスやセミナーの運営側は参加者の満足度を高め、イベントの成功を確実にすることが可能です。効率的な情報提供により参加者の理解と関与が深まり、イベント全体の魅力が向上します。
普段のマルチモーダルRAGでは、画像およびテキストのベクトルを混ぜて一つのデータベースに格納します。そして検索時には、アップロードされたテキストと画像に基づいて、その一つのデータベースとの類似度を計算します。実際に試してみると、関連するドキュメントの検索が難しいという問題がありました。Clipを使うと内容にかかわらず、テキスト同士や画像同士の類似度が高い。その結果、テキストと画像に対する質問には関連する画像またはテキストが見つからない、代わりに関連性のない論文のテキスト・画像の検索結果が出てきます。
検索が難しい例
例えば、ユーザーがテキストだけで「論文1についてを教えてください」で聞かれて検索したら、ランク1はもちろん論文1のテキストですが、二つ目は論文1の画像はずなのに、テキスト同士の類似度が高いので、論文2のテキストがランク2になりました。故に、一つのデータベースを使って課題を解決しにくいです。
そこで、新しいRAG構築と検索方法を提案しました。ベクトル化方法として、一つではなく、二つのデータベースを用いました。一つはChunkデータベースで、普段使用されるMultimodal RAGとほとんど同じで、文字ごとに格納し、画像は1枚ごとに格納します。もう一つのAbstractデータベースでは、論文からGPTによりアブストラクトを抽出し、Clipでベクトル化してアブストラクトデータベースに格納し、メタデータを用いてChunkデータベースと連携させました。
マルチモーダルRAGの構築
検索の際には、ユーザーからの質問をClipでベクトル化し、二つのデータベースをそれぞれ検索します。アブストラクトデータベースとの類似度計算の結果はabstract1, 2, 3…として、Chunkデータベースとの類似度計算の結果はテキストのChunkと画像で、各Chunkがどの論文から抽出されたものかというメタデータもわかります。最後に、Chunkのスコアと対応するアブストラクトを加えて最終スコアを計算します。最終スコアによって並び替え、K個のChunkをGPTに入力して回答を生成する手法で精度が上がりました。
アルゴリズムの設計が終わり、Chainlitを使ってExabase Studioでデプロイを行いました。
アプリ使用時のイメージ
実際の発表時には、論文のテキストと画像ではなく、プレゼンテーションはスライドまたは発表ポスターを使用するため、スライドの検索と応答を検証しました。例えば、特定のページがわからない場合、画像のスクリーンショットをアップロードし、RAGに質問の形で応答を得ることができます。本番の発表環境ではスライドを直接入手できない場合があり、スマホでスライドの写真を撮ってRAGに質問する可能性があるため、スマホで写真を撮る形も検証し、ポスターの写真を撮る形も検証しました。
今回のハッカソンでは、今後の展開について、論文・スライドで「Multi-modal RAG」を検証しましたが、応用場面を広げるために、他の画像ドキュメントを使用する場合、例えば会社の決算発表などでも利用できるようにしたいと思います。
この3ヶ月間の取り組みを振り返り、アイデアシートの作成からデプロイまで、一連のアプローチを経て、様々な技術を学びました。機械学習エンジニアとして「LLM」、「RAG」、「類似度検索」などのアルゴリズムはもとより、「Docker」、「Git」、「AWS」などのソフトウェア開発知識、そしてビジネス的な考え方・ユースケース分析の能力も身につけました。これからもより一層努力し、立派な社会人になるように頑張ります!
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み