用知识问答服务基于文档全部切片自动抽取标签并写回,实现从导入到按标签检索的端到端自动打标
本实践基于知识问答服务的检索与生成能力,由大模型根据文档全部切片自动抽取标签并写回文档,形成从导入、自动打标到按标签检索的端到端流程。全流程在控制台完成,结果可复现。
方案概述
背景
人工为文档打标签存在三个问题:
- 效率无法匹配入库速度:文档批量入库时,人工打标速度远低于入库速度
- 从入库到可用存在延迟:文档入库后需等待人工打标,才能用于按标签检索与分发
- 标签口径不统一:标注人员的理解存在差异,同类文档的标签易不一致,影响检索质量
适用场景
| 场景 | 说明 | 自动打标的价值 |
|---|---|---|
| 企业文档管理 | 为合同、项目资料、技术文档标注部门、项目、主题、密级等标签 | 提升检索效率,支持权限管理与合规追溯 |
| 知识资产沉淀 | 为技术文档、研究报告、行业白皮书标注领域、技术栈、应用场景等标签 | 将散落的资料结构化,支持按标签精准问答与推荐 |
| 营销素材管理 | 为产品手册、营销方案、客户案例标注产品线、行业、场景等标签 | 快速定位相关素材,支持按标签筛选与复用 |
方案原理
知识问答服务本质是 RAG:检索召回切片,再由大模型基于切片生成回答。将生成目标从回答问题改为抽取标签,即为自动打标:为目标文档添加一个唯一标签,通过标签过滤仅召回该文档的切片,由大模型按打标提示词输出标签,再写回文档。
三个关键点:
- 单文档召回:百炼的标签过滤按
tags筛选,不支持按文档 ID 过滤;通过为目标文档添加唯一标签,实现仅召回该文档 - 尽量完整覆盖:排序模型设为不使用模型,并将召回数量调至上限,使尽可能多的切片进入模型
- 结构化输出:由提示词约束模型输出可解析、可直接写回的标签
操作步骤
本实践使用 百炼技术文档样例 演示(含 92 篇百炼平台技术文档),以其中的《首次调用通义千问 API》为例打标,也可替换为自有文档。
以下标签在打标后写回,无需提前创建:
| 标签 | 说明 | 示例值 |
|---|---|---|
| 产品 | 文档所属产品 | 产品_百炼 |
| 主题 | 文档主题 | 主题_API调用 |
| 难度 | 入门 / 进阶 / 专家 | 难度_入门 |
| 关键词 | 文档关键词(多值) | 关键词_环境变量、关键词_curl |
1. 创建知识库并导入文档
进入 数据接入 → 知识管理,点击创建,选择旗舰版(自动打标需调大召回数量,旗舰版配额更高),按三步向导操作:
- 基础信息:填写知识库名称与描述;知识库类型选择文档搜索,使用场景选择基础文档问答
- 选择数据:依次配置,选择连接器(默认文件连接器),数据来源选择上传文件,配置类目,在文件上传区上传样例文档
- 索引设置:保持默认,完成创建
选择数据步骤最下方的新增标签会对本次上传的所有文件批量生效,不适用于单文档定位;单文档的唯一标签在下一步单独添加。标签为自由文本,无需在此预先创建业务标签。
建库选择数据步骤:连接器、数据来源、配置类目、文件上传

2. 为目标文档添加唯一标签
标签过滤是仅召回目标文档的手段,因此需先为待打标文档添加一个唯一标签(如 auto_tag_temp):
- 控制台:进入 数据接入 → 知识管理,对上一步创建的知识库点击查看详情进入文档列表,对目标文档点击 更多 → 标签,在标签管理弹窗中输入
auto_tag_temp,回车后确定 - API:调用
batchUpdateFileTag,为该文档的tags写入["auto_tag_temp"]
3. 配置知识问答服务
- 进入 知识服务 → 知识问答,点击创建,绑定上一步的知识库
- 选择生成模型。标签抽取对理解与指令遵循能力要求较高,建议选用能力较强的模型(如
qwen3.7-plus) - 点击展开知识库配置,按下表设置检索参数:
| 参数 | 设置 | 原因 |
|---|---|---|
| 标签过滤 | 输入或从下拉选择唯一标签 auto_tag_temp | 仅召回该文档的切片,实现单文档打标 |
| 初步向量检索 TopK | 调大(不小于文档切片数,默认 50) | 使该文档的切片尽量进入候选 |
| 初步关键词检索 TopK | 调大(不小于文档切片数,默认 50) | 覆盖关键词检索路径 |
| 排序模型 | 选择不使用模型 | 避免 rerank 按相关性筛除切片 |
| 最大召回数量 | 调至上限 20 | 使尽可能多的切片进入最终召回 |
知识库配置:标签过滤选唯一标签、TopK 调大、排序模型选不使用模型、最大召回数量调到 20

4. 设置打标提示词
在配置页的提示词输入框填入打标提示词模板。检索结果由服务自动拼接为上下文注入,提示词中无需写占位符。提示词直接要求模型输出可写回的 字段_值 标签数组:
5. 控制台执行打标
在配置页右侧调试面板输入打标指令(例如 请为这篇文档抽取标签),发送后确认模型输出的标签数组是否符合预期。
调试面板:输入打标指令,模型返回标签数组

agent_id),通过知识问答 API 发起打标请求(响应为 SSE 流式输出,解析方式见接口文档),再按下一步写回标签。批量场景下每篇文档的打标顺序见注意事项。
6. 标签写入及检索
获得模型输出的标签数组后,调用 batchUpdateFileTag 写回文档(OVERWRITE 会覆盖第 2 步的临时唯一标签):
fileId 通过 listFile 获取,也可在控制台文档列表中通过 更多 → 标签 手工写回。写回后,在知识检索或问答服务的知识库配置 → 标签过滤中选择对应标签,即可按标签精准召回。
文档列表展示已写入标签,知识库配置标签过滤实现精准召回

注意事项
标签是字符串数组
百炼的标签是字符串数组(无字段类型),仅支持中文、字母、数字、下划线 _、中划线 -,不支持冒号、空格等字符,单个标签最多 32 个字符、每篇文档最多 100 个。带含义的标签用 字段名_值 表达(如 产品_百炼),多值维度拆成多个字符串。标签为自由文本,写回时无需预先创建。
单文档召回依赖唯一标签
百炼的检索与问答不支持按文档 ID 过滤,标签过滤按 tags 筛选。单文档打标需单独为目标文档添加唯一标签(如 auto_tag_temp)。建库时选择数据步骤的新增标签会对本次上传的所有文件批量生效,无法用于定位单篇文档。
受最大召回数量上限约束
知识问答最大召回数量上限为 20,单次问答最多 20 个切片进入模型。切片数超过 20 的文档无法一次覆盖,需拆分文档或分批打标。
标签过滤为服务级静态配置
问答服务的标签过滤在配置发布后固定,不随单次请求变化。批量打标多文档有两种方式:
| 方式 | 做法 | 适用场景 |
|---|---|---|
| 共用临时唯一标签 | 所有文档先添加同一临时标签(如 auto_tag_temp),逐篇打标,完成后用业务标签覆盖 | 文档数少,串行打标 |
| 多服务分权 | 为每篇或每组文档建立独立问答服务,各自配置标签过滤 | 大规模并行打标 |
常见问题
打标结果只覆盖部分内容?
确认排序模型已设为不使用模型、初步检索 TopK 与最大召回数量已调大;文档切片数超过 20 时需拆分或分批。
模型输出了多余文字,不是纯标签数组?
强化提示词中仅输出数组的约束;写回前可只取输出中的首个 [...] 数组再解析。
写回标签报错?
检查标签是否含冒号、空格等不支持的字符,以及单个标签是否超过 32 个字符。