生成AI(人工知能)のRAG(検索拡張生成)の導入など企業で使われ始めたベクトルデータベース。その特徴は検索にある。ベクトルデータベースとはどのようなデータベースで、なぜ「意味」で検索できるのか。ベクトルデータベースの基本技術についてデータベースの専門家が解説する。(編集部)
ベクトルデータベースは自然言語処理などAI技術の発展の中で生まれたデータベースであり、ベクトルの概念を用いてデータを管理するデータベースです。生成AIの登場とともに注目を集め、いまや多くの既存のDBサービスやその応用サービスにベクトルデータベースの機能が組み込まれています。
以下で検索を例にベクトルデータベースの特徴や動作の仕組みを解説します。
ベクトルによる「類似度」の判断
ベクトルデータベースがストアするのは数値の羅列です。単語や文章などの「意味」「文脈」を数値化したデータであり、個々の数値を取り出して意味や違いを説明できるものではありません。数値化することをエンベディングと言います。エンベディングは埋め込むという意味です。テキストデータなどをn次元のベクトル空間に埋め込み、その埋め込んだ状態を表すのが数値の羅列です。羅列の数が次元数になります。
こうした数値化したデータの「近さ」によって意味的な類似度が判断できます。この類似度を検索に利用すれば、言葉などが完全に一致しなくても、意味的に近いものを検索結果として導けることになります。なお、以下ではテキストの処理を前提に解説しますが、画像や動画、音声などを扱う場合も基本的には変わりません。
類似度を計算する一般的な方法は「コサイン類似度」です。コサイン類似度とは、2つのベクトル間のコサイン角度(cosθ)を計算して-1~1の間に数値化したものです。1に近づく(ベクトル間の角度が小さくなる)ほど意味的に似ていて、-1に近づく(ベクトル間の角度が大きくなる)ほど意味的に似ていないと判断します。コサイン類似度の他にも2つのベクトルの直線距離を用いる「ユークリッド距離」や、2つのベクトルの内積から判断する「最大内積」などの計算手法があります。