ベクトルデータベースとは

ベクトルデータベースとは、データを「意味を表す数字の並び(ベクトル)」として保存し、意味の近さで検索できる専用のデータベースです。文字の完全一致ではなく、内容が似ているものを探せるのが特徴で、生成AIと社内データを結びつける土台としてよく使われます。

普通のデータベースと何が違う?

従来のデータベースは、入力した言葉と文字がぴったり一致するものを探します。一方ベクトルデータベースは、文章や画像をAIが「埋め込み」という数値の並びに変換し、その数字どうしの近さ、つまり意味の近さで探すのが特徴。だから「車」で調べたときに「自動車」「クルマ」のように、言葉が違っても意味が近ければ見つけられます。これを意味検索と呼びます。

何の役に立つのか

いちばんの活躍どころが、RAG(検索拡張生成)です。これは、社内文書などから質問に関係する部分を探し出し、それをAIに渡して答えさせる仕組みのこと。文書はあらかじめ小さなかたまりに切り分け(チャンキング)、一つずつ数字の並びに変えてベクトルデータベースへ入れておきます。質問が来たとき、意味の近いかたまりを探して取り出すのがベクトルデータベースの役目です。PineconeやWeaviate、Chromaなど多くの製品があり、自社の資料を踏まえてAIに答えさせたい場面で土台になります。

意味で探す検索が苦手なことは?

弱点は、型番やエラーコードのように文字どおりに一致してほしい語。Anthropicは技術サポートの例として、利用者が「Error code TS-999」と尋ねたとき、意味で探す方法ではエラーコード全般の資料は見つかっても、「TS-999」そのものに当たる資料を取りこぼしうると説明しています。

そこで使われるのが、キーワードの一致で順位をつける昔ながらの検索(BM25)との組み合わせ、つまりハイブリッド検索です。同社もBM25を「より古い手法」と呼んだうえで、固有の番号や専門用語を含む問い合わせに特に強いとしています。製品の型番や規程の番号で探すことが多い社内の使い方ほど、ベクトルデータベースだけで済ませず、この組み合わせを検討する価値があるでしょう。

会社で使うとき、何に気をつける?

見落とされやすいのが、閲覧権限。ソフトウェアの安全性に取り組む非営利団体OWASPは、LLMを組み込んだアプリの10大リスク(2025年版)で、ベクトルと埋め込みの弱点を1項目に挙げました。そこでは、複数の部署や利用者が同じベクトルデータベースを共有すると、あるグループの情報が別のグループの質問への答えに紛れ込むおそれがあるとして、権限に応じて検索できる範囲を分ける作りにするよう勧めています。

共有フォルダで閲覧を制限していた文書も、数字の並びに変えて1か所に集めれば、検索の側で同じ制限をかけ直さない限り守られないおそれがある、ということです。OWASPは、保存した数字の並びから元の情報のかなりの部分を取り出す攻撃も挙げています。中身は元の文書と同じ機密として扱うのが前提になります(詳しくは「ベクトル・埋め込みの脆弱性」)。

Topic音楽のおすすめでも、同じ「近さ探し」が働いていた

数字の並びどうしの近さで探す仕組みは、生成AIのブームよりずっと前から実用されていました。音楽配信のSpotifyが公開しているプログラム部品「Annoy」の説明書きには、ChatGPTの一般公開(2022年11月)より8年前の2014年の時点で、すでに「Spotifyで音楽のおすすめに使っている」と書かれています。利用者と曲をそれぞれ数字の並び(ベクトル)で表し、似た利用者や似た曲を探す。ベクトルデータベースと同じ発想です。名前はApproximate Nearest Neighbors(近似最近傍探索)に2語を足した略で、2014年当時の説明書きではその2語が「Something Something(なんとかかんとか)」。いまは「Oh Yeah」と書かれています。

ベクトルデータベースに関するよくある質問

専用の製品を導入しないと使えませんか?
必ずしも必要ではありません。たとえばPostgreSQLには「pgvector」という拡張があり、公式の説明では「ベクトルを、ほかのデータと一緒に保存できる」ものです。データの整合性を守る仕組みや、ある時点まで巻き戻す復旧、ほかの表との結合といった、ふだんのデータベースの機能をそのまま使えます。まず小さく試す段階では、いま使っているデータベースの拡張で足りることも少なくありません。扱う量や求める速さが問題になってから専用製品を検討する、という順序が取れます。
意味で探せるなら、必要な資料は必ず見つかりますか?
必ずとは言えません。理由は二つあります。一つは速さとの引き換えです。pgvectorの説明では、既定では最も近いものを厳密に探して漏れなく拾いますが、大量のデータを速く探すために近似の索引を作ると「速度と引き換えに再現率をいくらか手放す」ことになり、しかも「ふつうの索引と違い、近似の索引を追加すると同じ問い合わせでも結果が変わる」と注意されています。もう一つは、数字の並びが近いことと、質問の答えに必要な資料であることが、いつも一致するとは限らない点です。AIの回答が的外れなときは、AIの賢さより先に、探す側の設定を疑ってみてください。

あわせて読みたい記事