知识库¶
知识库用于检索增强。
源码¶
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