目次
「意味が近い文書を検索する」——これは人間には直感的に理解できるが、コンピュータにとっては自明ではない。キーワード検索は「同じ単語が含まれているか」を調べるが、「意味が似ている」かどうかは単語の一致では判定できない。
「犬」と「いぬ」は同じ概念だが、「犬」と「猫」も動物という観点では類似している。「自動車」と「モビリティ」は異なる単語だが意味は重なる。こうした「意味の類似性」を扱うのがベクトル検索の本領だ。
埋め込みベクトルの直感的説明
テキストを「ベクトル」として表現するとはどういうことか。
ベクトルとは、複数の数値を並べた配列だ。たとえば [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が情報をどのように扱うかを理解する上で不可欠な知識だ。
免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。