<-- mermaid -->

インターンでRAGシステムの検索エンジンの改善をおこないました

UB Researchチームで2週間の短期インターンをしている梶川です。

現在、UB ResearchではRAGシステム構築に向けた研究を行っており、社内のさまざまなデータを正確に拾い上げるための検索エンジンの開発と評価を行っています。

今回、その検索エンジンに代わるモデルを用いて、実際の検索テキストで検索を実施した結果を報告します。

概要

近年、LLMを用いた文書生成が流行しており、その中でも外部情報を検索し、LLMに追加して生成させるRAGという技術が活用されています。RAGによって、LLMが知らない情報に対して正確な応答を返すことができ、UB Researchでもニュース記事や有価証券報告書などの情報に対してRAGを適用することを考えています。既存の検索エンジンには、国内データで学習されたBERTベースのモデルを用いていますが、今回、最新のモデルであるBGE-M3を用いて、検索を実施しました。

引用元:日本総研による調査レポート

ベクトル検索

ベクトル検索は、テキストをベクトル空間上に埋め込み、検索クエリとのベクトルの距離を計測することで、関連するテキストを抽出する技術のことです。LLMによるRAGでは、LLMの知らない情報を外部から抽出する際にベクトル検索が用いられます。

今回は、ベクトル検索を改善を行うために、最新のモデルであるBGE-M3を用いて検証します。

BGE-M3は、多言語埋め込みモデルの一種で、1テキストに対して3種類の埋め込みを生成することができます。日本語の検索タスクに対して、高い性能が報告されており、性能改善が期待できます。また、扱える最大トークン数が8192トークンと比較的長い文章を入力することができることも魅力となっています。

実験設定

Faiss

ベクトル検索ライブラリとしてFaissを用いました。Faissは、Facebookが開発した近傍探索ライブラリです。データを識別するためにインデックスが必要ですが、一般的に利用されるIndexFlatL2を用いました。

BGE-M3は3種類の埋め込みを生成可能ですが、今回は最も一般的であるDenseベクトルを用いて実験を行いました。

検索テキストと質問文

SPEEDAの業界レポートとトレンドレポート、有価証券報告書、ニュース記事の4つの経済データを採用しました。

検索クエリとなる質問文には以下の6つを採用しました。

質問文を入力し、その検索結果50件に対して特定のキーワードが含まれているかなどで評価を行いました。

Q1. 一般的にコンビニ業界では、どのようなサプライチェーンの特徴が挙げられますか。特に関わりの強い企業があれば、具体名を教えてください。
Q2. ユーザベースが非上場化を行った理由はどういったものでしょうか。
Q3. 生成AIモデルの独自の開発を公表している日本企業としてどのような企業があるか具体的に教えてください。
Q4. ベネッセホールディングスの非上場化を目指した背景は?
Q5. ダイキンが新興国で好調だと伺いましたが主要な成功要因を教えて下さい。
Q6. ソニーグループのPlaystation 5の販売が不調な理由は?

結果

既存手法であるBERTベースのモデルとBGE-M3との検索結果に対して、特定のキーワードが含まれているかどうかを集計した結果です(表1)。既存手法と比べて特定のキーワードを検索する件数が増加していることがわかります。

表1:キーワードベースの定量的評価

ユーザベース(Q2) ベネッセ(Q4) ダイキン(Q5) ソニー(Q6)
既存手法 1/50 0/50 0/50 18/50
BGE-M3 1/50 2/50 6/50 43/50

また、上記のキーワードベースの定量的評価とは別に、検索結果のテキストに対する人手による定性的評価を行いました。

ベネッセに対するQ4の検索結果では、既存手法と比べて検索結果の質が良く、非上場化に関するテキストを抽出しており、内容的にも良い検索結果となりました。

一方、ユーザベースに対するQ2の検索結果では、「東芝」などの別の企業に関するテキストを検索しており、既存手法と比べて質が悪いことを確認しました。

これは、既存手法の検索エンジンでは「ユーザベース」という企業に関する知識を保持している一方で、BGE-M3では取得できていないことが原因であると考えられます。別の仮説として、多言語埋め込みモデルということもあり、日本語のデータセット量が少ないことも原因と考えられます。

展望

今回の結果から、BGE-M3によるベクトル検索は既存手法と比べて、全体的に検索結果の質はよいが、特定のキーワードに対しては必ずしも改善するわけではありませんでした。ただし、検索結果の良いものは、生成文の質も良いものが期待できるため、改善の余地はあります。

今後は、日本語のデータセットでモデルを追加学習することで日本語や日本企業の知識を保持したモデルを構築することでベクトル検索の質が改善することが期待されます。

また、今回はRAGシステムにおけるベクトル検索部分に焦点を当てましたが、実際に検索したテキストでLLMに生成させてみて、検索の質の向上による生成文の改善を確認することが期待されます。

試行錯誤したこと

実験に用いたBGE-M3ですが、有価証券報告書やニュース記事など、文長が長いテキストに対して埋め込みを生成する際にメモリ不足になることが問題となりました。

なので、あらかじめ5000文字以上のテキストに対して句点で分割することで対処しました。

また、検索テキストが実データであることもあり、データ整備が不十分だったため、思わぬエラーが頻繁に起きました。

このように、日々の研究生活では味わえないような事例に対処する経験ができてよかったです。

おわりに

UB Researchでは経済データを用いたLLMの研究開発に取り組んでいます。ご興味があれば是非ご覧ください。

tech.uzabase.com

tech.uzabase.com

Page top