ベクターデータベースとRAGの概要
RAG(Retrieval-Augmented Generation)は、LLMに独自のドキュメント・データを参照させるアーキテクチャです。社内規定・製品マニュアル・FAQなどのカスタムデータをLLMの知識ベースとして活用できます。ベクターデータベースはRAGシステムの核心をなすコンポーネントで、テキストのベクトル表現を保存し高速に類似検索を行います。
RAGシステムの基本構成
- インデックス化:ドキュメントをチャンク(段落・文)に分割
- Embedding生成:各チャンクをEmbeddings APIでベクトルに変換
- ベクターDB保存:ベクトルとメタデータをベクターDBに保存
- 検索:ユーザーの質問をベクトル化し、類似のチャンクを検索
- LLMに渡す:関連チャンクをコンテキストとしてLLMに渡し回答生成
主要ベクターDBの比較
Pinecone
- タイプ:フルマネージドSaaS
- 無料枠:100万ベクトルまで
- 特徴:セットアップが簡単・高い可用性・メタデータフィルタリング
- 向いているケース:素早くRAGを構築したい場合
Weaviate
- タイプ:オープンソース(セルフホスト可)/ クラウド
- 特徴:グラフ構造・複雑なフィルタリング・Module対応(Cohere・OpenAI連携)
Qdrant
- タイプ:オープンソース / クラウド
- 特徴:高パフォーマンス・Rust実装・スパースベクター対応
pgvector(Postgres拡張)
- 特徴:既存Postgresデータベースで利用可能・SQLで検索
- 向いているケース:既にPostgresを使っていて小〜中規模のベクター検索が必要な場合
RAGシステムの実装例(OpenAI + Pinecone)
import OpenAI from 'openai';
import { Pinecone } from '@pinecone-database/pinecone';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const pinecone = new Pinecone({ apiKey: process.env.PINECONE_API_KEY });
const index = pinecone.index('my-rag-index');
// 1. ドキュメントをEmbeddingしてPineconeに保存
const embedDoc = async (text, id) => {
const embedding = await openai.embeddings.create({
model: 'text-embedding-3-small',
input: text,
});
await index.upsert([{
id,
values: embedding.data[0].embedding,
metadata: { text }
}]);
};
// 2. ユーザーの質問に関連するドキュメントを検索
const searchDocs = async (query) => {
const queryEmbedding = await openai.embeddings.create({
model: 'text-embedding-3-small',
input: query
});
const results = await index.query({
vector: queryEmbedding.data[0].embedding,
topK: 5,
includeMetadata: true
});
return results.matches.map(m => m.metadata.text);
};
// 3. 関連ドキュメントをコンテキストにGPTで回答
const ragQuery = async (question) => {
const contexts = await searchDocs(question);
const response = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: `以下のコンテキストを参考に回答してください:
${contexts.join('
')}` },
{ role: 'user', content: question }
]
});
return response.choices[0].message.content;
};
まとめ
ベクターデータベースとRAGシステムは、LLMを自社のドキュメント・データに特化させるための重要な技術です。Pineconeは素早く始められるSaaSとして最初の選択肢になりやすく、セルフホストならWeaviateやQdrantが有力です。既にPostgresを使っているシステムではpgvectorが低コストで始められます。社内FAQ・製品サポート・知識ベース検索など多くのビジネス課題に応用できます。