ベクター検索(セマンティック検索) は、キーワードの完全一致ではなく テキストの「意味の近さ」 で検索する方式。テキストを embedding(数値ベクトル)に変換し、コサイン類似度 などでクエリに意味的に近い文書を引く。
概要
従来の全文検索が「同じ単語が含まれるか」を見るのに対し、ベクター検索は 「意味が近いか」 を見る。たとえば「シュート 練習」というクエリで、その語を含まない「バスケットボール用品」の文書を、意味の近さから引ける。
典型的な流れ:
- 保存(インデックス作成):検索対象の文書を embedding にして DB に貯める(document 側)
- 検索:クエリを embedding にして、近いベクトルを持つ文書を引く(query 側)
- 類似度計算:コサイン類似度などで距離を測り、閾値や上位 N 件で絞る
pgvector(PostgreSQL 拡張)や各種ベクター DB が、HNSW などの近似最近傍探索でこの照合を高速化する。
精度の鍵は embedding の使い分け
ベクター検索の精度は、モデルや閾値より 保存側(document)と検索側(query)の task_type を正しく使い分けているか に大きく左右される。揃え方を誤ると エラーは出ないのに検索のヒット率だけが静かに落ちる。
詳細は ベクター検索の落とし穴 を参照。
関連記事・用語
- ベクター検索の落とし穴:保存(document)と検索(query)で task_type を分けないとヒット率が落ちる
- embedding — ベクター検索の入力となるベクトル表現
- task_type — 検索精度を左右する用途別最適化
- RAG — ベクター検索を Retrieval に使う応用
- Batch API — 大量文書のベクトル化を半額で