dotConf, Inc
⤴️

結局ベクトル検索ってなに?

はじめまして、まつのです!

機械学習や生成AIの受託開発・AI学習サービス「aipass」の運営をしている株式会社dotConfという会社で、代表をしております!

この記事では、RAGで注目を集めている「ベクトル検索」とは結局なんなのか?についてわかりやすく解説します。

RAGにおけるベクトル検索

最近よく耳にする「RAG(Retrieval-Augmented Generation)」という技術。これは、ChatGPTのような生成AIが「自分の知らない情報を検索し、取り込んで答える」ための仕組みです。ニュース記事や社内文書など、外部の知識を参照できるようにすることで、より正確で信頼できる回答を作ることができます。RAGは大きく分けると次の2つのステップで動いています:

  1. Retrieval(検索):質問に関連する情報を探す
  2. Generation(生成):見つけた情報をもとに回答を作る

このうち Retrieval(検索)の部分を支えているのが、まさにベクトル検索です。普通の検索エンジンのように「単語が一致するかどうか」で探すのではなく、AIが文章の意味の近さで探すのが大きな違いです。

たとえば、あなたが自社サイトにFAQチャットボットを作ったとしましょう。ユーザーが「パスワードをリセットしたい」と質問したとき、AIはまず「自分が知っている知識」には頼らず、FAQデータベースの中からそれに近い質問と答えを探します。この「探す」部分が、「ベクトル検索」にあたります。

埋め込みベクトル:文章を数値で表現する

AIが「意味で探す」ためには、まず文章を数値で表す必要があります。これを行うのが埋め込みベクトルです。埋め込みとは、言葉や文章を「意味の近さ」を保ったまま、数百〜数千次元の数値の並び(ベクトル)に変換する技術です。

たとえば、「りんご」「バナナ」という言葉はどれも果物です。これらの単語をベクトル空間に置くと、互いに近い場所に並びます。一方で「車」「パソコン」はまったく別の領域にあります。つまり、ベクトル空間では言葉の意味が距離で表現されるのです。

コサイン類似度:文章を数値で比較する

「埋め込みベクトル」で文章を数値で表現できると、次にAIが行うのは 「どれくらい近いか」 を測ることです。そのとき使われるのがコサイン類似度という指標です。AIは文章をベクトルとして数値化したあと、ベクトル同士の角度を比べることで「似ている/違う」を判断します。

\text{cosine\_similarity}(A, B) = \frac{A \cdot B}{\|A\| \|B\|}

ここで簡単なコード例を見てみましょう👇

from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer

# 埋め込みモデルを読み込む(例:MiniLM)
model = SentenceTransformer("all-MiniLM-L6-v2")

sentences = [
    "パスワードをリセットしたい",
    "ログインできないときの対応方法",
    "ランチのおすすめを教えて"
]

# 各文をベクトルに変換
embeddings = model.encode(sentences)

# コサイン類似度を計算
similarity = cosine_similarity([embeddings[0]], embeddings)

print(similarity)
[[1.00 0.89 0.12]]

こちらの実装例では、3つの文章のそれぞれのコサイン類似度を計算しています。意味が違い文章同士は高いコサイン類似度を示しており、全く関係のない文章はコサイン類似度が低くなっています。

文A 文B 類似度(cosθ) 意味の関係
「パスワードをリセットしたい」 「パスワードをリセットしたい」 1.00 完全に同じ意味
「パスワードをリセットしたい」 「ログインできないときの対処方法」 0.89 とても近い意味
「パスワードをリセットしたい」 「ランチのおすすめを教えて」 0.12 無関係

まとめ

RAGの強みは、ユーザーがどんな言い方をしても、AIが意味を理解して適切な情報を見つけられる点にあります。たとえば、ユーザーが「パスワードをリセットしたい」と質問しても、FAQにまったく同じ文言が書かれているとは限りません。 しかしベクトル検索では、「ログインできないときの対処方法」という文章が意味的に近いと判断できます。 コサイン類似度によって意味がほぼ同じだと分かるため、AIはそのFAQを検索結果として選び、対応する回答を生成できるのです。

生成AIプログラミングを学習したい方へ

Pythonを体系的に学び、プロの指導のもとで実践的なAIスキルを習得したい方、
キャリアの幅を広げたい方や複業を目指す方は、ぜひこちらからお問い合わせください。
https://b2c.aipass.tech
https://lin.ee/pbd6SZJ

Zenn以外の情報発信媒体はこちら👇
dotConf, Inc
dotConf, Inc

Discussion