知识库集成指南

更新时间:
复制 MD 格式

在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 实例,在指定命名空间下创建文档集合,适用于希望知识库数据与自有实例统一管理的场景。

绑定知识库

  1. 登录AgentRun 控制台,在左侧导航栏选择模型与工具 > 知识库;

  2. 在知识库列表页单击创建知识库,选择知识库的接入方式:

    • 连接已有知识库:接入已在阿里云百炼或 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 中集成该知识库的方式与示例。

通过召回测试验证检索配置是否满足业务需要:

  1. 在知识库详情页切换到召回测试页签。

  2. 输入查询文本,单击开始测试。查询文本为空时开始测试不可用。

  3. 查看返回的召回结果与召回效果,判断当前检索配置是否命中预期文档。

  4. 如需调整,在检索参数中修改 TopK、召回算法、向量权重等参数后重新测试;确认效果后单击保存检索参数,将参数保存到该知识库。

说明

绑定的阿里云百炼和 RAGFlow 知识库由对应平台管理文档与召回策略,AgentRun 侧不提供文档管理和召回测试页签。

注意事项

  • 网络连通性:如果您部署的是私有化 RAGFlow,请确保 AgentRun 服务所在的服务器环境能够正常访问 RAGFlow 的 BaseURL。

  • API 密钥时效:请定期检查 API-KEY 是否有效。若在RAGFlow中重置了 Key,需同步在 AgentRun 后台进行更新。

  • 语义一致性:建议知识库所采用的 Embedding 模型与 Agent 实际使用的 LLM 在语义理解能力上保持匹配,以获得最佳的检索召回效果。