Chuyển đến nội dung chính

第 7 課:以代理人為導向的 RAG — 連結到知識庫

為代理程式建立 RAG 管道:文件載入、分塊策略、嵌入模型、向量儲存(ChromaDB、Qdrant)。語義搜尋與關鍵字搜尋。混合檢索。

🧠 人工智慧與機器學習 — 第 6 課 第 7 課:以代理人為導向的 RAG — 連結知識 基地

建構 AI 代理:從零到生產

第 3 部分:RAG 和內存 — 為 Agent 提供內存

亞洲開發網

簡介

當代理商擁有自己的知識庫時,他們會變得更強大。 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 是兩個最受歡迎的 DB 向量
  • 混合搜尋(語義+關鍵字)給出最佳結果

練習

  1. 使用 ChromaDB 為 100 多個文件建置 RAG 管道
  2. 比較分塊策略:固定大小、遞歸、語意 3.實現混合搜尋(語意+BM25)
  3. 將第 6 課中的 RAG 工具整合到 SimpleAgent 中