AI News HubLIVE
サイト内リライト2 分で読了

RAGにおけるハイブリッドセマンティック・レキシカル検索の実装

本記事では、BM25によるレキシカル検索とセマンティック検索を組み合わせ、Reciprocal Rank Fusion(RRF)でランキングを融合するハイブリッド検索戦略をRAGシステムに実装する方法を説明します。Pythonコードを用いたステップバイステップの実装、データセットの読み込み、BM25およびセマンティック検索関数の作成、ハイブリッド検索の統合を紹介します。小規模データセットでの実験では、単独の手法よりも優れた結果が得られました。

ソースMachine Learning Mastery著者: Iván Palomares Carrascosa

最新のRAG(Retrieval-Augmented Generation)システムをプロトタイプから本番環境に対応したソリューションへと移行する際、ハイブリッド検索戦略の実装は重要なステップです。セマンティック検索(高密度ベクトルや埋め込みに基づく)は意味、類義語、文脈の理解に優れていますが、キーワードベースのレキシカル検索(BM25など)はセマンティック検索が見逃す小さな盲点をカバーします。両者の長所を組み合わせることで、RAGシステムの検索機構をさらに強化できます。

本記事では、穏やかなコーディング例を通じてハイブリッド検索の実装方法を段階的に説明します。まず、必要なPythonライブラリ(rank_bm25、sentence-transformers、requests)をインストールします。次に、アジア諸国に関する9つのテキストドキュメントからなる小さなデータセットを読み込みます。

実装は3段階に分かれます。第1段階:レキシカル検索(BM25)。rank_bm25ライブラリを使用して各ドキュメントをトークン化し、クエリとのレキシカル関連性スコアを計算して上位のドキュメントを返します。

第2段階:セマンティック検索。sentence-transformersの'all-MiniLM-L6-v2'モデルを使用してドキュメントとクエリを埋め込みベクトルに変換し、コサイン類似度で関連性を計算します。

第3段階:融合。Reciprocal Rank Fusion(RRF)を使用して2つのランキングを統合します。RRFは各ドキュメントにランクに基づくスコア(1/(k+rank))を割り当て、合計スコアの高い順に並べ替えます。ここでは標準的な定数k=60を使用します。

最後に、「どの国が田んぼや水田で最も有名ですか?」というクエリでテストします。セマンティック検索はベトナム、韓国、タイを返し、BM25はインドネシア、日本、フィリピンを返し、ハイブリッド検索はベトナム、タイ、インドネシアを返しました。9つのドキュメントしかない小規模データセットを考慮すれば、妥当な結果です。

本記事は、本番環境でRAGシステムをスケーリングする際にセマンティック検索のみに依存しないことの重要性を強調しています。ハイブリッド検索は、より包括的な検索結果を提供し、システムの堅牢性と信頼性を確保します。さまざまなクエリで試すことで、セマンティック理解とキーワードマッチングのバランスの良さを実感できるでしょう。