跳转至

知识库

知识库用于检索增强。

源码

from agently import Agently
from agently.integrations.chromadb import ChromaCollection


## Knowledge Base: Embedding + Retrieval + Answer
def knowledge_base_demo():
    # Embedding agent for vector search
    embedding = Agently.create_agent()
    embedding.set_settings(
        "OpenAICompatible",
        {
            "model": "qwen3-embedding:0.6b",
            "base_url": "http://127.0.0.1:11434/v1/",
            "auth": "nothing",
            "model_type": "embeddings",
        },
    )

    # Build a small knowledge base
    collection = ChromaCollection(
        collection_name="demo",
        embedding_agent=embedding,
    )
    collection.add(
        [
            {
                "document": "Book about Dogs",
                "metadata": {"book_name": "🐶"},
            },
            {
                "document": "Book about cars",
                "metadata": {"book_name": "🚗"},
            },
            {
                "document": "Book about vehicles",
                "metadata": {"book_name": "🚘"},
            },
            {
                "document": "Book about birds",
                "metadata": {"book_name": "🐦‍⬛"},
            },
        ]
    )

    # Query the knowledge base
    query = "Things that can move really fast"
    results = collection.query(query)
    print("[retrieval]", results)

    # Use retrieval results in a normal agent response
    agent = Agently.create_agent()
    agent.set_settings(
        "OpenAICompatible",
        {
            "base_url": "http://127.0.0.1:11434/v1",
            "model": "qwen2.5:7b",
        },
    )
    answer = (
        agent.input(query).info({"retrieval_results": results}).instruct("Answer based on {retrieval_results}.").start()
    )
    print("[answer]", answer)


# knowledge_base_demo()

讲解

  • 分块与向量化是核心步骤。
  • 尽量避免重复建库。

注释解读

  • Idea 表示案例思路
  • Flow 表示执行编排路径
  • Expect 表示预期输出或行为

你学会了什么

  • 理解 knowledge base 的入库/检索流程
  • 知道如何避免重复建库

练习任务

  • 用一个小文本文件建立 knowledge base
  • 检索并把结果注入 prompt