+ 作るログイン
図を読み込んでいます…
1 / 15
RAG のすべて ― 基礎から現在の形、そして難しさまで / 全15章

RAG 05:ベクトル検索 ― 何百万の点から近い点を速く探す

発行
アニメモ公式
版
第1版
改訂
コマ
全15

埋め込んだ資料の点の中から、質問に近い点を速く見つけるベクトル検索を説明します。総当たりと近似最近傍探索(ANN)、HNSW の「何階もの道」と IVF の「区画」、正確さと速さのつまみ、top-k、付箋(メタデータ)での絞り込みの先と後、pgvector の例、置き場所の選び方と更新・削除まで。

資料が100万チャンクになったら、どう探す?

この章は、RAG の流れ(質問 → 探す → 集める → 読ませる → 答える)の「探す」の中身、ベクトル検索の話です。

第4章で、文章を「意味の地図」の上の点(ベクトル)にする方法を見ました。資料のチャンクも、質問も、同じ地図の点になります。あとは「質問の点に近い資料の点を探す」だけです。

資料が数百件なら、何も考えずに全部と比べれば済みます。でも、会社の資料を全部チャンクに切ると、10万、100万と簡単に増えます。1つの点は 1000 個くらいの数字の並びなので、100万個と比べると、掛け算と足し算を10億回ほどします。

1回の質問ならまだ耐えられるかもしれません。でも、社員が同時に何人も質問し、しかも第7章や第11章で見るように1回の回答の中で何度も検索することもあります。全部と比べる方法は、規模が大きくなると間に合いません。

この章では、何百万もの点の中から、近い点を速く、ほぼ正しく見つける仕組みを見ていきます。そのための道具がベクトルデータベースと、その中の索引(インデックス)です。

※この本は 2026年9月時点の情報をもとにしています。製品の名前や機能、数字は変わることがあります。

  • RAG のすべて 05 ― ベクトル検索
  • 1 / 15
  • 資料が100万チャンクになったら、どう探す?
  • 近い資料は?
  • 集めた資料
  • 質問
  • 検索
  • LLM
  • 答え
  • 資料庫
  • 第4章:質問も資料も「意味の地図」の点になった。あとは質問に近い点を探すだけ
  • でも点が100万個あると、全部と比べるのは遅い。ここがこの章の話
  • 質問のたびに100万回の比較は遅すぎる。速く、ほぼ正しく探す仕組みが要る。

ベクトルデータベース=点をしまって、近い点を速く出す棚

ベクトルデータベースは、ベクトルをしまっておき、「この点に近いものを k 個ください」という問い合わせに速く答えるためのデータベースです(k は取り出したい件数。k=5 なら近い順に上位5件)。

しまうのは、ベクトルだけではありません。図のように、1つのチャンクについて次のものを一緒に置きます。

しまうもの何のため
idどのチャンクか。更新や削除に使う
ベクトル近さを測るため
本文見つけた後、LLM に渡すため
付箋(メタデータ)元の文書名、部署、更新日、見てよい人など。絞り込みや根拠の表示に使う

ベクトルデータベースの仕事は、大きく3つです。しまう、近い順に k 個出す、そして付箋で絞る。

2つ目を速くするのが索引です。本の巻末の索引が「この言葉は何ページ」と教えてくれるように、ベクトルの索引は「この辺りの点はこれ」と見当を付けてくれます。索引の作り方にはいくつか流派があり、この章の中心はそこです。

「ベクトルデータベース」という名前の専用製品もありますが、普段使っているデータベースにベクトルの機能を足すこともできます(後で見ます)。

  • RAG のすべて 05 ― ベクトル検索
  • 2 / 15
  • ベクトルデータベース=点をしまって、近い点を速く出す棚
  • id | ベクトル | 本文 | 付箋
  • しまう
  • c-001 | [0.12, -0.83, …] | 有給休暇は入社… | 人事/2026
  • c-002 | [0.10, -0.79, …] | 申請は前日まで… | 人事/2026
  • ベクトル+本文+付箋
  • c-003 | [0.55, 0.21, …] | 交通費の精算は… | 経理/2025
  • …(100万行)
  • 近い順に k 個出す
  • 索引(インデックス)で速く
  • 付箋で絞る
  • 部署・日付・権限など
  • ベクトルだけでなく、本文と「付箋」(メタデータ)も一緒にしまう。

いちばん素直な方法:全部と比べる(総当たり)

まず、いちばん素直な方法から。質問の点と、全部の点との近さを1つずつ計算して、近い順に並べます。近さの測り方は、第4章で見た「矢印の向きがどれだけそろっているか」(コサイン類似度)です。これを総当たり(全件検索、フラット検索とも)と呼びます。第4章のコード例はこの方法でした。

図では、質問(赤い点)から全部の点に線が引かれています。この1本1本が、1回の近さの計算です。

総当たりには、大きな長所があります。必ず本当に近い順が出ることです。取りこぼしがありません。索引も要らないので、仕組みも単純です。

短所は、件数に比例して遅くなることです。点が10倍になれば、時間も10倍です。

とはいえ、コンピュータは掛け算がとても速いので、数千〜数万件くらいなら総当たりで十分なことも多いのです。試作の段階や、部署ごとの小さな資料庫なら、索引を入れずに始めるのは良い選択です。取りこぼしが無いので、後で索引を入れたときの「正解」としても使えます(再現率の計算、後で見ます)。

問題になるのは、数十万〜数億件の規模になったとき、あるいは質問の数がとても多いときです。

  • RAG のすべて 05 ― ベクトル検索
  • 3 / 15
  • いちばん素直な方法:全部と比べる(総当たり)
  • 資料の点(100万個あるつもりで)
  • 必ず本当に近い順が出る
  • 仕組みが単純・索引が要らない
  • 件数に比例して遅くなる
  • 質問
  • 質問が多いとサーバーが足りない
  • 数千〜数万件なら、これで十分なことも多い
  • 必ず正しい。でも点が10倍になれば、時間も10倍。

発想の転換:少しの取りこぼしを許して、ずっと速く

大きな規模で使われているのは、近似最近傍探索(Approximate Nearest Neighbor、略して ANN)という考え方です。

「最近傍」は「いちばん近いもの」、「近似」は「だいたい」という意味です。つまり、「いちばん近いものを、だいたい正しく見つける」方法です。

図書館でたとえます。探している本の内容に近い本を探したいとき、全部の本を1冊ずつ開く人はいません。「この話なら、たぶんこの辺りの棚」と見当を付けて、その周りだけを見ます。ほとんどの場合、それで見つかります。ただし、たまに、別の棚に置かれていた本を見逃すことがあります。

ANN も同じです。図の赤い囲みのように、質問の近所だけを調べます。比べる回数は、100万回から数百〜数千回に減ります。その代わり、たまに本当の1位を逃します。

RAG では、この取引はたいてい割に合います。検索で拾う候補は5件、10件と複数あり、1位を少し逃しても、他の候補に同じ情報があることが多いからです。さらに後ろの段階で並べ直すこともできます(第7章)。

では、「見当を付ける」をどうやって実現するのか。代表的な2つの方法、HNSW と IVF を見ていきます。

  • RAG のすべて 05 ― ベクトル検索
  • 4 / 15
  • 発想の転換:少しの取りこぼしを許して、ずっと速く
  • 資料の点(100万個あるつもりで)
  • 図書館のたとえ
  • 全部の本を開かず、棚の見当を付ける
  • 総当たり
  • 100万回の比較
  • 質問
  • ANN
  • 数百〜数千回の比較
  • 代わりに
  • たまに本当の1位を逃す
  • 近似最近傍探索(ANN)。見当を付けた近所だけを調べる。

HNSW の考え方①:近所どうしを道でつなぐ

いまいちばん広く使われている索引が HNSW(Hierarchical Navigable Small World、直訳すると「階層になった、たどりやすい小さな世界」)です。名前は長いですが、考え方は「道路網」です。「小さな世界」は、知り合いの知り合いをたどると少ない手数で誰にでも届く、という性質のことです。

まず、点どうしを道でつなぎます。それぞれの点は、自分に近い点の何個かと道でつながっています。図の灰色の線が道です。

探すときは、決まった入口の点から出発します。そして、次の手順を繰り返します。

手順やること
1いまいる点の、道でつながった隣の点を見る
2その中で、質問にいちばん近い点へ移る
3どの隣も、いまの点より質問から遠ければ、そこで止まる

図の赤い矢印が、入口から質問の近くまでたどった道です。比べたのは、通った点の隣だけです。全部の点とは比べていません。

この方法がうまくいくのは、「質問に近づくほど、隣の点も質問に近い」からです。坂を下るように、近いほうへ近いほうへと進めば、たいてい底(いちばん近い点)に着きます。

ただし弱点もあります。道が近所どうしだけだと、入口が遠いときに何十回も小さな一歩を重ねることになります。これを解決するのが、次のページの「階」です。

  • RAG のすべて 05 ― ベクトル検索
  • 5 / 15
  • HNSW の考え方①:近所どうしを道でつなぐ
  • 資料の点(100万個あるつもりで)
  • 隣の点とだけ比べればよい
  • 入口
  • 近づくほど、隣も質問に近い
  • 道が短い(近所だけ)と、遠くから来るのに手数がかかる
  • 質問
  • 入口から「質問により近い隣へ」移り続けると、近くの点にたどり着く。

HNSW の考え方②:道を何階にも重ねる

HNSW の「H」は Hierarchical、階層です。道路網を何階にも重ねて作ります。

階点の数たとえ
上の階ごく少ない高速道路。遠くへ一気に移れる
中の階そこそこ国道
いちばん下の階全部生活道路。細かく寄せられる

探すときは、上の階から始めます。上の階は点が少なく、道が長いので、少ない手数で「だいたいこの辺り」まで一気に移れます。それ以上近づけなくなったら、1つ下の階に降りて、そこから続けます。いちばん下の階に着いたら、全部の点がある細かい道で、質問のすぐ近くまで寄せます。

図の赤い矢印は、上の階で右へ大きく移り、降りて、また移り、最後に下の階で細かく寄せる様子です。

東京から大阪の知らない住所へ行くとき、まず新幹線、次に在来線、最後に歩く、というのと同じです。

HNSW は 2016年に発表された手法で、速さと正確さのバランスが良く、いまのベクトル検索の主流です。多くのベクトルデータベースや、PostgreSQL の拡張 pgvector も対応しています。

弱点は、道の情報を持つのでメモリ(コンピュータの作業用の記憶場所)を多く使うことと、索引を作るのに時間がかかることです。

  • RAG のすべて 05 ― ベクトル検索
  • 6 / 15
  • HNSW の考え方②:道を何階にも重ねる
  • 上の階:高速道路
  • 上の階ほど点が少なく、道が長い
  • 中の階:国道
  • いちばん下:全部の点
  • 質問
  • 2016年に発表された手法。いまの主流
  • 上の階で遠くへ一気に移り、下の階で細かく寄せる。高速道路と生活道路。

もう1つの方法 IVF:地図を区画に分け、近い区画だけ調べる

もう1つの代表的な方法が IVF(Inverted File、転置ファイル)です。こちらは「区画分け」です。名前の「転置(逆引き)」は、「区画 → その区画に入っている点の一覧」という逆引き表を持つことから来ています。

あらかじめ、全部の点をいくつかの区画に分けておきます。区画の分け方は、点の集まり方から自動で決めます(クラスタリング=近い点どうしを自動でグループにまとめること)。そして、それぞれの区画にどの点が入っているかを覚えておきます。

探すときは、まず質問がどの区画に近いかを調べ、その区画の中の点とだけ比べます。区画が1000個あって1つだけ調べるなら、比べる点はおよそ1000分の1です。

弱点は境目です。図では、質問は区画 A にいます。区画 A だけを調べると、A の中でいちばん近い点は見つかります。でも、本当は2番目に近い点が、境目のすぐ向こうの区画 D にあります。これを見落とします。

対策は、調べる区画を増やすことです。近い区画を2つ、3つと調べれば、境目の点も拾えます。そのぶん遅くなります。

HNSW と比べると、IVF は一般にメモリが少なく、索引を作るのが速い一方、同じ正確さでの検索の速さでは HNSW に分があることが多い、と言われます。また、区画は最初の点の集まり方で決まるので、後から資料が大きく増えたり変わったりすると、区画を作り直す必要が出ます。

  • RAG のすべて 05 ― ベクトル検索
  • 7 / 15
  • もう1つの方法 IVF:地図を区画に分け、近い区画だけ調べる
  • 資料の点(100万個あるつもりで)
  • 区画 A
  • 区画 B
  • 区画 A だけを調べると
  • 隣の区画Dにある、本当は2番目に近い点を見落とす
  • 区画 C
  • 質問
  • 区画 D
  • 調べる区画を2つ、3つと増やせば見つかる。そのぶん遅くなる
  • 調べる区画を増やすほど正確に、減らすほど速くなる。境目の点は逃しやすい。

つまみ1つで「正確さ」と「速さ」を取り引きする

HNSW も IVF も、「どれくらい丁寧に探すか」を決めるつまみを持っています。

方法つまみ上げると
HNSW探索の幅(候補を何個抱えながら進むか。pgvector では hnsw.ef_search)正確になる・遅くなる
IVF調べる区画の数(pgvector では ivfflat.probes)正確になる・遅くなる

つまみを決めるには、「どれくらい正確か」を測る物差しが要ります。それが再現率(リコール)です。ここでは「総当たりで出した本当の上位10件のうち、何件を拾えたか」です。10件中9件なら、再現率は 0.9 です。

測り方は単純です。実際に来そうな質問をいくつか用意し、総当たりと索引の両方で検索して、結果を突き合わせます。総当たりは遅いですが、測るときだけなら問題ありません。

大事なのは、速さだけを見てつまみを決めないことです。索引を入れて「速くなった」と喜んでいたら、実は再現率が 0.6 まで落ちていて、答えの質が下がっていた、ということが起きます。しかもエラーは何も出ません。

ここでの再現率は「索引が総当たりにどれだけ近いか」です。「質問に本当に答えている資料を拾えたか」という意味の再現率は、第12章でもう一度出てきます。

  • RAG のすべて 05 ― ベクトル検索
  • 8 / 15
  • つまみ1つで「正確さ」と「速さ」を取り引きする
  • 速い・取りこぼし多め
  • 遅い・ほぼ総当たりと同じ
  • HNSW のつまみ
  • 探索の幅(ef_search など)
  • IVF のつまみ
  • 調べる区画の数(probes など)
  • 再現率
  • 総当たりの上位10件のうち、何件拾えたか
  • 再現率(本当の上位を何割拾えたか)を測りながら、つまみを決める。

いくつ取り出すか(top-k)

検索で「近い順に何個取り出すか」を k と書き、top-k と呼びます。k をいくつにするかは、意外と大事な決めごとです。

k使い方注意
3〜5そのまま LLM に渡す答えの載った資料が6位にあると、逃す
20〜100並べ直し(第7章)の候補にする並べ直しの時間とお金がかかる
大きすぎる—検索が遅くなる。関係ない資料が混ざり、LLM が迷う(第8章)

k が小さすぎると、答えの載った資料を取りこぼします。埋め込みは完璧ではないので(第4章)、本当に必要な資料がいつも1位に来るとは限りません。

逆に k が大きすぎると、関係の薄い資料がたくさん混ざります。LLM に全部渡すと、読むお金と時間が増えるだけでなく、関係ない資料に引きずられた答えが出やすくなります。

よく使われる形は、「多めに拾って、並べ直して、少しだけ渡す」です。たとえば検索で50件拾い、第7章の並べ直しで上位5件に絞って LLM に渡します。

数字は目安です。自分の資料と質問で、k を変えながら「答えの載った資料が入っているか」を数えて決めます(第12章)。

  • RAG のすべて 05 ― ベクトル検索
  • 9 / 15
  • いくつ取り出すか(top-k)
  • 質問に近い順
  • k = 3〜5
  • そのまま LLM に渡す
  • k = 20〜100
  • 並べ直し(第7章)の候補に
  • k が大きすぎ
  • 遅い・関係ない資料が混ざる
  • 質問
  • 数字は目安。自分の資料で測って決める(第12章)
  • 少なすぎると答えを逃し、多すぎると LLM が迷う。後で並べ直すなら多めに。

付箋で絞る:「人事部の資料だけ」から探したい

実際の RAG では、「全部の資料から近いもの」ではなく、「条件に合う資料の中から近いもの」が欲しい場面がたくさんあります。「人事部の資料だけ」「2026年度版だけ」「この利用者が見てよい資料だけ」などです。ここで付箋(メタデータ)を使います。

絞り方には2通りあります。

方法やり方起きやすい問題
後絞り近い順に k 件取ってから、条件に合わないものを捨てる捨てすぎて、結果が足りなくなる
先絞り条件に合う資料の中だけで、近い順に k 件取る索引の作りによっては遅い・精度が落ちる

図の左が後絞りです。近い8件を取ったら、人事の資料は2件しかありませんでした。欲しかったのは8件なのに、2件しか残りません。条件が厳しいほど(資料全体に占める割合が小さいほど)、ひどくなります。最悪は0件で、LLM は「資料が見つかりません」と答えてしまいます。

右が先絞りです。人事の資料の中から8件を取るので、ちゃんと8件そろいます。

最近のベクトルデータベースの多くは、この問題に対策を持っています。たとえば pgvector は 0.8.0 から、条件を満たす結果が足りるまで索引を追加で探し続ける設定を持っています。使っている製品が、絞り込みをどう扱うかを確かめてください。

1つだけ、絶対の約束があります。見てよい資料かどうか(権限)の絞り込みは、必ず検索の段階で行うことです。LLM に「この人には見せないで」と頼むのは守りになりません(第13章)。

  • RAG のすべて 05 ― ベクトル検索
  • 10 / 15
  • 付箋で絞る:「人事部の資料だけ」から探したい
  • 後絞り:近い8件 → 人事だけ残す
  • 先絞り:人事の中から近い8件
  • 人事
  • 経理
  • 人事
  • 総務
  • 人事
  • 人事
  • 人事
  • 人事
  • 経理
  • 営業
  • 経理
  • 総務
  • 人事
  • 人事
  • 人事
  • 人事
  • 残り2件。欲しかった8件に足りない
  • 8件そろう。ただし索引の作りによっては遅い
  • 権限(見てよい資料だけ)の絞り込みは、必ず検索の段階で行う(第13章)
  • 後から絞る(後絞り)と、結果が足りなくなる。先に絞るか、足りるまで探す。

コードで見る:PostgreSQL(pgvector)の場合

具体例として、広く使われるデータベース PostgreSQL に後から足せる追加機能(拡張)、pgvector を使った場合を見ます。いつもの SQL の中で、ベクトルを列として扱えます。

図のコードでは、次のことをしています。

行やっていること
CREATE EXTENSION vectorpgvector を有効にする
embedding vector(1024)1024 次元のベクトルの列を作る(次元はモデルに合わせる)
USING hnsw (… vector_cosine_ops)コサイン距離で HNSW の索引を作る
WHERE dept = '人事'付箋で絞る
ORDER BY embedding <=> $1質問のベクトルに近い順に並べる($1 はプログラムから渡す質問のベクトル。<=> はコサイン距離)
LIMIT 5上から5件(top-k)

「コサイン距離」は「1 − コサイン類似度」のことで、向きがそろっているほど小さくなります。だから「距離の小さい順」=「近い順」です。

注意点が1つあります。索引の距離の種類と、並べるときの演算子をそろえることです。pgvector では、コサイン距離は <=>、内積(第4章で見た「掛け算の足し合わせ」)は <#>、ふつうの距離(定規で測る直線の長さ、ユークリッド距離)は <-> です。索引をコサイン用に作ったのに、別の演算子で並べると、索引が使われず総当たりになります。

埋め込みモデルがどの距離を前提にしているかは、モデルの説明に書いてあります。多くのモデルは長さ1にそろえた(正規化した)ベクトルを返すので、コサインと内積は同じ順位になります(第4章)。

  • RAG のすべて 05 ― ベクトル検索
  • 11 / 15
  • コードで見る:PostgreSQL(pgvector)の場合
  • CREATE EXTENSION vector;
  • CREATE TABLE chunks (id bigserial PRIMARY KEY, body text, dept text,
  • embedding vector(1024));
  • CREATE INDEX ON chunks USING hnsw (embedding vector_cosine_ops);
  • SELECT id, body FROM chunks
  • WHERE dept = '人事' -- 付箋で絞る
  • ORDER BY embedding <=> $1 -- $1 は質問のベクトル
  • LIMIT 5;
  • いつもの SQL で、近い順に並べて上から k 件。索引を作れば速くなる。

置き場所の選び方:いまの DB に足すか、専用にするか

ベクトルの置き場所には、大きく3つの選び方があります。この本では特定の製品の良し悪しは比べません。考え方だけを見ます。

選び方例向いている場面
いまの DB に足すPostgreSQL+pgvector、検索エンジンのベクトル機能件数が数百万くらいまで。本文や権限と同じ場所で管理したい
専用のベクトル DB を自分で動かすオープンソースのベクトル DB件数がとても多い。細かい調整がしたい
マネージド(クラウドのサービス)各社のベクトル検索サービス運用を任せたい。急に増える負荷に備えたい

選ぶときの決め手は、次のようなものです。

規模:件数(数万か、数億か)と、1秒あたりの質問数。機能:付箋での絞り込みがうまく動くか、キーワード検索(第6章)と組み合わせられるか。運用:権限、バックアップ、障害のときに誰が見るか。

迷ったら、まずは手持ちのデータベースで始めるのがおすすめです。資料の本文、権限、更新日といった情報は、たいてい既にどこかのデータベースにあります。同じ場所にベクトルも置けば、データが二重になりません。規模や要件が合わなくなってから専用のものを考えても、遅くはありません。

  • RAG のすべて 05 ― ベクトル検索
  • 12 / 15
  • 置き場所の選び方:いまの DB に足すか、専用にするか
  • いまの DB に足す
  • 専用のベクトル DB
  • マネージド(クラウド)
  • PostgreSQL+pgvector など
  • 自分で動かす・大量向けの工夫
  • 運用を任せる・従量課金
  • 決め手1
  • 件数(数万か、数億か)と、1秒あたりの質問数
  • 決め手2
  • 付箋での絞り込み・キーワード検索(第6章)の対応
  • 決め手3
  • 権限・バックアップ・運用を誰が見るか
  • まずは手持ちの DB で始め、量や要件が合わなくなってから考えても遅くない。

資料が変わったら:古い点を消し、新しい点を足す

資料は毎日変わります。規程が改定され、マニュアルが書き直され、古い文書は廃止されます。ベクトルデータベースも、それに合わせて更新しなければいけません。

いちばん安全な考え方は、「差し替え」です。

やり方何が起きるか
文書ID で、その文書のチャンクを全部消してから入れ直す古いチャンクが残らない
変わったチャンクだけ上書きする改定でチャンクの数が減ると、余った古いチャンクが残る

図の灰色の点は、改定前の古い版のチャンクです。消し忘れると、質問によっては古い版が上位に来て、古い規程で答えます。新旧が両方ヒットして、LLM が矛盾した資料を読まされることもあります(第13章)。

このために、チャンクの付箋には元の文書のIDを必ず入れておきます。文書が変わったら、その ID のチャンクを全部消して、新しく切って埋め込み直します。

索引の側にも注意があります。HNSW のような索引では、点を消しても道の中に跡が残ることがあり、削除や更新が積み重なると、速さや正確さが少しずつ落ちます。IVF では、区画の分け方が資料の変化に合わなくなります。製品によって扱いは違いますが、ときどき索引を作り直す運用を考えておきます。

  • RAG のすべて 05 ― ベクトル検索
  • 13 / 15
  • 資料が変わったら:古い点を消し、新しい点を足す
  • 資料の点
  • 文書IDで、その文書のチャンクを全部消してから入れ直す
  • 古い版(消す)
  • 消した点は索引の中に跡が残る。ときどき作り直す
  • 質問
  • 上書きだけして、減ったチャンクが残る
  • モデルを替えたのに一部だけ入れ替える
  • 消し忘れた古い点は、古い答えを出し続ける。更新は「差し替え」で考える。

よくある落とし穴

ベクトル検索で、実際によく起きる失敗をまとめます。どれもエラーが出ないのが厄介なところです。

落とし穴何が起きるか対策
距離の種類の食い違い索引が使われない、または順位がずれるモデルの説明を読み、索引と演算子をそろえる
小さいのに ANN速さは変わらず、取りこぼしだけ増える数万件くらいまでは総当たりも検討
後絞りで結果が足りない「資料が無い」と答える先絞り、または足りるまで探す設定
再現率を測らない速くなった代わりに、答えの質が落ちる総当たりと突き合わせる
古いチャンクの消し忘れ古い規程で答える文書ID ごとに差し替える

特に「後絞り」と「消し忘れ」は、テストのときは資料が少なく条件もゆるいので気づかず、本番で資料が増えてから表に出ることが多い失敗です。本番に近い量の資料で試しておくのが一番の予防です。あわせて、検索が返した件数と、つまみの値、かかった時間を記録に残しておくと、おかしな答えが出たときに原因を追えます(第13章)。

  • RAG のすべて 05 ― ベクトル検索
  • 14 / 15
  • よくある落とし穴
  • モデルは「コサイン」前提なのに、索引は別の距離で作っている
  • 件数が少ないのに ANN を入れ、取りこぼしだけ増える
  • 後絞りで結果が0件・数件になり、「資料が無い」と答える
  • 再現率を測らずに、速さだけでつまみを決める
  • 文書を更新しても古いチャンクが残り、古い規程で答える
  • 距離の種類・索引の作り直し・絞り込みの順番。どれもエラーは出ない。

まとめ:近い点を「速く、ほぼ正しく」探す

この章で見たことをまとめます。

項目内容
ベクトル DBベクトル・本文・付箋をしまい、近い順に k 個出す
総当たり必ず正確。件数に比例して遅い。数万件までなら十分なことも
ANN少しの取りこぼしを許して、ずっと速く
HNSW近所どうしの道を何階にも重ね、上の階から降りて探す。いまの主流
IVF区画に分け、近い区画だけ調べる。境目に弱い
つまみ正確さと速さの取り引き。再現率を測って決める
絞り込み後絞りは足りなくなる。権限は必ず検索の段階で
更新文書ID ごとに差し替える

他の章とのつながりも確認しておきます。検索する点を作るのは第4章の埋め込みで、点の質が検索の上限を決めます。ここで多めに拾った候補は、第7章のリランキングで並べ直します。権限の絞り込みは第13章でもう一度見ます。

ベクトル検索は「意味で探す」のが得意ですが、型番やエラーコードのような「文字どおりの一致」は苦手です。次の第6章では、昔ながらのキーワード検索と組み合わせるハイブリッド検索を見ていきます。

  • RAG のすべて 05 ― ベクトル検索
  • 15 / 15
  • まとめ:近い点を「速く、ほぼ正しく」探す
  • 資料の点(100万個あるつもりで)
  • 総当たり
  • 正確・遅い。小さければ十分
  • ANN
  • 少し逃して、ずっと速く
  • HNSW
  • 何階もの道をたどる
  • 質問
  • IVF
  • 近い区画だけ調べる
  • 絞り込み
  • 後絞りは足りなくなる
  • 次章では、意味の検索が苦手な型番や固有名詞を、キーワード検索で補う。

0 件のコメント

読み込み中…

権利侵害・不適切な内容の連絡: [email protected]