結局ベクトル検索ってなに?
はじめまして、まつのです!
機械学習や生成AIの受託開発・AI学習サービス「aipass」の運営をしている株式会社dotConfという会社で、代表をしております!
この記事では、RAGで注目を集めている「ベクトル検索」とは結局なんなのか?についてわかりやすく解説します。
RAGにおけるベクトル検索
最近よく耳にする「RAG(Retrieval-Augmented Generation)」という技術。これは、ChatGPTのような生成AIが「自分の知らない情報を検索し、取り込んで答える」ための仕組みです。ニュース記事や社内文書など、外部の知識を参照できるようにすることで、より正確で信頼できる回答を作ることができます。RAGは大きく分けると次の2つのステップで動いています:
- Retrieval(検索):質問に関連する情報を探す
- Generation(生成):見つけた情報をもとに回答を作る
このうち Retrieval(検索)の部分を支えているのが、まさにベクトル検索です。普通の検索エンジンのように「単語が一致するかどうか」で探すのではなく、AIが文章の意味の近さで探すのが大きな違いです。
たとえば、あなたが自社サイトにFAQチャットボットを作ったとしましょう。ユーザーが「パスワードをリセットしたい」と質問したとき、AIはまず「自分が知っている知識」には頼らず、FAQデータベースの中からそれに近い質問と答えを探します。この「探す」部分が、「ベクトル検索」にあたります。
埋め込みベクトル:文章を数値で表現する
AIが「意味で探す」ためには、まず文章を数値で表す必要があります。これを行うのが埋め込みベクトルです。埋め込みとは、言葉や文章を「意味の近さ」を保ったまま、数百〜数千次元の数値の並び(ベクトル)に変換する技術です。
たとえば、「りんご」「バナナ」という言葉はどれも果物です。これらの単語をベクトル空間に置くと、互いに近い場所に並びます。一方で「車」「パソコン」はまったく別の領域にあります。つまり、ベクトル空間では言葉の意味が距離で表現されるのです。
コサイン類似度:文章を数値で比較する
「埋め込みベクトル」で文章を数値で表現できると、次にAIが行うのは 「どれくらい近いか」 を測ることです。そのとき使われるのがコサイン類似度という指標です。AIは文章をベクトルとして数値化したあと、ベクトル同士の角度を比べることで「似ている/違う」を判断します。
ここで簡単なコード例を見てみましょう👇
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スキルを習得したい方、
キャリアの幅を広げたい方や複業を目指す方は、ぜひこちらからお問い合わせください。
Discussion