在 AgentCore 中连接百炼知识库

更新时间:
复制 MD 格式

AgentCore 知识库支持连接已有的阿里云百炼知识库,连接完成后 Agent 可以检索知识库中的相关文本切片,并将检索结果作为回答问题的依据。AgentCore 仅访问和使用外部知识库,知识库内容请在百炼控制台管理。

使用限制

  • 当前仅支持百炼华北 2(北京)地域。

  • 一个知识库连接对应一个百炼业务空间中的一个知识库,需要使用多个知识库时请分别创建多个连接。

  • 当前只提供只读检索能力,不创建知识库,不会把文档复制到 AgentCore,也不负责文档的新增、更新、删除、解析或索引构建。

  • 文档解析、切片、Embedding、索引和知识库默认检索行为仍由百炼管理。

  • AgentCore 不向模型开放 TopK、重排模型和重排阈值等参数,这些参数由百炼侧的知识库配置和服务默认行为决定。

前提条件

开始之前,请确认 AgentCore 中已有可用的目标 Workspace,并完成以下准备工作。

创建并准备百炼知识库

  1. 在百炼华北 2(北京)地域创建业务空间和知识库,创建和管理方法见百炼知识库。

  2. 向知识库导入文档或结构化数据。

  3. 等待文件解析和索引构建完成。

    建议先在百炼控制台执行命中测试,确认查询能够召回预期内容。

准备执行角色

AgentCore 使用函数计算(FC)执行角色访问百炼,FC 基于该角色生成临时 STS 凭证,无需填写长期 AccessKey。执行角色默认推荐 AliyunAgentCoreMcpServerDefaultRole,需具备调用百炼知识库检索 API 的权限(例如 AliyunBailianDataFullAccess 或等效的自定义策略),并在百炼平台获得目标业务空间的访问授权,缺少任意一层都会导致检索失败。

  • 快捷创建:页面提示「该执行角色尚未创建」时,单击快捷创建角色,再单击刷新策略;可单击查看已关联策略确认已附加的策略。

  • 自行创建:前往 RAM 创建角色,可信主体类型选云服务、信任主体选函数计算,并附加 AliyunBailianDataFullAccess 或等效策略;也可在下拉列表中选择其他已有角色。

  • 百炼授权:单击说明中的访问授权链接,到百炼平台完成目标业务空间授权,否则检索将失败。

RAM API 权限

为执行角色授予下列任一权限策略,推荐优先采用最小权限的自定义策略:

  • 推荐:包含 sfm:Retrieve 的自定义策略。

  • 备选:系统策略 AliyunBailianDataFullAccess,使用前请评估其权限范围。

    AliyunBailianDataReadOnlyAccess 不包含 Retrieve API 所需权限,不能用于该知识库连接。最小自定义策略示例如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sfm:Retrieve",
      "Resource": "*"
    }
  ]
}

Retrieve API 当前不支持资源级授权,因此 Resource 需要填写 *,接口参数与授权范围见调用 Retrieve API 检索知识库和百炼 RAM 权限。

百炼业务空间权限

  1. 使用具有业务空间管理权限的账号进入百炼控制台。

  2. 进入账号管理或权限管理页面。

  3. 将执行角色作为 RAM 角色加入目标业务空间。

  4. 至少为该角色授予知识库-操作和应用数据-操作;控制台文案如有调整,请选择对应的知识库和应用数据操作权限。

    RAM 权限策略与百炼业务空间权限是两套独立的权限体系,为角色添加 AliyunBailianDataFullAccess 后仍需将角色加入目标业务空间,两套体系的授权方式见百炼权限管理。

创建知识库连接

  1. 登录 AgentCore 控制台,进入目标 Workspace。

  2. 在左侧导航栏选择资产管理 > 知识库。

  3. 在知识库连接页面,单击创建知识库连接。

  4. 选择百炼知识库,然后单击连接。

  5. 填写基本信息和连接配置。

  6. 单击安装并部署,等待知识库连接创建完成。

  7. 返回知识库连接列表,确认连接状态正常。

    第 5 步中各配置项的说明如下:

配置项

是否必填

说明

知识库连接名称

是

AgentCore 中用于识别该连接的名称。建议使用能够体现业务用途的名称。

描述

否

说明知识库内容、适用范围或使用限制,便于后续选择。

百炼地域

是

选择华北 2(北京)。

百炼业务空间

是

选择知识库所属的业务空间,候选项由所选地域决定。

百炼知识库

是

选择需要连接的知识库。一个连接只能选择一个知识库。

执行角色

是

选择具有 sfm:Retrieve 权限且已加入目标业务空间的 FC 执行角色。

日志配置

否

启用后选择日志服务(SLS)Project 和 Logstore,用于采集运行日志和指标。

连接配置创建后不能直接修改,需要更换地域、业务空间、知识库或执行角色时,请返回知识库连接页面删除原连接后重新创建。

如果业务空间或知识库下拉列表为空,请参见创建连接时看不到业务空间或知识库排查。

在 Agent 中使用知识库

托管Harness Agent使用知识库

  1. 在 Agent 的工具配置中添加已经创建的百炼知识库连接。

  2. 保存并重新发布或启动 Agent,使最新配置生效。

  3. 与 Agent 对话,调用知识库进行测试,例如:

请先查询产品知识库,再说明产品的安装步骤,并标明依据的文档内容。

高代码 Agent使用知识库

当您已经在 AgentCore 上安装好知识库模板后,您可以在 SDK 中连接并调用您的知识库。

在 SDK 中通过 mcp 连接并查询您的百炼知识库:

import asyncio
import os
from agentcore import AsyncAgentCore

KNOWLEDGE_BASE_NAME = os.environ["KNOWLEDGE_BASE_NAME"]

async def main():
    async with AsyncAgentCore.auto() as core:
        mcp = await core.mcp(KNOWLEDGE_BASE_NAME)
        result = await mcp.call_tool(
            "search_bailian_knowledgebase",
            {"query": "公司的产品如何安装?"},
        )
        print(result)
asyncio.run(main())

检索参数与结果

知识库连接底层通过检索工具 search_bailian_knowledgebase 提供检索能力。最简单的检索只需要一段非空查询文本,还支持按百炼知识库中的文档元数据过滤结果。通常无需在提示词中要求模型生成技术参数,建议在提示词中说明知识库的用途、何时检索,以及回答是否需要引用来源。该工具包含以下参数:

参数

类型

是否必填

说明

query

string

是

问题或检索文本,必须是非空字符串。

search_filters

array<object> 或 null

否

百炼 SearchFilters,不需要过滤时省略或传 null。

元数据过滤

过滤条件使用 search_filters 表达。每个数组元素是一个过滤组,过滤组之间以及同一个过滤组内不同字段之间均使用 AND 关系。

精确匹配示例:

{
  "query": "查询平台团队的高级研发人员",
  "search_filters": [
    {
      "department": "平台研发",
      "level": 3
    }
  ]
}

多值匹配与范围匹配示例:

{
  "query": "查询成年研发人员",
  "search_filters": [
    {
      "department": ["研发", "平台"]
    },
    {
      "age": {
        "gte": 18,
        "lt": 60
      }
    }
  ]
}

支持的运算符如下:

运算符

含义

eq、neq

等于、不等于

gt、gte

大于、大于等于

lt、lte

小于、小于等于

like

字符串模糊匹配

过滤字段必须是知识库中实际存在且可用于过滤的元数据字段。标签字段 tags 的数组值使用 OR 关系,如需同时满足多个标签,请将标签拆到不同过滤组中;过滤条件的完整语法见使用 SearchFilters 提高知识库召回准确性。

返回结果

检索成功时返回相关文本切片、相关性得分和文档元数据;没有命中时,结果数组可能为空。

{
  "data": [
    {
      "text": "第一步:下载并安装客户端……",
      "score": 0.91,
      "metadata": {
        "source": "product-manual.md",
        "category": "安装指南"
      }
    }
  ],
  "query": "产品的安装步骤是什么"
}

字段

说明

data

检索结果数组。

data[].text

文本切片内容。

data[].score

百炼返回的相关性得分。

data[].metadata

切片关联的文档元数据,具体字段取决于知识库。

query

实际执行的查询文本。

检索失败时会返回工具调用错误。百炼服务错误通常包含状态、错误码、错误信息和 RequestId,排查问题时请保留 RequestId。

管理知识库连接

知识库连接的创建、查看和管理都在 AgentCore 的资产管理 > 知识库页面完成。知识库连接底层通过 MCP 提供检索能力,因此同一连接也会出现在资产管理 > 工具管理 > 我的工具中,工具广场中也会展示百炼知识库模板。工具管理入口主要用于以下场景:

  • 查看底层 MCP 详情和检索工具参数。

  • 查看运行状态或日志配置。

  • 面向开发者进行工具调试和二次开发。

    通过工具广场安装的知识库模板同样会显示在知识库连接列表中,建议始终从知识库入口创建和管理连接。

常见问题

创建连接时看不到业务空间或知识库

  • 确认已选择华北 2(北京)。

  • 确认当前登录账号有权查看目标业务空间。

  • 确认知识库已经创建完成。

  • 确认知识库与所选业务空间一致。

返回 sfm:Retrieve 无权限

依次检查以下几点:

  1. 执行角色是否具有 sfm:Retrieve,或是否已绑定 AliyunBailianDataFullAccess。

  2. 是否误用了不包含 Retrieve 的 AliyunBailianDataReadOnlyAccess。

  3. 执行角色是否已作为 RAM 角色加入目标百炼业务空间。

  4. 业务空间授权是否包含知识库及应用数据的操作权限。

  5. 创建连接时选择的业务空间和知识库是否匹配。

检索成功但没有召回内容

  • 先在百炼控制台使用同一查询执行命中测试。

  • 确认文档解析和索引构建已完成。

  • 暂时移除元数据过滤,确认是否因过滤条件过严导致空结果。

  • 检查过滤字段名、字段类型和值是否与知识库元数据一致。

  • 尝试在问题中增加产品名、术语或文档标题等上下文。

Agent 没有使用知识库

  • 确认知识库连接状态正常。

  • 确认该连接已经添加到当前 Agent。

  • 重新保存并发布 Agent,使最新配置生效。

  • 检查提示词中是否已说明知识库用途和需要检索的场景。

安全建议

  • 优先使用只包含 sfm:Retrieve 的自定义策略实现最小权限;使用系统策略前,请评估 AliyunBailianDataFullAccess 的权限范围。

  • 使用执行角色和临时 STS 凭证,不要配置长期 AccessKey。

  • 不要将底层 FC 公网地址提供给外部调用方。

  • 建议启用日志并设置合理的保留期限,但不要记录凭证明文或敏感知识内容。

相关文档