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

レッスン 7: エージェント用 RAG — ナレッジ ベースへの接続

エージェント用の RAG パイプラインを構築します: ドキュメントの読み込み、チャンキング戦略、埋め込みモデル、ベクター ストア (ChromaDB、Qdrant)。セマンティック検索とキーワード検索。ハイブリッド検索。

🧠 AI と ML — レッスン 6 レッスン 7: エージェント向け RAG — 知識の接続 ベース

AI エージェントの構築: ゼロから本番環境まで

パート 3: RAG とメモリ — エージェントにメモリを与える

xdev.asia

はじめに

エージェントは、独自の 知識ベース を持っていればより強力になります。 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 ベクトルです
  • ハイブリッド検索 (セマンティック + キーワード) により最良の結果が得られます

演習

  1. ChromaDB を使用して 100 以上のドキュメント用の RAG パイプラインを構築する
  2. チャンク化戦略の比較: 固定サイズ、再帰、セマンティック
  3. ハイブリッド検索の実装 (セマンティック + BM25)
  4. レッスン 6 の RAG ツールを SimpleAgent に統合します。