从零开始搭建知识库 · EP05 · 进阶篇(一)Agentic RAG
Agent 应用在能力栈里的位置
「从零开始搭建知识库」系列第五期,进阶篇开篇。EP01 论证建库,EP02 跑通存与找,EP03 验证数据准备,EP04 拧完检索参数面。本期把知识库关联到智能体应用上,八组对照实测 Agent 的决策行为。对照组沿用污染库 zj0knmrbye(8 文档 27 切片,基线与 EP04 留痕逐位一致),实验组新建智能体应用(模型 qwen3.8-max,目录用 bl model list --capability TG 拉取,54 个对话模型)挂同一个库。
先更新一张通道分工表,本期新增一行,并修正一类常见误用:
| 需求 | 正确通道 | 说明 |
|---|---|---|
| 知识库建库 | 百炼控制台(网页) | 含排序模型与 rewrite 开关,建库时定 |
| 知识库检索(参数实验) | bl knowledge retrieve --index-id <id> |
已标 deprecated,参数面完整 |
| 知识库检索(服务化) | bl knowledge search --query <text> --agent-id <id> |
走检索服务,EP04 实测与 retrieve 内核一致 |
| 智能体应用调用 | bl app call --app-id <id> --prompt <text> |
本期新增:应用需控制台创建,关联知识库后 Agent 自主检索 |
| 检索服务直接当应用调 | 不支持 | app call 调检索服务 ID 返回 403 App.AccessDenied,两类资源两条路 |
那个 403 值得展开:拿 EP02 建库时自动创建的检索服务 ID 走 app call,被拒。官方文档口径,旧版 RAG 检索增强应用 2024 年 5 月停止新建,产品路线就是「库挂到智能体应用上」。403 不是鉴权故障,是资源类型边界。
思考链:三段式输出结构
app call 的两个 flag 配合出完整思考链:
bl app call --app-id 32d619eeea744a31ad892e3873afe487 --prompt "报销发票怎么提交" --has-thoughts --stream
实测行为:--has-thoughts 单独用只返回答案,配合 --stream 思考过程才随流吐出。输出分三段:[Thinking](判断,中英文混合)、[Action](工具调用,本期只出现 search_knowledgebase)、[Observation](工具返回,内嵌完整检索 JSON:_score、rewrite 字段、rerank: qwen3-rerank、total: 27)。Observation 相当于把 EP04 的检索实验直接搬进了 Agent 的中间过程,检索层行为完全可观测。
八组对照:检索层与决策层的分工
两条链路的分工一张图说清:左边固定检索,问句、检索、答案三步直通,排序说了算;右边 Agentic RAG,中间多一层 Agent 决策,负责改写问句和仲裁证据,判断说了算。

| 组 | 考题 | 检索层 | Agent 行为 |
|---|---|---|---|
| 1 | 报销发票怎么提交 | 旧版 0.5655 第一 | 思考链「以现行版为准」,答对 |
| 1b | 住宿标准是多少 | 现行版 0.8512 第一 | 排序反转仍答对 |
| 2 | 口语问报销周期 | 对照组现行版掉出 top5 | rewrite 改写 query 后答对 |
| 3 | 新疆买沙发能发货吗 | 烂碎片 0.8305 第一 | 对比粒度差,两层拼接 |
| 4 | 追问 2023 旧版 | 不查库 | 复用上轮检索直接作答 |
| 5 | 跟宜家比运费 | 库内无宜家 | 拒答竞对,转介绍自家 |
| 5b | 运费政策 | 01(满 59,0.6557)与 13(满 99,0.5755)同场 | 静默各取所需,不仲裁 |
| 6 | --pipeline-ids | - | 正确 ID 冗余,假 ID 静默通过 |
三条机制结论。版本冲突:Agent 读现行版「原 2023 年版制度同时废止」这行元信息完成仲裁,排序怎么摆答案都不动。口语问法:服务端 rewrite 把「发票交了之后多久能报下来」改写成「发票报销多久能报下来 报销周期」再进检索,EP04 的 enableRewrite 配置项在这条路径上有了行为证据。碎片霸榜:烂 Excel 碎片格式烂但内容真,决策层把它的条款和好版的细节拼成一个答案。

边界也在表里:组 5b 的两套包邮口径,Agent 静默输出了其中一套。决策层救得了有证据链的冲突,救不了没有元信息的冲突。 库治理欠的账,Agent 替你扛不了。

命令面行为记录
--pipeline-ids:应用已挂库时传正确 ID 冗余,传假 ID(fakeid123)不报错、静默照走挂载库。与 EP04 --rerank-mode 无效值不报错同款模式,参数表里的 flag 不代表服务端校验它。
--session-id:第一轮返回带 Session ID,第二轮带上自动接上下文,云端存储一小时无请求失效。实测组 4 里 Agent 判断「这轮不查」,直接复用上轮检索切片。
另:app call 还支持 --image 与 --file-id,多模态入口,本期未涉及。
与生态其他组件的衔接
- EP04 钩子的兑现:上期预告「把检索接到 Agent 上,看它拿 11 片烂 Excel 怎么办」,本期答案:碎片在 Agent 检索结果里照样霸榜(0.8305),但决策层把格式和事实分开处理了,碎片的内容被采信、格式被无视。烂数据的危害从「检索层天灾」降级为「决策层的可用证据」,前提是内容本身是真的
- 元信息治理(EP03 清单):EP03 的「冲突内容要有优先级标记」在本期从建议升级为实测必要条件,版本冲突有元信息 Agent 能救(组 1),口径冲突没元信息 Agent 静默出错(组 5b)
- 检索命令演进:retrieve deprecated、search 走检索服务(EP04 已验证),本期再确认一条:Agent 应用内嵌的检索走同一套内核(Observation 里的 rerank 字段与分数体系和 knowledge 检索一致),调参结论在 Agent 路径同样适用
- 范式篇(EP06):五期讲的都是「用时现场查」,下期对照「知识提前编译进模型」路线,同一道报销题两种范式对跑
复现路径
npm install -g bailian-cli
bl auth login --api-key sk-xxxxx
bl model list --capability TG
bl app call --app-id 你的应用id --prompt "报销发票怎么提交" --has-thoughts --stream
应用需控制台创建:选模型、关联知识库、开思考过程、发布。审计重点:Observation 里 rewrite 是否生效、检索排序与最终答案是否一致、有没有两份文档同场口径打架的静默选择。
八组 Agent 调用与检索对照均实测执行于百炼 CLI,思考链全文与 request_id 留痕于项目仓库。命令格式可能随版本更新调整,以官方文档为准。API Key 在控制台密钥管理页创建(新用户有免费额度)。