Giới thiệu
Agent mạnh hơn khi có knowledge base riêng. RAG (Retrieval-Augmented Generation) cho phép agent tìm kiếm thông tin từ documents, databases, hoặc knowledge bases trước khi trả lời — giảm hallucination và tăng độ chính xác.
1. RAG Pipeline Overview
Documents → Chunking → Embedding → Vector Store → Retrieval → LLM → Answer
2. Implementation với 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 as Agent Tool
@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)
Tóm tắt
- RAG = cho agent truy cập knowledge base riêng
- Chunking strategy ảnh hưởng chất lượng retrieval
- ChromaDB và Qdrant là 2 vector DB phổ biến nhất
- Hybrid search (semantic + keyword) cho kết quả tốt nhất
Bài tập
- Build RAG pipeline với ChromaDB cho 100+ documents
- So sánh chunking strategies: fixed-size vs recursive vs semantic
- Implement hybrid search (semantic + BM25)
- Tích hợp RAG tool vào SimpleAgent từ bài 6