💨

RAGはベクトル検索をしなくてもいい【LLM活用】

に公開

LLMを実用的にしてくれるRAG

RAG(Retrieval Augmented Generation)は、大規模言語モデル(LLM)が外部の知識源から情報を検索し、その情報に基づいて応答を生成する技術です。
これにより、LLMは自身の学習データにない最新かつ正確な情報を提供できるようになります。

RAGを活用することで、企業は社内マニュアル、過去の議事録、顧客データといった固有の知識をLLMに参照させることができます。
これにより、一般的な情報しか知らないLLMが、特定の業務プロセスや顧客対応に関する質問にも的確に回答できるようになります。

RAGの実装方法で調べると必ず出てくるベクトル埋め込み

実際、Googleで「RAG実装方法」と検索すると、上位に表示される記事の多くが、文書のベクトル埋め込みとベクトルデータベースを用いた検索手法に焦点を当てています。

例えば、多くの技術ブログやチュートリアルでは、OpenAIの埋め込みモデルやFAISS、ChromaDBといったツールを使ったベクトル検索の実装手順が詳しく解説されています。

RAGで必ずベクトル埋め込みを利用しないといけないわけではない

RAGの本来の定義は、情報を検索(Retrieval)し、それを用いて生成(Generation)するというプロセスであり、検索手法を特定するものではありません。
したがって、情報の「検索」という目的を達成できれば、必ずしも複雑なベクトル埋め込み技術を採用する必要はないのです。

RAGにおける「検索」のアプローチは、キーワード検索、セマンティック検索、ハイブリッド検索など、システム要件やデータ特性に応じて自由に選択できます。

特に、初めてRAGを実装する場合、ベクトル埋め込みはモデルの選定、適切なチャンク分割、ベクトルデータベースの構築と管理など、考慮すべき要素が多く技術的なハードルが高くなりがちです。

専門的な知識やインフラ構築の手間を考えると、初期段階ではよりシンプルな方法を検討する方が効率的な場合もあります。

キーワード検索も優秀

BM25のような古典的なキーワード検索アルゴリズムは、その仕組みがシンプルでありながら、多くの検索タスクで十分に良い結果を出すことが知られています。

この手法は、文書とクエリに含まれる単語の出現頻度や逆文書頻度に基づいて関連度を計算するため、直感的で理解しやすい特徴があります。

特に固有名詞や専門用語を含む情報検索においては、単語の意味の類似性よりも単語そのものの一致を重視するキーワード検索が、ベクトル埋め込みよりも優れた精度を発揮する場合があります。
ベクトル埋め込みは単語の意味的な類似度を捉える一方で、特定の固有名詞の一致には必ずしも強くないためです。

キーワード検索とベクトル検索のそれぞれの長所を組み合わせた「ハイブリッド検索」というものも存在します。ハイブリッド検索は、両手法を補完し合うことで、より網羅的かつ高精度な検索結果を目指すアプローチです。

例えば、下記の記事ではハイブリッド検索がいい結果を出したとの報告があります。
https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/azure-ai-search-outperforming-vector-search-with-hybrid-retrieval-and-reranking/3929167

簡単なカスタムLLM、社内資料の検索から実装してみては?

ベクトル埋め込みを用いたRAGの実装は強力ですが、前述の通り、初期段階での技術的・運用的なハードルが存在します。
そのため、まずはBM25などの既存のキーワード検索システムを活用して、社内資料から情報を取得する簡易的なRAGシステムを構築してみるのもいかがでしょうか。

簡単な検索方法から始めることで、RAGの基本的な動作原理を理解し、実際にLLMが社内知識を活用する効果を実感できます!

Discussion