前回 RAG の流れを見たけれど、その中核を支える技術がベクトルDB(ベクトルデータベース)よ。
今日はそれをじっくり見ていきましょう。
普通のデータベースとどう違うんですか?
従来のデータベース(RDB)はキーワードの完全一致や部分一致で検索するわよね。
ベクトルデータベースは、テキストを埋め込みベクトルに変換して格納し、意味的な類似度で検索するの。
たとえば「車のトラブル」で検索したら、「自動車の故障」や「クルマの調子が悪い」という文書もヒットする、ということですよね。
キーワードが一致しなくても、意味が近ければ検索できるのが強みです。
どうやって「意味が近い」って判断するの?
テキストを埋め込みモデル(Sentence-BERT、OpenAI text-embedding、Cohere Embed など)でベクトルに変換して、ベクトル間のコサイン類似度や距離を計算するの。
値が近いほど意味が似ているわ。
すご〜い、方向が似てるベクトル=意味が似てる、って発想か!
そう。
そして数百万・数十億の文書を高速に検索するために、近似最近傍探索(ANN: Approximate Nearest Neighbor)という技法が使われているの。
HNSW や IVF などのアルゴリズムね。
補足: ANN は完全一致ではなく近似解を返す代わりに、速度を大幅に向上させます。
数ミリ秒で1億件の中から類似候補を見つけられる、という性能です。
代表的なベクトル DB サービスにはPinecone、Weaviate、ChromaDB、Milvus、Qdrant などがあります。
PostgreSQL の pgvector 拡張、Elasticsearch のベクトル検索機能など、既存 DB の拡張としても使えますね。
じゃあ自由研究で部活規則集を RAG 化するとき、どれ使えばいいですか?
初学者なら Chroma か Qdrant のセルフホスト版がオススメ。
数十〜数百ファイルなら無料で動かせるわ。
業務用途で数千万件超なら Pinecone 等のマネージドサービスが楽ね。
1億件からミリ秒?
すげー、魔法だよ…。
料理のレシピ検索アプリも、これ使えば「玉ねぎ余ってて簡単にできる中華」みたいな自然文でヒットするようになるってこと?
ましろちゃん、いい応用アイデアね。
実際、食材入力から意味的にレシピを検索するサービスや、類似画像で商品検索する EC サイトで、ベクトル DB がフル活用されているわ。
補足として、ベクトル DB のデータ移行や、複数モデルの埋め込みをどう統合するか、という運用課題もあります。
異なる埋め込みモデルのベクトル空間は直接比較できないので、設計時に選ぶ埋め込みモデルは慎重に決める必要があります。
そう、埋め込みモデルの選択が実務では大きな設計判断。
文の長さ・多言語対応・コスト・精度のバランスで選ぶ、というのが現場ノウハウね。
試験では「ベクトル DB=意味で検索」「コサイン類似度」「代表例の名前」を覚えれば十分よ。
確認クイズ
ベクトルデータベースの特徴として最も適切なものはどれか。
- キーワードの完全一致でのみ検索できる
- 意味的な類似度に基づいて検索できる
- 画像のみを格納できる
- リレーショナルデータのみを扱う
こたえを見る
正解: 2. 意味的な類似度に基づいて検索できる
ベクトルデータベースはテキストを埋め込みベクトルに変換し、意味的な類似度(コサイン類似度など)に基づいて検索できるのが特徴です。完全一致・画像限定・RDBのみはいずれも不正確です。