はじめに
RAGを実装するときに必要になるのが「ベクトルデータベース」です。通常のDBがキーワード一致検索なのに対し、ベクトルDBは「意味が近いもの」を検索できます。ChromaDB・Pinecone・Weaviateなどが代表的なツールです。
ベクトル検索とは
文章や単語をベクトル(数値の配列)に変換して、ベクトルの距離(コサイン類似度・ユークリッド距離)で「意味の近さ」を測る検索方法です。「機械学習 始め方」で検索すると「AI学習の入門方法」という文書もヒットします(キーワードは違うが意味が近い)。
ChromaDBをローカルで試す
pip install chromadb sentence-transformers
import chromadb
from chromadb.utils import embedding_functions
# ChromaDBクライアントの作成(ローカル保存)
client = chromadb.PersistentClient(path='./chroma_db')
# 日本語埋め込みモデルを使う
embed_fn = embedding_functions.SentenceTransformerEmbeddingFunction(
model_name='paraphrase-multilingual-MiniLM-L12-v2'
)
# コレクション(テーブルに相当)の作成
collection = client.get_or_create_collection(
name='company_knowledge',
embedding_function=embed_fn
)
# ドキュメントを追加
documents = [
'有給休暇は年20日付与されます。申請はシステムから行います。',
'残業代は実績に基づいて翌月支払われます。',
'在宅勤務は週3日まで申請できます。',
'健康診断は毎年10月に実施されます。',
'Python研修は年2回開催されます。費用は会社負担です。',
]
ids = [f'doc_{i}' for i in range(len(documents))]
collection.add(documents=documents, ids=ids)
print(f'{len(documents)}件追加完了')
# 意味検索
results = collection.query(
query_texts=['休日の申請方法を教えて'],
n_results=2
)
print('\n検索結果:')
for doc, distance in zip(results['documents'][0], results['distances'][0]):
print(f' 類似度: {1 - distance:.3f} | {doc}')
LangChainとChromaDBを組み合わせたRAG
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_anthropic import ChatAnthropic
from langchain.chains import RetrievalQA
# 埋め込みモデル
embeddings = HuggingFaceEmbeddings(
model_name='paraphrase-multilingual-MiniLM-L12-v2'
)
# ChromaDBからベクトルストアを読み込む
vectorstore = Chroma(
persist_directory='./chroma_db',
embedding_function=embeddings
)
# RAGチェーンの作成
llm = ChatAnthropic(model='claude-sonnet-4-20250514', temperature=0)
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(search_kwargs={'k': 3}),
return_source_documents=True
)
# 質問
answer = qa.invoke({'query': '在宅勤務は何日まで申請できますか?'})
print('回答:', answer['result'])
まとめ
ベクトルデータベースはRAGの核心コンポーネントです。ChromaDBはローカルで無料で試せる入門に最適なツールで、本番環境ではPinecone・Weaviate・Qdrantなどのマネージドサービスが使われます。LangChainと組み合わせることで社内文書検索・FAQ自動化・ナレッジベース検索を実装できます。
💼 ITエンジニア転職特化
自分らしく働けるエンジニア転職を目指すなら【strategy career】
年収1000万・残業月30時間以下・リモート可の求人多数
※アフィリエイト広告を含みます
![]()
※本記事にはアフィリエイトリンクが含まれます。


コメント