AIを深く知りたい人のための数学 第8回 ベクトル

皆さん、こんにちは。LP開発グループのn-ozawanです。
マッチ棒よりもライターの方が早く発明されました。

本題です。
個人的に、ベクトルは値に加えて「方向」まで扱うため、数学においても異質な気がします。その為か、苦手意識を持つ人もいるのではないでしょうか。しかし、AIの世界ではベクトルが非常に重要な役割を果たします。特に、生成AIでよく耳にするRAG(検索拡張生成)では、ベクトルDBが欠かせません。今回はそんなベクトルについて思い出します。

※「AIを深く知りたい人のための数学」は、数学を忘れてしまったエンジニアを対象に、中学数学から思い出すことを目的としたシリーズです。

ベクトル

ベクトルとは?

ベクトルとは、「大きさ」と「向き」の両方を持つ量のことです。たとえば、風の強さと吹いている方向や、車が進む速さと進行方向などがベクトルの例です。

ベクトルは、矢印(→)で表すことが多く、矢印の長さが「大きさ」、向きが「方向」を示します。数学が苦手な人は「難しそう」と感じるかもしれませんが、実は身近なものにもたくさん使われています。たとえば、地図で目的地までの距離と方向を示すときもベクトルの考え方が使われています。

ベクトルを数学的に表記すると以下のようになります。

ベクトルの計算

ベクトルの性質の1つに、「大きさ」と「向き」が同じであれば、始点と終点が違っていても同じである、と言うのがあります。

ベクトルを数値で表現する際は、ベクトルの始点を原点(0,0)にした場合の終点の座標になります。グラフの座標点を示すのと同じですが、ベクトルの場合は方向も意味します。

ベクトルは加減算することが可能です。

ベクトルに掛け算と割り算はありません。その代わりに、内積という考え方があります。内積の求め方は2つあり、どちらも同じ値になります。内積で求めた値は、ベクトルaとベクトルbが互いがどれだけ同じ方向を向いているか(類似度)を数値化します。

ベクトルDBとRAG

ベクトルDB(ベクトルデータベース)は、データをベクトル(数値の並び)として保存し、検索や管理を行うためのデータベースです。従来のデータベースが文字列や数値などの「完全一致」や「部分一致」で検索するのに対し、ベクトルDBは「意味の近さ」や「類似度」で検索できるのが特徴です。

ベクトルDBは、文章や画像などのデータをベクトルで保存する際、似ている意味や内容を持つデータ同士を、高次元のベクトル空間上で「近い位置」に配置されるように保存します。検索したい内容をベクトル化し、データベース内のベクトルと「どれだけ近いか(類似しているか)」を計算することで、意味的に近いデータを見つけることができます。ベクトル同士の距離の計算にはユークリッド距離やコサイン類似度などがあります。

RAG(Retrieval-Augmented Generation:検索拡張生成)は、AIが回答を生成する際に、外部データベースから関連情報を検索して活用する仕組みです。このとき、質問文をベクトル化し、ベクトルDBから意味的に近い文書やデータを探し出します。これにより、AIはより正確で信頼性の高い回答を生成できるようになります。

おわりに

今は違うかもしれませんが、私のときは中学の物理で、力の合成でベクトルを習い、高校数学でその計算を本格的に学んだ記憶があります。ベクトルは「大きさ」と「方向」を表すもの、と言う認識でしたが、これを「意味の近さ」や「類似度」で検索することに応用するなんて、考えた人はすごいですね。

ではまた。

Recommendおすすめブログ