知识库集成指南
在AgentRun中,知识库功能允许您将外部专业文档或私有数据关联至 AI Agent。通过知识库集成,Agent 在执行任务时可以检索相关上下文,从而显著提升回答的准确性和时效性。
目前 AgentRun 支持以下知识库类型。其中阿里云百炼与 RAGFlow 通过连接已有知识库接入,需要您先在对应平台中创建好知识库;Tablestore 知识库与 AnalyticDB PostgreSQL 知识库为自建知识库,通过创建知识库直接在 AgentRun 中创建。
阿里云百炼:连接已在阿里云百炼中创建好的知识库,支持多选。
RAGFlow:连接自建或已部署的 RAGFlow 服务,需提供 BaseURL、API-KEY 和 Dataset ID。
Tablestore 知识库:由 AgentRun 自动创建并配置 Tablestore 实例,或指定当前地域已有的 Tablestore 实例来承载向量与全文索引,无需自行准备向量数据库。
AnalyticDB PostgreSQL 知识库:使用您已有的 AnalyticDB PostgreSQL 实例,在指定命名空间下创建文档集合,适用于希望知识库数据与自有实例统一管理的场景。
绑定知识库
登录AgentRun 控制台,在左侧导航栏选择模型与工具 > 知识库;
在知识库列表页单击创建知识库,选择知识库的接入方式:
连接已有知识库:接入已在阿里云百炼或 RAGFlow 中创建好的知识库,配置方法参见下文「绑定阿里云百炼知识库」和「绑定 RAGFlow 知识库」。
创建知识库:在 AgentRun 中创建自建知识库。此时还需选择配置方式:自动配置固定使用 Tablestore,由 AgentRun 自动创建并配置实例;自定义配置需自行选择知识库类型为 Tablestore 知识库或 AnalyticDB PostgreSQL 知识库。配置方法参见下文「创建 Tablestore 知识库」和「创建 AnalyticDB PostgreSQL 知识库」。
自建知识库的可用地域以控制台实际展示为准,部分地域暂不支持新建知识库:cn-chengdu、cn-zhangjiakou 等地域不支持新建知识库。
绑定阿里云百炼知识库
如果您使用阿里云百炼作为 RAG 服务,请配置以下参数:
知识库名称:输入自定义的知识库显示名称。
描述:简述该知识库的用途或涵盖的数据范围。
知识库类型:选择百炼。
工作空间:首次使用时,点击默认业务空间的立即授权按钮,开启授权并确认业务空间。
知识库:从下拉列表中选择已在阿里云百炼知识库创建好的知识库(支持多选),并根据业务需要修改检索配置。
点击创建知识库,即可将您的阿里云百炼知识库绑定至AgentRun平台。
绑定 RAGFlow 知识库
RAGFlow 接入已进入维护期。新用户后续可通过 MCP 或 SDK 自主接入,平台不再提供产品化支持。
RAGFlow 是一款开源的深度文档理解引擎,绑定时请填写以下信息:
知识库名称:输入自定义的知识库显示名称。
描述:简述该知识库的用途或涵盖的数据范围。
知识库类型:选择RAGFlow。
RAGFlow配置(可参考控制台指引,快速通过SAE部署RAGFlow):
BaseURL:填写 RAGFlow 服务的 API 端点地址。
DataSet IDs:填写需要关联的数据集 ID(支持多个 ID)。
凭证配置:选择已保存的RAGFlow的API-KEY凭证。
说明关于如何获取上述 RAGFlow 配置参数,请参考本文如何获取 RAGFlow 配置信息。
检索配置:根据业务需要修改相似度阈值和向量相似度权重。
点击创建知识库,即可将您自建的RAGFlow知识库绑定至AgentRun平台。
创建 Tablestore 知识库
如果您没有现成的向量数据库,可以选择 Tablestore 知识库,由 AgentRun 负责实例的创建与索引配置。在知识库列表页单击创建知识库,接入方式选择创建知识库,然后按以下两种配置方式之一创建:
自动配置:固定使用 Tablestore,无需选择知识库类型和实例。提交前 AgentRun 会检查 Tablestore 服务的开通状态,并检查 AliyunOTSAccessingOSSRole 角色;角色不存在时会中止创建并引导您完成授权。授权完成后,AgentRun 自动创建一个名称形如
knowledge-xxxx、集群类型为 SSD 的 Tablestore 实例,并为其打上source=agentrun和scene=knowledgebase标签。自定义配置:知识库类型选择 Tablestore 知识库,并从 Tablestore 实例下拉列表中选择当前地域已有的实例。
配置以下参数:
配置项 | 是否必填 | 默认值 | 说明 |
知识库名称 | 是 | 无 | 输入自定义的知识库显示名称,提交时会校验名称是否已被占用。 |
描述 | 否 | 无 | 简述该知识库的用途或涵盖的数据范围。 |
工作空间 | 否 | 当前工作空间 | 未指定时使用默认工作空间。 |
Tablestore 实例 | 自定义配置时必填 | 无 | 列出当前地域已有的 Tablestore 实例。自动配置时不展示该配置项,实例由 AgentRun 自动创建。 |
标签 | 否 | 无 | 用于知识库资源的分类和管理,提交时空标签会被忽略。 |
Embedding Model | 是 | text-embedding-v4 | 可选 text-embedding-v3、text-embedding-v4。该选择决定 Vector Dimension 的可选值。 |
Vector Dimension | 是 | 1024 | text-embedding-v3 可选 1024、768、512、256、128、64;text-embedding-v4 可选 2048、1536、1024、768、512、256、128、64。 |
Metadata Configuration | 否 | 无 | 以字段名与字段类型定义文档的元数据字段,类型可选 string、long、double、boolean、date 及对应的 list 类型(string_list、long_list、double_list、boolean_list、date_list)。 |
元数据过滤条件 | 否 | 无 | 仅在 Metadata Configuration 中定义了有效字段后展示。支持 andAll、orAll 两种组合方式,条件运算符包括 equals、notEquals、greaterThan、greaterThanOrEquals、lessThan、lessThanOrEquals、in、notIn、startsWith、stringContains、listContains。 |
在检索配置中设置知识库的默认检索行为,创建后可在知识库详情页调整:
配置项 | 默认值 | 说明 |
检索类型 | 同时启用向量检索和全文检索 | 至少选择一种检索类型。 |
TopK | 20 | 单次检索返回的结果数量,取值范围 1~100。 |
召回算法 | RRF | 可选 RRF、WEIGHT、MODEL,决定向量检索与全文检索结果的融合方式。 |
RRF 参数 k | 60 | 召回算法为 RRF 时展示,取值范围 2~100。 |
服务商 | bailian | 召回算法为 MODEL 时展示,当前可选 bailian。 |
重排模型 | gte-rerank-v2 | 召回算法为 MODEL 时展示,当前可选 gte-rerank-v2。 |
向量权重 | 0.7 | 召回算法为 WEIGHT 时展示,取值范围 0~1,全文检索权重为 1 减去向量权重。 |
提交后,AgentRun 先在 Tablestore 中创建知识库,再在 AgentRun 中生成对应的知识库记录。创建完成后,可在知识库详情页导入文档并验证召回效果,参见下文「自建知识库的文档管理与召回测试」。
关于 Embedding 模型的接入与配置,请参见向量模型-添加与配置 Embedding 模型。
创建 AnalyticDB PostgreSQL 知识库
AnalyticDB PostgreSQL 接入已进入维护期。新用户后续可通过 MCP 或 SDK 自主接入,平台不再提供产品化支持。
如果您已有 AnalyticDB PostgreSQL 实例,并希望知识库数据保存在自有实例中,可以选择 AnalyticDB PostgreSQL 知识库。创建前请确认:已有可用的 AnalyticDB PostgreSQL 实例、可访问该实例的账号与密码、以及实例中已创建的命名空间及其密码(系统命名空间不会出现在候选列表中)。
在创建知识库面板中依次选择:创建方式为创建知识库、配置方式为自定义配置、知识库类型为 AnalyticDB PostgreSQL 知识库,然后配置以下参数:
配置项 | 是否必填 | 默认值 | 说明 |
知识库名称 | 是 | 无 | 输入自定义的知识库显示名称,提交时会校验名称是否已被占用。 |
描述 | 否 | 无 | 简述该知识库的用途或涵盖的数据范围。 |
工作空间 | 否 | 当前工作空间 | 未指定时使用默认工作空间。 |
AnalyticDB PostgreSQL 实例 | 是 | 无 | 列出当前地域已有的实例,支持按实例 ID 和实例描述搜索。若当前地域没有可用实例,可从下拉列表跳转到AnalyticDB PostgreSQL 购买页创建实例。 |
用户名 | 是 | 无 | 选择实例后展示,用于访问该实例并读取命名空间列表。 |
密码 | 是 | 无 | 选择实例后展示,与用户名一起校验。账号或密码错误时,用户名和密码会同时提示错误。 |
命名空间 | 是 | 无 | 填写用户名和密码后展示可选的命名空间列表,其中不包含 public、htap、pgsearch 等系统命名空间。 |
命名空间密码 | 是 | 无 | 用于访问所选命名空间。修改命名空间或命名空间密码后会自动校验,密码不正确时提示「命名空间密码不正确」。 |
元数据配置 | 否 | 无 | 以字段名与字段类型定义文档的元数据字段,类型可选 text、bool、integer、double precision。 |
Embedding Model | 否 | text-embedding-v3 | 可选 text-embedding-v1、text-embedding-v2、text-embedding-v3、text-embedding-v4、multimodal-embedding-v1。 |
Index Algorithm | 否 | cosine | 向量索引的距离算法,可选 l2、ip、cosine。 |
用户名、密码、元数据配置、Embedding Model 和 Index Algorithm 均在选择实例后才展示。
在检索配置中设置知识库的默认检索行为,创建后可在知识库详情页调整:
配置项 | 默认值 | 说明 |
全文检索 | 关闭 | 开启后可配置召回窗口和双路召回算法,与向量检索结果融合。 |
TopK | 20 | 单次检索返回的结果数量,取值范围 1~100。 |
启用重排因子 | 关闭 | 关闭时不提交重排因子参数。 |
RerankFactor | 2.0 | 启用重排因子后展示,取值范围 1.01~5。 |
启用重排模型 | 关闭 | 仅在启用重排因子后展示。 |
重排模型 | qwen3-rerank | 启用重排模型后展示,可选 qwen3-rerank、gte-rerank-v2。 |
召回窗口左边界 / 右边界 | -5 / 5 | 开启全文检索并启用召回窗口后展示,左边界取值范围 -10~0,右边界取值范围 0~10。 |
双路召回算法 | RRF | 开启全文检索后展示,可选 RRF、Weight、Cascaded。 |
RRF 参数 k | 60 | 双路召回算法为 RRF 时展示,最小值为 2。 |
Weight 参数 alpha | 0.5 | 双路召回算法为 Weight 时展示,取值范围 0~1。 |
过滤条件 | 无 | 检索时附加的过滤表达式,留空表示不过滤。 |
提交后,AgentRun 先在 AnalyticDB PostgreSQL 实例的指定命名空间中创建文档集合,再在 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/quickstart/manual 配置好相应认证信息和环境变量
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()自建知识库的文档管理与召回测试
创建 Tablestore 知识库或 AnalyticDB PostgreSQL 知识库后,可以在知识库详情页导入文档并验证检索效果,再决定是否调整检索参数。在知识库列表中单击知识库名称进入详情页,页面包含以下页签:
概览与配置:查看知识库的基本信息,并修改检索配置。
文档管理:管理知识库中的文档。仅自建知识库(Tablestore 知识库、AnalyticDB PostgreSQL 知识库)展示该页签。
召回测试:用真实查询验证召回效果。仅自建知识库展示该页签。
集成与案例:查看在 Agent 中集成该知识库的方式与示例。
通过召回测试验证检索配置是否满足业务需要:
在知识库详情页切换到召回测试页签。
输入查询文本,单击开始测试。查询文本为空时开始测试不可用。
查看返回的召回结果与召回效果,判断当前检索配置是否命中预期文档。
如需调整,在检索参数中修改 TopK、召回算法、向量权重等参数后重新测试;确认效果后单击保存检索参数,将参数保存到该知识库。
绑定的阿里云百炼和 RAGFlow 知识库由对应平台管理文档与召回策略,AgentRun 侧不提供文档管理和召回测试页签。
注意事项
网络连通性:如果您部署的是私有化 RAGFlow,请确保 AgentRun 服务所在的服务器环境能够正常访问 RAGFlow 的
BaseURL。API 密钥时效:请定期检查 API-KEY 是否有效。若在RAGFlow中重置了 Key,需同步在 AgentRun 后台进行更新。
语义一致性:建议知识库所采用的 Embedding 模型与 Agent 实际使用的 LLM 在语义理解能力上保持匹配,以获得最佳的检索召回效果。