|

上一篇文章,专门介绍了agent的知识库分段。为了规避AI的幻觉,在开发agent时,通常会配置专有领域的文档,形成私有知识库。 大模型并不像人类一样,读完这些文档,就能够完全理解文中含义。大模型其实是分片段来消化和理解文档内容的。所以,结合文档内容特点、使用场景,科学设计文档分段规则,就非常重要,直接影响模型输出质量。 上篇文章:为什么Agent的知识库回答不准确
本文是作者根据文心智能体平台的知识库官方指导文档的整理,通过3个典型的案例,来展示如何选择适合的分段方法。
ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;font-size: 18px;letter-spacing: normal;text-indent: 0em;">长文本内容上下文理解分段案例 1.适用业务场景 案例适用于小说、电子书刊、课文、公司介绍、论文、专利文件等,需要模型结合上下文理解语义的长文本内容。 案例文件:装在套子里的人(可网络搜索该文章) 2.检索结果测试 向智能体问一个知识库中的问题:别里科夫为什么没有结婚? 智能体润色输出结果如下: 
使用了系统默认的分段规则,模型的分段检索情况如下: 
3.文档分段思路总结 推荐使用默认分段即可。 •最大段落字符:长文本内容段落一般比较长,段落和段落之间也有一些承上启下的关系,因此最大段落字符可以设置的大一点,尽量保证段落中包含完整的语义,模型理解才能更加准确。 • 段落重叠字符:当段落需要上下文理解时,段落重叠字符可以按需填写,尽量让上下文之间的相关内容展示在一个段落中。 • 分段方式:默认分段的分段符号基本包含大部分文本分段方式,如分段结果不合适,可查看文档适合切割位置的符号,选择或输入添加分段符号,将按照分段符号选择顺序进行切割。 分段优化思路 尽量保证相同语义的文本切割在一个段落,因为段落字符数限制无法分成一段的,可以通过段落重叠字符进行段落之间的关联,让模型在检索时,可以增加被同时检索到的概率,综合理解输出结果。
ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;font-size: 18px;letter-spacing: normal;text-indent: 0em;">结构性内容分段案例
1.适用业务场景 案例适用于客服聊天记录、销售话术等场景的一问一答、文本表格等有鲜明的结构特点的内容,需要模型理解结构内的内容语义。 案例文件:文心智能体平台常见问答(内容详见文末附件2) ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;text-indent: 0em;letter-spacing: 0.578px;color: rgb(0, 82, 255);font-size: 20px;">2.检索结果测试 (1)使用系统默认分段规则 向智能体问一个知识库中的问题:文字类指令怎么写? 智能体润色输出结果如下: 
使用系统默认的分段规则,模型的分段检索情况如下,一问一答的源文档内容,容易被切分到不同的片段中。 
(2)使用自定义分段规则 同样的问题,智能体润色输出结果如下,输入质量要高于默认分段规则的输出结果。 
使用自定义分段规则,模型的分段检索情况如下,将每一个问答内容,划分到同一个分段中。 
3.文档分段思路总结 建议进行自定义分段(如下文的的自定义分段方式),要尽量保证同一结构内的文本切割在一个段落。 •最大段落字符:先看一下原文结构中,每个结构内的字符数平均是多少,就将最大段落字符数设置为多少左右,大概选几个有代表性的段落计算平均字符数即可。比如示例文件,是一问一答结构,共有 2 个段落,平均字符数是 340 个字符,最大段落字符数设置就为 340 个字符。 •段落重叠字符:分段后的段落之间不需要上下文关联理解,因此段落重叠字符设置为 0。若因为段落字符数限制无法分成一段的,可以通过段落重叠字符进行段落之间的关联,让模型在检索时,可以增加被同时检索到的概率,综合理解输出结果。 •分段方式:文档中比较鲜明的结构时,每组问答都有标记"问"、"答",而我们希望可以按照一问一答的结构进行分段,则可以将"问"作为分段符号,且在"问"符号前进行分段,就可以得到一问一答结构的分段结果了。
ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;font-size: 18px;letter-spacing: normal;text-indent: 0em;">Excel 数据类内容分段案例
1.适用业务场景 案例适用于具体数据查询、数据统计类的 Excel 表格数据类,行与行之间的数据,除统计外没有其他关联性的内容。 案例文件:2023年电影票房数据(内容详见文末附件3) ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;font-size: 14px;letter-spacing: normal;text-align: left;background-color: rgb(247, 248, 249);"> 2.检索结果测试 (1)统计分析场景 向智能体询问数据统计类的问题:2023年1月22日上映了几部电影? 智能体润色输出结果如下: 
模型检索分段情况如下: 
(2)非统计分析场景 向智能体询问非统计类的问题:封神第一部,一共上映了多少场? 智能体润色输出结果如下:


3.文档分段思路总结 推荐使用自定义分段,尽量保证输入给模型的原始数据的完整性,最终的统计结果正确率才会高具体的分段结果可下载示例文件创建知识库后查看 • 最大段落字符:为了保证检索段落的完整性,需要将最大段落字符数设置到最大限制的 512 个字符。 • 段落重叠字符:为了减少重叠字符占用段落的字符数容量,段落重叠字符需要设置为 0。 • 分段方式:表格类型的数据可以直接按行切割,分段方式选择"换行"。 分段优化思路 因模型限制知识库最多可输出 2000 字符,则尽可能的将需要计算的数据分到 1~3 个分段中。较大量级的数据统计,建议上传的 Excel 表格不要超过 2 列,才能保证输入给模型的 3 个段落中,已包含统计所需的所有数据。 ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;letter-spacing: normal;text-align: start;text-wrap: wrap;">注意: ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;font-size: 14px;letter-spacing: normal;text-align: start;text-wrap: wrap;" class="list-paddingleft-1">表头对分段结果的检索非常重要,是模型理解数据的关键信息,因此数据表头需要具有明确的语义,尽量不要使用模型无法理解的生僻词汇。 对于有统计分析需要的插件或者智能体,需要在插件或者智能体的指令提示中,说明详细的计算步骤,可以提升模型统计结果的准确性。
ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;letter-spacing: normal;text-align: start;text-wrap: wrap;">附件1:装在套子里的人(略,网络搜索)ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;letter-spacing: normal;text-align: start;text-wrap: wrap;">附件2:文心智能体平台常见问答常见问答
问:助手头像&名称怎么填?
答:头像需要与主题相关,而且越有吸引力进来用的人就越多哦。
助手名称应为十个字以内,要高度概括助手功能。 ✅优秀示例:最好直接说明助手用途~ 如:小红书文案创作、B站视频脚本创作、解梦大师、国画大师等。 ❌反面教材:名称和助手实际功能无关、语义含糊。 如:令人心动的 offer、灵感小助手等。
答:如果你想让 AI 大模型完成某个任务,就需要给他具体的指令(prompt)提示。指令(prompt)直接决定你所创造的智能体的效果。
指令就是你向 AI 大模型提问时的文字提示,通过指令,可以说明对生成结果的要求,可以让模型生成更符合需求的结果。
智能体专属指令占位符:$$@@$$。(占位符即指令中的会随用户输入而变的变量内容占位,通过占位符,可以使指令更加通顺)
问:文字类指令怎么写?
答:最简单的指令公式: 你想让智能体扮演的角色+希望ta根据用户什么样输入信息来生成什么样的结果+对助手所生成的内容的详细要求。
1.Context 上下文:说明想让大模型执行任务的背景
2.Instruction 指令:说明你想让模型执行什么任务
3.Input Data 输入数据:说明用户要输入什么内容
4.Outpt Indicator 输出提示:规定输出结果内容(说清想要+不想要)
2.指令中的称谓代词要统一,不要反复切换,可能会造成 AI 大模型理解混乱。
3.指令中尽可能不要体现行业黑话,可能会造成 AI 大模型理解障碍。
你是一名资深导游。我的目的地以及预计游玩时间是 $$@@$$,你需要根据我提供目的地和预计游玩时间,给我提参观建议,为我制定旅行计划。你所制定的旅行计划必须具有可行性,不能行程太过紧凑,要考虑通行时间。
(可将用户输入内容,带入通配符位置,形成完整的一段命令,发送给模型请求结果)
帮我写一份去x地的旅游攻略。(不具体,可能给出的结果可行性不高,或者比较泛,与实际需求不符)
问:图片类指令怎么写?
答:最简单的指令公式: 画一幅画:主题,环境,风格,图片质量。
1.任务(必须说明):明确说明希望大模型作画/生成图片,并写有【:】,以便后续说明作画具体要求。如:画一幅画:/生成一张图片:
2.主题(最先说明):图片主题及描述性细节,如人物、动物、物体、动作、姿势、情绪等。
3.环境:场景、环境、背景、画面,如森林、街道、海洋等。
4.灯光:光线类型,如自然光、暖光、强光、边缘光、日光等。
5.色彩:图片整体颜色说明,如柔和、高饱和度、明亮、彩色、黑白等。
6.视角:图片视角说明,俯视图、鸟瞰图、头部特写、全身照、侧面图、广角图等。
7.风格:图片艺术风格说明,如赛博朋克、浮世绘等。
8.出图质量:图片画质说明,如 4k、1080p、高细节等。
l主题为必填项,其他部分可选填。指令内容先后顺序直接影响模型作图内容权重,因此主题部分应最先说明~
l作图类指令不超过 80 字最佳,重点想要体现的部分先说明。
l若作图助手定位为通用作图,不局限于某一风格或某一类主题,则不宜给极为具体的限制。
画一幅画:女孩,森林,太阳光,全身照,明亮,写实图片,4k。
画一幅画:$$@@$$,森林,太阳光,全身照,明亮,写实图片,4k。(可结合用户输入,替换通配符内容,画不同主题的画)
画一个森林里的女孩(太泛,可能无法画出想象中的效果)
ingFang SC", STHeiti, "Microsoft YaHei", SimHei, "Helvetica Neue", Arial, sans-serif;font-size: 14px;letter-spacing: normal;text-align: start;text-wrap: wrap;">
附件3:2023年电影票房数据 
顾问咨询+AI工具,赋能企业及个体商业变革、流程变革、组织变革、效能提升。
|