在AgentRun中,知识库功能允许您将外部专业文档或私有数据关联至 AI Agent。通过知识库集成,Agent 在执行任务时可以检索相关上下文,从而显著提升回答的准确性和时效性。
目前 AgentRun 支持以下知识库类型:
阿里云百炼
RAGFlow
绑定知识库
登录AgentRun 控制台,在顶部菜单栏,点击其他;
在左侧目录选择知识库,单击创建知识库;
绑定阿里云百炼知识库
如果您使用阿里云百炼作为 RAG 服务,请配置以下参数:
知识库名称:输入自定义的知识库显示名称。
描述:简述该知识库的用途或涵盖的数据范围。
知识库类型:选择百炼。
工作空间:首次使用时,点击默认业务空间的立即授权按钮,开启授权并确认业务空间。
知识库:从下拉列表中选择已在阿里云百炼知识库创建好的知识库(支持多选),并根据业务需要修改检索配置。
点击创建知识库,即可将您的阿里云百炼知识库绑定至AgentRun平台。
绑定 RAGFlow 知识库
RAGFlow 是一款开源的深度文档理解引擎,绑定时请填写以下信息:
知识库名称:输入自定义的知识库显示名称。
描述:简述该知识库的用途或涵盖的数据范围。
知识库类型:选择RAGFlow。
RAGFlow配置(可参考控制台指引,快速通过SAE部署RAGFlow):
BaseURL:填写 RAGFlow 服务的 API 端点地址。
DataSet IDs:填写需要关联的数据集 ID(支持多个 ID)。
凭证配置:选择已保存的RAGFlow的API-KEY凭证。
说明关于如何获取上述 RAGFlow 配置参数,请参考本文如何获取 RAGFlow 配置信息。
检索配置:根据业务需要修改相似度阈值和向量相似度权重。
点击创建知识库,即可将您自建的RAGFlow知识库绑定至AgentRun平台。
如何获取 RAGFlow 配置信息
通过SAE部署的RAGFlow,可通过登录RAGFlow平台。若要成功连接RAGFlow,您需要进入 RAGFlow 平台提取以下三个核心信息:
获取 BaseURL
点击右上角用户头像,进入个人设置/账户管理页面。
找到API部分,查看基础请求地址API Server即为BaseURL。

获取 API-KEY
在个人API设置页面中,找到。
复制已有的API KEY,如果没有创建过,点击Create new key按钮进行创建。

参考凭证管理将获取到的API KEY作为访问第三方的凭证绑定在AgentRun平台,注意创建凭证时服务类型选择其他服务。
获取 Dataset ID
点击顶部菜单栏的Knowledge Base。
在列表中找到您想要关联的数据集,点击进入。
检查浏览器地址栏的 URL,或在页面的配置信息栏中找到该数据集的 UUID,即为
Dataset ID。
开发者指南:在 Agent 中集成知识库
绑定知识库后,您可以通过 AgentRun SDK在代码层面调用知识库。
知识库查询代码示例
使用 agentrun.knowledgebase 模块,可以直接检索知识库内容。
from agentrun.knowledgebase import KnowledgeBase
## 获取单知识库,进行查询
knowledgebase = KnowledgeBase.get_by_name("ragflow-test")
single_kb_retrieve_result = knowledgebase.retrieve("<your-query>")
print(single_kb_retrieve_result)
## 获取多知识库,进行查询,支持跨供应商知识库类型检索
multi_kb_retrieve_result = KnowledgeBase.multi_retrieve(
query="<your-query>",
knowledge_base_names=["ragflow-test", "<your-knowledge-base-name-2>"],
)
print(multi_kb_retrieve_result)在 Agent 框架中集成知识库
您可以将知识库作为“工具”,注入到 LangChain 或其他 Agent 框架中,使 AI 具备自动查阅文档的能力。
"""AgentRun 知识库智能体集成代码示例
使用前,请参考https://docs.agent.run/docs/tutorial/quick-start 配置好相应认证信息和环境变量
curl http://127.0.0.1:9000/openai/v1/chat/completions -X POST \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "什么是Serverless?"}], "stream": true}'
"""
import json
import os
from typing import Any
from langchain.agents import create_agent
import pydash
from agentrun import Config
from agentrun.integration.langchain import model
from agentrun.integration.langchain import knowledgebase_toolset
from agentrun.integration.langgraph.agent_converter import AgentRunConverter
from agentrun.knowledgebase import KnowledgeBase
from agentrun.server import AgentRequest, AgentRunServer
from agentrun.server.model import ServerConfig
from agentrun.utils.log import logger
# 请替换为您已经创建的 模型 名称
AGENTRUN_MODEL_SERVICE = os.getenv("AGENTRUN_MODEL_SERVICE", "<your-model-service>")
AGENTRUN_MODEL_NAME = os.getenv("AGENTRUN_MODEL_NAME", "<your-model-name>")
KNOWLEDGE_BASES = os.getenv("AGENTRUN_KNOWLEDGE_BASES", "ragflow-test").split(",")
if AGENTRUN_MODEL_NAME.startswith("<") or not AGENTRUN_MODEL_NAME:
raise ValueError("请将 MODEL_NAME 替换为您已经创建的模型名称")
## 加载知识库工具,知识库可以以工具的方式供Agent进行调用
knowledgebase_tools = []
if KNOWLEDGE_BASES and not KNOWLEDGE_BASES[0].startswith("<"):
knowledgebase_tools = knowledgebase_toolset(
knowledge_base_names=KNOWLEDGE_BASES,
)
else:
logger.warning("KNOWLEDGE_BASES 未设置或未替换,跳过加载知识库工具。")
agent = create_agent(
model=model(AGENTRUN_MODEL_SERVICE, model=AGENTRUN_MODEL_NAME, config=Config(timeout=180)),
tools=[
*knowledgebase_tools, ## 通过工具集成知识库查询能力
],
system_prompt="你是一个 AgentRun 的 AI 专家,可以通过查询知识库文档来回答用户的问题。",
)
async def invoke_agent(request: AgentRequest):
messages = [
{"role": msg.role, "content": msg.content}
for msg in request.messages
]
# 如果配置了知识库,查询知识库并将结果添加到上下文
if KNOWLEDGE_BASES and not KNOWLEDGE_BASES[0].startswith("<"):
# 获取用户最新的消息内容作为查询
user_query = None
for msg in reversed(request.messages):
if msg.role == "user":
user_query = msg.content
break
if user_query:
try:
retrieve_result = await KnowledgeBase.multi_retrieve_async(
query=user_query,
knowledge_base_names=KNOWLEDGE_BASES,
)
# 直接将检索结果添加到上下文
if retrieve_result:
messages.append({
"role": "assistant",
"content": json.dumps(retrieve_result, ensure_ascii=False),
})
except Exception as e:
logger.warning(f"知识库检索失败: {e}")
input: Any = {"messages": messages}
converter = AgentRunConverter()
if request.stream:
async def async_generator():
async for event in agent.astream(input, stream_mode="updates"):
for item in converter.convert(event):
yield item
return async_generator()
else:
result = await agent.ainvoke(input)
return pydash.get(result, "messages[-1].content", "")
AgentRunServer(
invoke_agent=invoke_agent,
config=ServerConfig(
cors_origins=[
"*"
]
),
).start()注意事项
网络连通性:如果您部署的是私有化 RAGFlow,请确保 AgentRun 服务所在的服务器环境能够正常访问 RAGFlow 的
BaseURL。API 密钥时效:请定期检查 API-KEY 是否有效。若在RAGFlow中重置了 Key,需同步在 AgentRun 后台进行更新。
语义一致性:建议知识库所采用的 Embedding 模型与 Agent 实际使用的 LLM 在语义理解能力上保持匹配,以获得最佳的检索召回效果。