Vertex AI Searchと外部ツール(Elasticsearch/Solr)による「ベクトルレスRAG」の深化:技法・最適化・限界
platypus2000jp
生成AIの進化に伴い、RAG(検索拡張生成)は企業内データの活用において不可欠な手法となりました。現在、主流は「ベクトル検索」ですが、特定の専門用語や製品名、正確なキーワードマッチングが求められるシーンでは、従来の検索技術を活かした**「ベクトルレスRAG(Lexical RAG)」**が再評価されています。
本記事では、Google CloudのVertex AI Searchを軸に、ElasticsearchやApache Solrを統合してベクトルレスRAGを構築する具体的な技法、特に日本語環境における最適化(Kuromoji/Sudachi/UniDic)、そしてその限界までを詳細に解説します。
1. なぜ今、ベクトルレスRAGなのか?
ベクトル検索(Dense Retrieval)は文脈の理解に長けていますが、「型番」「人名」「略称」などの完全一致が重要な検索では、ベクトル化の過程で情報が抽象化され、精度が落ちる場合があります。
ベクトルレスRAG(主にBM25アルゴリズムを用いた全文検索)を採用する主なメリットは以下の通りです。
- 正確なキーワード一致: 専門用語や製品IDに対する高い再現率。
- 説明可能性: なぜその文書が取得されたのかを単語の頻度(TF-IDF/BM25)で追跡可能。
- 低コスト・低遅延: Embeddingモデルの呼び出しやベクトルDBの運用コストを抑制。
- 既存資産の活用: 既に社内で運用しているElasticsearchやSolrをそのままGrounding(根拠付け)に利用可能。
2. Vertex AI SearchとElasticsearchのネイティブ統合
Vertex AI Searchは、Elasticsearchを「ネイティブ・グラウンディング・エンジン」として公式にサポートしています。
実装技法とアーキテクチャ
Elasticsearchを外部レトリバー(検索器)として使用し、GeminiなどのLLMにコンテキストを渡す構成です。
- BM25による純粋キーワード検索: Elasticsearchの標準機能を用いて、テキストベースのインデックス(Inverted Index)から関連箇所を抽出。
- Search Templateの活用: Mustacheベースのクエリテンプレートを定義することで、Vertex AI側からはパラメータ(クエリやヒット数)を送るだけで複雑な検索ロジックを実行可能。
- Sparse-Based Vectorless (ELSER): Elastic独自のSparse Encoderモデルを使用。Denseベクトル(密ベクトル)ほど計算資源を必要とせず、キーワードの重み付けを強化した「意味的なキーワード検索」が可能です。
ハイブリッド検索への拡張
純粋なベクトルレスで限界を感じた場合、Elasticsearch内でBM25とベクトル検索(kNN)を組み合わせ、RRF (Reciprocal Rank Fusion) でランキングを統合する「ハイブリッドRAG」へシームレスに移行できる点もElasticsearch統合の強みです。
