はじめに
エージェントは、独自の 知識ベース を持っていればより強力になります。 RAG (検索拡張生成) を使用すると、エージェントは対応する前に文書、データベース、知識ベースから情報を検索できるため、幻覚が減り、精度が向上します。
1. RAG パイプラインの概要
Documents → Chunking → Embedding → Vector Store → Retrieval → LLM → Answer
2. ChromaDBによる実装
import chromadb
from openai import OpenAI
client = OpenAI()
chroma = chromadb.PersistentClient(path="./agent_knowledge")
collection = chroma.get_or_create_collection("docs")
def add_documents(texts, metadatas=None):
embeddings = get_embeddings(texts)
collection.add(
documents=texts,
embeddings=embeddings,
ids=[f"doc_{i}" for i in range(len(texts))],
metadatas=metadatas,
)
def search_knowledge(query, n_results=5):
query_embedding = get_embeddings([query])[0]
results = collection.query(
query_embeddings=[query_embedding],
n_results=n_results,
)
return results["documents"][0]
3. エージェント ツールとしての RAG
@registry.register("search_knowledge", "Tìm kiếm trong knowledge base", {...})
def search_knowledge_tool(query: str) -> str:
results = search_knowledge(query, n_results=3)
return "\n---\n".join(results)
概要
- RAG = エージェントがプライベートナレッジベースにアクセスできるようにします
- チャンク戦略は取得品質に影響します
- ChromaDB と Qdrant は、最も人気のある 2 つの DB ベクトルです
- ハイブリッド検索 (セマンティック + キーワード) により最良の結果が得られます
演習
- ChromaDB を使用して 100 以上のドキュメント用の RAG パイプラインを構築する
- チャンク化戦略の比較: 固定サイズ、再帰、セマンティック
- ハイブリッド検索の実装 (セマンティック + BM25)
- レッスン 6 の RAG ツールを SimpleAgent に統合します。