ベクトルデータベースとは
この記事の結論
- ベクトルデータベースとは、文章や画像を埋め込みという数値の列(ベクトル)にして保存し、意味の近いものを探し出せるデータベースです。
- 検索は「質問のベクトルと距離が近い順に並べる」操作です。件数が増えると全件比較は遅くなるため、HNSW などの索引で近似的に探すのが一般的です。
- 専用の製品だけでなく、PostgreSQL に拡張機能を入れて使う方法もあります。RAG の検索先として使われる場面が多い技術です(2026-09-26 更新)。
べくとるでーたべーす/Vector Database
文章や画像を数値の列(ベクトル)にして保存し、意味の近いものを探し出せるデータベースです。
最終更新: 2026-09-26
ベクトルデータベースとは(意味と読み方)
ベクトルデータベースとは、文章・画像・音声などを多数の数値の並び(ベクトル)に変換して保存し、「この問い合わせに意味が近いものはどれか」を高速に探せるように作られたデータベースです。読みは「べくとるでーたべーす」、英語では vector database と書きます。
ふつうのデータベースは「商品番号が一致する行」「日付が9月の行」のように、条件に合うかどうかで探します。ベクトルデータベースが得意なのは、言葉が違っても中身が似ているものを拾うことです。「パスワードを忘れた」という質問で、「ログインできないときの再設定手順」という見出しの文書を見つけられます。
ベクトルデータベースの仕組み
まず、保存したい文章を埋め込み(エンベディング)モデルに通してベクトルにします。意味の近い文章ほど、ベクトル同士の距離が近くなるように作られています。
検索のときは、質問文も同じモデルでベクトルにして、保存済みのベクトルとの距離を測ります。距離の測り方には主に3つあります。
- ユークリッド距離(L2):空間上の直線距離。
- コサイン距離:ベクトルの向きの違い。長さの差を無視したいときに使います。
- 内積:向きと長さの両方を反映した値。
全件と比べれば、いちばん近いものが確実に見つかります。ただ、件数が増えるほど遅くなります。そこで、多くの製品は「近似最近傍探索」の索引を使い、わずかな取りこぼしを許す代わりに速度を上げます。代表例の HNSW は、Malkov と Yashunin の論文で提案された、近さでつないだグラフを何層にも重ねた構造です。要素の少ない上の層から探し始め、下の層へ降りながら候補を絞り込むことで、全件比較より少ない手数で近いものにたどり着きます。
ベクトルデータベースの具体例
PostgreSQL の拡張機能 pgvector を使うと、いつもの表に vector 型の列を足すだけで始められます。
- 表を作る:
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3)); - 近い順に5件取る:
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
<-> がユークリッド距離、<=> がコサイン距離、<#> が内積(符号を反転した値)を表します。README によれば、索引がなければ全件を比べる正確な検索になり、HNSW や IVFFlat の索引を作ると近似検索に切り替わります。HNSW は検索の速さと取りこぼしの少なさで勝り、IVFFlat は索引の作成が速くメモリも少なくて済む、という違いがあります。
AI開発での使いどころは次のようなものです。
- RAG の検索先として、社内文書の断片を保存する
- 過去の問い合わせから、似た質問とその対応記録を探す
- 投稿やチケットの重複を、言い回しが違っても見つける
ベクトルデータベースのよくある誤解
- 誤解:専用のベクトルデータベース製品を契約しないと使えない
実際:既存の PostgreSQL に拡張機能を入れる方法もあります。件数が少ないうちは、ふだんの業務データと同じ場所に置けるほうが管理が楽です。 - 誤解:検索結果はいつも最も近いものになる
実際:近似索引を使うと、本当に近い候補を取りこぼすことがあります。取りこぼしの割合は索引の設定で変わります。 - 誤解:数値にしてあるので、元の文章は漏れない
実際:OWASP は、埋め込みから元の情報を相当程度復元する攻撃(エンベディング反転)をリスクとして挙げています。ベクトルも元データと同じ機密度で扱います。
ベクトルデータベースを使うときの注意点
- 埋め込みモデルをそろえる:保存時と検索時で違うモデルを使うと、距離に意味がなくなります。モデルを替えるときは全件を作り直します。
- 次元数を合わせる:列の定義で決めた次元数(
vector(3)の 3 にあたる数)と、モデルが出すベクトルの長さが一致している必要があります。 - 権限で絞り込む:OWASP の LLM08:2025 は、利用者ごとのアクセス制御が甘いと、別の部署やテナントの文書が検索結果に混ざる危険を指摘しています。部署や公開範囲をメタデータとして持たせ、検索条件に含めます。
- 入れる文書を選ぶ:出どころの分からない文書を混ぜると、誤った内容や悪意ある指示が検索結果に乗ります。
関連用語
関連記事
出典・参考資料
よくある質問
Q1. ベクトルデータベースとは何ですか?
文章や画像を数値の列(ベクトル)にして保存し、意味の近いものを探し出せるデータベースです。言葉が違っても内容が似ている文書を見つけられるので、RAGの検索先としてよく使われます。
Q2. 普通のデータベースとは何が違いますか?
普通のデータベースは値が一致するか、条件を満たすかで行を探します。ベクトルデータベースはベクトル同士の距離を測り、近い順に並べて返します。
Q3. PostgreSQLでも使えますか?
pgvectorという拡張機能を入れると、vector型の列を持つ表を作り、距離の近い順に並べて取り出せます。索引を作らなければ全件を比べる正確な検索、HNSWなどの索引を作ると近似検索になります。
Q4. 保存するのは数値だけなので、情報漏えいの心配はありませんか?
心配はあります。埋め込みから元の内容を推測する攻撃が知られており、権限のない利用者の検索結果に他部署の文書が混ざる事故も起こりえます。元データと同じ機密度で扱い、検索にもアクセス制御をかけます。