3个案例,教你agent知识库文档科学分段
上一篇文章聊了Agent知识库的分段原理。说到底,要减少大模型“瞎编”的毛病,最直接的办法就是给它喂私有领域的文档,搭建一个专属的知识库。但这个事儿,比想象中要讲究得多。
大模型不是人类,它读文档的方式跟我们很不一样。它不是一口气把整篇文章看完、理解透,而是像个吃书的孩子,一小片一小片地“啃”下去。所以,如果这“一小片”切得不科学,模型的输出质量就会出问题。这就是为什么,分段的规则设计,直接决定了Agent回答的靠谱程度。
之前我们聊过《为什么Agent的知识库回答不准确》,今天咱们不讲理论,直接上干货。整理自文心智能体平台官方指导文档,用三个典型的案例,来看看不同场景下,到底该怎么选分段方法。
案例一:长文本内容——上下文理解才是王道
适用场景
小说、电子书刊、长篇课文、公司简介、论文、专利文件……这类内容有一个共同特点:信息前后呼应,需要结合上下文才能准确把握语义。
测试材料:
检索测试
问智能体一个问题:别里科夫为什么没有结婚?
如果用系统默认的分段规则,模型的检索情况是这样(结果略)。智能体给出的回答可能不够精准,原因在于默认分段可能把关键情节切碎了。
分段思路总结
对于这类长篇叙事文,推荐直接使用默认分段,关键在于调整参数:
- 设大一些。长文本段落本身就长,段落间常有承上启下的关系。字符数设大,才能把完整的语义装进一个段落里,模型理解起来才更准确。
最大段落字符数:
- 按需填写。目的是让上下文之间的关键信息,尽可能出现在同一个检索片段里。
段落重叠字符:
- 默认分段符号基本覆盖了大多数情况。如果发现结果不合适,可以检查文档的自然分段符号(比如空行、章节标题),手动添加或选择特定的分段符号,系统会按符号优先级进行切割。
分段方式:
优化核心
一句话:尽量让相同语义的文本留在同一段落。实在因为字符限制分不开的,就用重叠字符来搭桥,增加模型同时检索到前后段落的概率。
案例二:结构性内容——按“块”拆分,别把问答拆散
适用场景
客服聊天记录、销售话术、一问一答的FAQ、文本格式的表格等。这类内容结构鲜明,模型需要理解“一个结构块”内的完整语义,而不是被拦腰截断。
测试材料:
检索测试
问智能体:文字类指令怎么写?
使用系统默认分段时,输出结果(略)——一目了然,原文中一个完整的一问一答,可能被切成两半,模型看到的只是半句话。
换成自定义分段后(方法见下文),输出质量明显提升(略)。再看检索结果:每一个“问-答”都被完整地保留在一个段落里。
分段思路总结
原则:必须保证同一结构内的文本,被切割到同一个段落。
- 先统计原文中每个结构块的平均字符数。比如示例文件一问一答结构,平均340个字符,那就把最大字符数设为340。
最大段落字符数:
- 既然每个结构块已经独立,段落之间不需要上下文关联理解,直接设为0。除非个别结构块因字符限制无法完整放入一个段落,才考虑增加重叠。
段落重叠字符:
- 原文结构鲜明,比如每个问答前都有“问:”、“答:”。这时可以把“问”字作为分段符号,并设置在该符号前进行分段。结果就是——每一组“问+答”都成为独立段落。
分段方式:
案例三:Excel数据类——别打扰数据,保持原始完整
适用场景
具体的数据查询、数据统计类场景,比如一张电影票房表。行与行之间的数据,除了统计汇总,本身没有前后句的关联性。
测试材料:
检索测试
两个测试问题:
- 2023年1月22日上映了几部电影?模型输出(略),检索情况(略)。
统计分析场景:
- 《封神第一部》一共上映了多少场?模型输出(略),检索情况(略)。
非统计分析场景:
分段思路总结
自定义分段,核心目标是:
最大限度地保留原始数据的完整性。
- 直接拉到最大限制512个字符。目的是每段能装下尽可能多的数据行,防止关键行被孤立。
最大段落字符数:
- 设为0。因为数据行之间没有上下文关联,重叠只会浪费字符空间。
段落重叠字符:
- 表格数据直接按“换行”切割即可,一行就是一个独立记录。
分段方式:
优化思路
模型限制知识库单次最多输出2000字符,那就要想办法把需要计算的数据压缩到1~3个段落中。如果数据量较大,建议上传的Excel表格不要超过2列,保证模型拿到的3个段落里,已包含统计所需的全部信息。
特别提醒:
- 表头是模型理解数据的关键,语义必须明确,别用生僻词或缩写。
- 如果你的智能体或插件需要做统计分析,最好在提示指令里把计算步骤写清楚,模型输出结果会更准确。
附件1:《装在套子里的人》(略,可网络搜索)
附件2:文心智能体平台常见问答
常见问答
常见问答
问:助手头像&名称怎么填?
问:助手头像&名称怎么填?
答:头像需要与主题相关,而且越有吸引力,进来用的人就越多。助手名称应为十个字以内,要高度概括助手功能。
✅ 优秀示例:小红书文案创作、B站视频脚本创作、解梦大师、国画大师。
❌ 反面教材:令人心动的offer、灵感小助手(与功能无关,语义含糊)。
问:指令(prompt)是什么?
问:指令(prompt)是什么?
答:指令就是给AI大模型的任务提示,直接决定智能体的效果。指令可以说明对生成结果的要求,让模型生成更符合需求的内容。智能体的指令不会展示给用户。智能体专用占位符:$$@@$$。
问:文字类指令怎么写?
问:文字类指令怎么写?
答:最简单的公式:
想让智能体扮演的角色 + 希望根据用户什么输入生成什么结果 + 对生成内容的详细要求。
通用指令构成:
- 上下文(Context):任务背景。
- 指令(Instruction):具体任务。
- 输入数据(Input Data):用户输入内容。
- 输出提示(Output Indicator):规定输出内容(说清想要+不想要)。
Tips:
- 减少模糊表达,明确提出需求。
- 称谓代词统一,不要反复切换。
- 避免行业黑话。
✅ 优秀示例:
“你是一名资深导游。我的目的地以及预计游玩时间是$$@@$$,你需要根据我提供的目的地和时间,给我参观建议,制定旅行计划。计划必须有可行性,不能太紧凑,要考虑通行时间。”
❌ 反面教材:
“帮我写一份去x地的旅游攻略。”(太含糊,结果往往不实用)
问:图片类指令怎么写?
问:图片类指令怎么写?
答:公式:
画一幅画:主题,环境,风格,图片质量。
指令构成:
- 任务(必须):明确说明作画/生成图片,并有“:”。如:“画一幅画:”
- 主题(最优先说明):人物、动物、动作等。
- 环境:场景、背景。
- 灯光:光线类型。
- 色彩:整体颜色。
- 视角:俯视、特写等。
- 风格:赛博朋克、浮世绘等。
- 出图质量:4k、高细节等。
Tips:
- 主题为必填,其余可选。指令内容顺序影响权重,主题最先说明。
- 作图类指令不超过80字为佳。
- 若助手定位通用作图,不宜给过严限制。
✅ 优秀示例:
“画一幅画:女孩,森林,太阳光,全身照,明亮,写实图片,4k。”
❌ 反面教材:
“画一个森林里的女孩。”
附件3:2023年电影票房数据
(表格内容略)
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名