Lab AI ベクトル検索の仕組み——意味的類似性をどうやって数値で表現するか
目次

「意味が近い文書を検索する」——これは人間には直感的に理解できるが、コンピュータにとっては自明ではない。キーワード検索は「同じ単語が含まれているか」を調べるが、「意味が似ている」かどうかは単語の一致では判定できない。

「犬」と「いぬ」は同じ概念だが、「犬」と「猫」も動物という観点では類似している。「自動車」と「モビリティ」は異なる単語だが意味は重なる。こうした「意味の類似性」を扱うのがベクトル検索の本領だ。

埋め込みベクトルの直感的説明

テキストを「ベクトル」として表現するとはどういうことか。

ベクトルとは、複数の数値を並べた配列だ。たとえば [0.2, -0.8, 0.5, 0.1, ...] のように、数百〜数千次元の実数値が並ぶ。この配列が「埋め込みベクトル(Embedding Vector)」であり、テキストの意味を数値空間に「翻訳」したものだ。

直感的なイメージとして、以下を考えてみよう。もし「動物性」「大きさ」「危険度」という3つの軸(次元)でものを表現するなら、「犬」は [0.9, 0.4, 0.2] に、「猫」は [0.9, 0.3, 0.1] に、「象」は [0.9, 0.9, 0.3] に、「バス」は [0.0, 0.8, 0.1] になるかもしれない。「犬」と「猫」のベクトルが近く、「犬」と「バス」のベクトルが遠い——これが「意味の近さ」の数値的表現だ。

実際の埋め込みモデルは、訓練データから自動的に「意味的に近いテキストは近いベクトル」という対応関係を学習する。人間が次元の意味を定義するのではなく、大量のデータから意味構造が自己組織的に浮かび上がる。

コサイン類似度の計算

ベクトル空間に配置されたテキスト同士の「近さ」を測るために、一般的にコサイン類似度が使われる。

コサイン類似度は、2つのベクトルの「向き」の一致度を -1 から 1 の値で表す。数式は以下だ。

cos(θ) = (A・B) / (|A| × |B|)
  • A・B はベクトルの内積(対応する次元の積の和)
  • |A| と |B| はそれぞれのベクトルの大きさ(L2ノルム)

値が 1 に近いほど方向が一致(意味が近い)、0 に近いほど無関係、-1 に近いほど反対方向(意味が正反対)を示す。

コサイン類似度がよく使われる理由は、ベクトルの絶対的な大きさを無視して「方向」のみを比較するためだ。これにより、長い文書と短い文書を同じ尺度で比較できる。

ANNによる高速検索の原理

ベクトル検索の実用上の課題は速度だ。

数百万件の文書すべてに対して類似度を計算する(完全探索)のは、データ量が増えるにつれて現実的でなくなる。100万件のベクトルすべてと比較するには、100万回の演算が必要だ。

これを解決するのが**ANN(Approximate Nearest Neighbor:近似最近傍探索)**アルゴリズムだ。厳密に最も近いベクトルではなく、「高確率で近いベクトル」を高速に探す仕組みだ。

代表的なアルゴリズムとして以下がある。

**HNSW(Hierarchical Navigable Small World)**は、グラフ構造を使った手法だ。データポイント間の近傍関係をグラフのノード・エッジとして事前に構築する。検索時はグラフをナビゲートして近傍を辿ることで、全件比較なしに高速に候補を絞り込む。精度と速度のバランスに優れ、現在最も広く使われている手法の一つだ。

**FAISS(Facebook AI Similarity Search)**はFacebook(Meta)が開発したライブラリで、量子化(ベクトルを低精度に圧縮)とクラスタリングを組み合わせて高速化する。億単位のベクトルを扱うケースでも有効だ。

ANNの「近似」という言葉が示す通り、これらは完全な正確さを保証しない。代わりに、「99%の確率で上位10件に真の最近傍が含まれる」といった形で、速度と精度のトレードオフを設定できる。

RDBの全文検索との本質的な違い

従来のRDB(リレーショナルデータベース)の全文検索と、ベクトル検索は何が異なるか。

全文検索は、キーワードの出現頻度(TF-IDF等)に基づいてスコアリングする。「検索クエリと同じ単語が、どれだけ重要な位置にどれだけ出現するか」がマッチングの基準だ。シノニム(同義語)や概念的な類似性は直接扱えず、辞書ベースの拡張が必要になる。

ベクトル検索は意味的な類似性をベースにするため、単語の一致がなくても概念的に近い文書を見つけられる。「モビリティの未来」という検索クエリで「自動運転車のトレンド」という文書がヒットするような検索が可能だ。

しかしベクトル検索も万能ではない。厳密なキーワードマッチングが必要な場合(特定の商品コード、正式名称の検索等)は全文検索の方が適している。実際の検索システムでは、両手法を組み合わせた「ハイブリッド検索」が採用されることが多い。


まとめ

ベクトル検索の核心は「テキストの意味を数値ベクトルとして表現し、コサイン類似度で意味的な近さを計算する」仕組みにある。

埋め込みモデルが言語の意味構造をベクトル空間に学習し、ANNアルゴリズムが大規模データへの高速アクセスを可能にする。これはRAGシステムの検索コンポーネントとして、また推薦システムや類似コンテンツ検索として、現代のAIアプリケーションの多くで基盤技術になっている。

「意味の近さを数値で測る」というアプローチの理解は、AIが情報をどのように扱うかを理解する上で不可欠な知識だ。

免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。