ベクトル検索とは、テキストを数値ベクトル(埋め込み)に変換し、キーワードの一致ではなく意味の近さで情報を探す検索手法です。表記が違っても意図が近い情報を拾えるため、RAGの検索部分を支える中核技術になっています。

RAGの回答精度は、生成モデルの性能より先に検索で正しい情報を取れているかで決まります。精度向上の出発点がベクトル検索の理解である理由はここにあります。
本記事では仕組みに加えて、キーワード検索・ハイブリッド検索との違い、リランカーの役割、実務での検索方式の選び方まで整理します。
YouTube版はこちらをご覧ください。チャンネル登録も合わせてよろしくお願いします。
前提となる「RAG」に関しては、下記の記事を参照ください。
どのようにRAGの精度を向上させるのか?

そもそもRAGの精度をどのように向上させるのか?という点を解説していきます。
左の図がRAGの構成になります。
RAGでは、事前にベクトルデータベースに社内情報などの固有情報を参照させて、ユーザーの検索に対して、固有情報を参照させて回答を生成する手法です。
このようなRAGの精度向上には大別して4つ方法が有効です。
- LLMの精度向上
LLM自体の精度を向上させて、RAGの性能を向上させる手法です - プロンプトエンジニアリング
LLMへの指示、プロンプトを調整して、RAGの性能を向上させる方法です - 参照データの整備・加工
参照させるデータのクレンジング、データの参照、チャンクのさせ方など参照データを綺麗にして、RAGの性能を向上させる方法です - 検索アルゴリズムの高度化
検索手法を最適化、リランカーの導入などにより、情報への検索性能を上げて、RAGの性能を向上させる方法です
今回は、この4つの中でも最後の検索アルゴリズムの高度化に焦点を当てた内容になっています。
4つのうちどれを引けばよいか分からない場合は、原因の切り分けが先になります。検索と生成のどちらが失敗しているかを分ける手順はRAGの精度が上がらない原因は?検索・データ・生成で切り分けるで解説しています。
ベクトル検索とはなにか?

ここからベクトル検索の解説に移っていきます。
ベクトル検索は画像やテキストを数値化し、類似度を算出して情報の関連度を検索する手法です。
ベクトル検索では単語の埋め込み(embeddding)をまずは行います。
単語の埋め込みとは、単語を数値化して、計算できる形に変換します。この数値化するという処理をベクトル化と呼び、数値化された情報をベクトルと呼びます。
このように数値化することで、計算が可能となり、各ベクトルの類似度が計算できるようになります。
代表例がコサイン類似度と呼ばれる指標です。イメージでは単語ごとの角度のようなイメージになります。(正確には、多次元空間になるので、正確な表現ではありません)
一番のメリットは単語や文章を数値化することで、単語・文章ごとの類似度が計算できることです。
単語・文章の類似度が計算できれば、検索の際に、関連性の高い情報を抽出することができ、有能な検索アルゴリズムを構築することができます。
このように、ベクトル検索は、関連性の高い情報を検索するために有能な手法として、レコメンドシステムなどでも用いられる自然言語処理の手法です。
なぜベクトル検索がRAGに重要なのか?

では、なぜベクトル検索がRAGに重要なのか?という点について解説していきます。
端的に言うと、RAGではLLMにいかに適切な情報を参照させるかが重要であるからです。
検索効率がRAGの回答精度に直結するため、検索性能が重要となってきます。
そもそもRAGを構築するメリットとしては、LLMが知らない固有の情報を入力して、固有情報を踏まえた回答を生成させることです。
そのため、正しく固有情報を検索して、情報を取得することがなによりも重要になります。
LLMに正しい情報を参照させることができなければ、いかにLLMが性能が高くても知らないものは答えることができません。
だからこそ、ユーザーの質問に対して、関連性が高い情報を取得することがRAGの性能に直結します。
事前に固有情報を格納したベクトルデータベースからいかに効率よく、情報を引っ張ってくるか?という点で検索アルゴリズムが重要になります。
このような理由から、ベクトル検索がRAGに重要な要素になってきます。
ベクトル検索の種類

最後に、ベクトル検索の種類についても簡単に解説していきます。
一部、ベクトル検索以外の検索アルゴリズムも含んでいますが、RAGで活用される検索アルゴリズムはいくつかあります。
- キーワード検索
文字列の一致やパターンマッチングで検索する手法 - ベクトル検索
ベクトル毎の類似度を計算して、文書間の類似度を計算して検索する手法 - ハイブリッド検索
「キーワード検索」と「ベクトル検索」を組み合わせた検索手法 - セマンティック検索
「キーワード検索」の結果を再ランク付けをして、検索性能を高める手法 - ハイブリッド検索+セマンティックランク付け
「ハイブリッド検索」の結果に対して、再ランク付けをして、検索性能を高める手法
と、いうのが、よく目にする手法です。
基本となる手法は「キーワード検索」と「ベクトル検索」であり、これらを上手く組み合わせて検索性能の向上を図ることが多いです。
また、リランカーと呼ばれる「再ランク付け」をすることで、検索性能を高める手法もあります。
これは、一度「キーワード検索」、「ベクトル検索」、「ハイブリッド検索」を行った上で、上位○○件の情報に限定したものに対して、再度類似度を計算して、関連性を再ランク付けする手法です。
今回は簡易的な説明にとどめますが、リランカーにより、「再ランク付け」を行い、検索性能を向上させるやり方も高級な検索アルゴリズムとして存在します。
このように、複数の検索アルゴリズムがありますが、各検索アルゴリズムごとに検索性能と計算コストのトレードオフが発生します。
一般的には検索性能が高いほど、計算コストがかかります。
性能はよいが、応答性が悪くなったり、費用がかさむなどといったことが起きます。
そのため、どのような場合でも検索性能だけを追い求めていればいい、という訳でなく、それぞれの利用用途や検索対象などにより最適な選択をする必要があるというのが、難しいポイントです。
RAG構成でも、参照する情報が少なくて、LLMの生成能力に期待をするような使い方であれば、検索アルゴリズムは簡易的なもので問題ありません。
一方で、大量のドキュメントを参照させて、検索システムとしてLLMを使いたいという場合は、検索アルゴリズムにこだわる必要があります。
このように、利用用途に応じて、最適な選択をすることが求められ、企業で活用する場合は社内のコミュニケーションなどが煩雑化し、難しくなるシーンも多々あります。
生成AIの活用を推進していくためには、データサイエンティストとして、幅広い知識を持った上で、適切な判断を仰ぐ能力も重要になってきます。
検索アルゴリズムの組み合わせを深掘りするなら
ベクトル検索とキーワード検索をどう併用するかは、RAGの構成そのものの設計に直結します。手法どうしの組み合わせと、参照データ側の整備については別記事で整理しています。
まとめ
と、いうところで、今回はベクトル検索について解説していきました。
- ベクトル検索は単語・文書を数値化して、関連性を検索するアルゴリズム
- RAGの精度向上では参照情報の検索が重要で、検索性能がRAGの精度に直結する
- 検索アルゴリズムは複数あり、それぞれで検索性能と計算コストでトレードオフが発生するため、用途に応じて最適な選択が必要
と、いうのが今回のまとめになります。
生成AIのスキルは今後のデータサイエンティストのキャリア構築には非常に重要なスキルになってきます。
今後も生成AIの企業活用というテーマで発信していこうと思います。
PR
生成AIのスキルを、実務で通用する形にする
筆者は元データサイエンティストで、現在は30名規模の非テック企業でCTO兼CAIOを務めています。採用側として100人以上を面接してきた経験では、生成AI領域は「触ったことはある」で止まっている方が多く、なぜその構成にしたのかを説明できる人はまだ多くありません。学び方を体系から見直したい場合は、無料の説明会で講座の中身と自分の現在地を確認するところから始められます。
また、機械学習・データサイエンス領域の案件がどんな条件で出ているかを見ておくと、自分のスキルが市場でどう評価されるかを測れます。転職の予定がなくても、相場を把握しておく価値はあります。
今回は以上です。ありがとうございました。


















