Why Your Agent Still Needs Retrieval - Carly Richmond, Elastic
21分 38秒
AIエージェントの賢さを引き出す!RetrievalとRAGの進化とElasticsearch活用術
この記事は動画の内容を元にAIが生成したものです。正確な情報は元の動画をご確認ください。
ポイント
- •AIエージェントの性能向上を目指す方向けに、LLMの不確かな回答を補うRAGの重要性と概念を解説します。
- •ベクトル検索と語彙検索の仕組みを理解し、Elasticsearchを活用したRAGエージェント構築の基礎が学べます。
- •適切な情報検索によるコンテキストエンジニアリングで、より賢く堅牢なAIエージェントを実現する知見が得られます。
皆様、こんにちは。本日は、AIエージェントにおける情報検索(Retrieval)についてお話しいたします。特に、Retrieval Augmented Generation(RAG)の進化と、その実装における様々な選択肢、そしてElasticsearchの活用方法に焦点を当てて解説いたします。
導入:AIエージェントにおけるコンテキストの重要性
AIの世界では常に新しいバズワードが生まれていますが、その中でも「コンテキストエンジニアリング」は、エージェントシステムを構築する上で今なお非常に重要かつ有用な概念です。コンテキストエンジニアリングとは、AIエージェントに正確な情報が渡されるよう、コンテキストウィンドウを管理するための一連の機能と考えることができます。これにより、フレームワークや技術に関わらず、構築するAIエージェントに対して適切な情報が大規模言語モデル(LLM)に提供されるようにします。
単純なチャットボットであれ、データを使用して意思決定を行う複雑なエージェントであれ、正しい情報へのアクセスは不可欠です。本記事では、Elasticsearchクラスターから関連データを引き出し、それを使って質問に答えるシンプルなRAGエージェントを例に挙げながら、これらの概念を深掘りしていきます。
LLMが「不確かな回答」を生成する理由
LLMに質問した際に、曖昧な、あるいは正しくないと感じる回答が返ってきた経験はございませんか?このような「不確かな回答」は、いくつかの原因で発生します。
- 知識のカットオフ日: モデルが特定の知識カットオフ日までに訓練されている場合、それ以降の情報は持っていません。例えば、2023年11月以前のデータで訓練されたモデルに、2024年のスポーツの試合結果を尋ねても、過去のデータに基づいて誤った回答をする可能性があります。
- オーバーフィッティングとアンダーフィッティング: 特に小規模なモデルを使用する際に、訓練データに過度に適合したり、不足したりすることがあります。
- データにおけるバイアス: 訓練データに含まれるバイアスが、LLMの出力に反映されることがあります。金融エージェントのような重要な意思決定を行うシステムでこれが起こると、大きな問題となり得ます。
- 言語の曖昧さ: 自然言語は元々曖昧さを含んでおり、特に英語のような言語では、文脈によって意味が変わることが多々あります。
- 壊滅的忘却(Catastrophic Forgetting): モデルが新しい情報を学習する際に、以前学習した知識を忘れてしまう現象です。
さらに、LLMの評価方法自体も問題を引き起こす可能性があります。研究によると、現在の評価手順は、不確実性を認めるよりも推測を報酬として与える傾向があるため、モデルが誤った方向にインセンティブ付けされている側面があるのです。
Retrievalの主要メカニズム:RAG(Retrieval Augmented Generation)
AIシステムで情報を検索する主要なメカニズムの一つがRAGです。RAGは、外部の情報源から関連するドキュメントを検索し、その情報をLLMへのプロンプトに追加することで、LLMの生成能力を強化する手法です。
従来のRAGは、固定されたパイプラインとして機能し、一度だけ情報を引き出します。エージェントツールのようにLLMが状況に応じて検索の必要性を判断するのではなく、追跡情報が必要かどうかにかかわらず、常に一度だけ呼び出されます。
ベクトル検索と語彙検索(BM25)
情報を検索する際には、主に二つの異なるアプローチがあります。
ベクトル検索(Semantic Search)
ベクトル検索は、セマンティック検索と呼ばれることもあり、テキストを数値の埋め込み(Embedding)に変換し、これらの埋め込み間の距離(コサイン類似度など)に基づいて意味的に類似した結果をクラスタリングします。例えば、「ハン・ソロ」を検索した場合、ベクトル距離によって「ルーク」や「レイア」と類似していると判断され、全く異なる意味を持つ「ダース・ベイダー」とは反対のベクトル空間に位置付けられます。
語彙検索(Lexical Retrieval)
「語彙検索はもう必要ない」という声も聞かれますが、これは特定の場面、特に会社名などの「正確な一致」を求める場合には依然として非常に有効です。語彙検索は伝統的に、転置インデックス(Inverted Index)を利用して動作します。関連するトークン(単語)を抽出し、それが存在するドキュメントへの参照と共に保存します。そして、TF-IDFやBM25などのアルゴリズムを用いて、特定のドキュメントがどの程度関連しているかを計算し、関連性スコアを算出します。
これら二つの検索手法は、構築するAIエージェント内で両方とも活用することができます。
ElasticsearchとMashaを活用したRAGエージェント
ここでは、MashaというエージェントフレームワークとElasticsearchを組み合わせたRAGエージェントの概念的な実装について触れていきます。
Mashaエコシステムに貢献されているElasticsearch Vector Storeを使用することで、エージェント内のElasticsearchとのすべてのやり取りを処理できます。エージェントが何らかの操作を行うたびに、このストアが呼び出されます。
このストアは、以下のような様々な機能を提供します。
- インデックス作成: 埋め込みモデルの次元を指定することで、Elasticsearch内にインデックスを作成できます。これにより、ストアの起動と破棄を管理できます。
- 埋め込みの生成: OpenAIの
text-embedding-3-smallのような埋め込みモデルを利用して、テキストの埋め込みを生成します。
このように、Elasticsearchをバックエンドとして活用することで、RAGエージェントは効率的かつ柔軟に外部データを検索し、LLMに適切なコンテキストを提供することが可能になります。
V-rankingと関連性スコアリング
さらに高度なRAGシステムでは、検索結果の関連性をより正確に評価するために、V-rankingやより洗練された関連性スコアリング手法が用いられることがあります。これにより、単に情報を取得するだけでなく、取得した情報の中から最も有用なものを厳選し、LLMに渡すことで、回答の質を一層向上させることができます。
まとめ
本記事では、AIエージェントの性能を向上させる上で不可欠なRetrievalの概念と、RAGの進化について解説しました。LLMの課題に対処し、より賢明な回答を生成するためには、コンテキストエンジニアリングが重要であり、その中核をなすのがRAGです。
ベクトル検索と語彙検索(BM25)という異なるアプローチを理解し、ElasticsearchのようなツールとMashaのようなエージェントフレームワークを組み合わせることで、堅牢なRAGエージェントを構築できることをご紹介しました。
今後も進化を続けるAIエージェントの世界において、効果的な情報検索の技術は、その可能性を最大限に引き出すための鍵となるでしょう。
参考動画: https://www.youtube.com/watch?v=CHlQMPtln38