エクサウィザーズ Engineer Blog

株式会社エクサウィザーズのエンジニアチームブログ

新卒エンジニアの成長ストーリー:マルチモーダル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の構築

普段のマルチモーダル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でデプロイを行いました。

アプリ使用時のイメージ
今回使用したデータは日本言語学会2024の論文の中で画像が最も多い30部で、その中の本文をデータベースに格納し、スライドは検証で使用しました。

実際の発表時には、論文のテキストと画像ではなく、プレゼンテーションはスライドまたは発表ポスターを使用するため、スライドの検索と応答を検証しました。例えば、特定のページがわからない場合、画像のスクリーンショットをアップロードし、RAGに質問の形で応答を得ることができます。本番の発表環境ではスライドを直接入手できない場合があり、スマホでスライドの写真を撮ってRAGに質問する可能性があるため、スマホで写真を撮る形も検証し、ポスターの写真を撮る形も検証しました。

今回のハッカソンでは、今後の展開について、論文・スライドで「Multi-modal RAG」を検証しましたが、応用場面を広げるために、他の画像ドキュメントを使用する場合、例えば会社の決算発表などでも利用できるようにしたいと思います。

おわりに

この3ヶ月間の取り組みを振り返り、アイデアシートの作成からデプロイまで、一連のアプローチを経て、様々な技術を学びました。機械学習エンジニアとして「LLM」、「RAG」、「類似度検索」などのアルゴリズムはもとより、「Docker」、「Git」、「AWS」などのソフトウェア開発知識、そしてビジネス的な考え方・ユースケース分析の能力も身につけました。これからもより一層努力し、立派な社会人になるように頑張ります!