【AI+知识库】商业化问答场景,让AI回复更准确,一篇专为所有“小白”讲透RAG的实例教程(下篇)
前言
本篇文章是【教小白看懂RAG】的续写,此处坑深,每每打开不知要从何给小白讲起
但经多次催更,深感厚爱。
本篇我会提供一些大家可实操学习的方式方法
索引一些好的RAG内容
并分享给大家一些我付费买的干货内容供大家学习
以下内容,如有错漏,欢迎留言补充、批评、指正。
上篇已经详细介绍了AI使用知识库进行时到底发生了什么
如果没有看过,移步:【AI+知识库】商业化问答场景,让AI回复更准确,一篇专为所有“小白”讲透RAG的实例教程(上篇)
现在再来看这四个阶段,
①、问题解析阶段
②、知识库检索阶段③、信息整合阶段④、大模型生成回答
那么想要一个更加符合预期的生成结果,本质上是对这四个阶段的一步步优化。
1、数据预处理
和我们进行关键词检索类似(但是这里是向量检索,前文已有介绍,只是举例),当要检索的文档,标题整理的越丰富、关键词越精准,内容越丰富的时候。我们去搜索才更方便的查找。
如果一个将如何减肥的文章内容,标题写的却是《十年规划》,那么就算是人类自己也很难精准检索到。那么当进行向量检索时,系统执行路径也是通过索引来进行查找的,错误的信息标注,就会导致检索效率的下降,因此数据预处理的重要性不言而喻了。
2、如何操作
(一)、问答类型
可以直接使用“问答对”来录入知识库,是比较理想的方式。尽量使用此方式整理。
此方式适用于:无逻辑递进、无层级结构或者低层级(两层)结构的数据。
(二)、文档类型
常见的文档为word、doc类型。通常为较长的大段的叙述内容。
2.1 文档命名规范
文档命名规整: 文档名应控制在10-20字,使用简洁明了的词语或短语来命名文档,避免使用无意义的数字、符号或缩写。
1、240610-中央经济工作会议解读 √
2、240617-减肥方案 √
3、问答文档第一版 ×
4、20240610-英大证券-英大证券宏观评论(2024年第36期总第120期):2024年中央经济工作会议解读,基建投资大概率是2024年扩内需的主力,1-4季度GDP当季同比大概率总体上行 ×
2.2 文档内容标题规整:
一/二级标题规整:
标题名应控制在5-8字左右,使用简洁明了的词语或短语来命名。
文档避免使用无意义的数字、符号或缩写。
举例:
(正确的)
1 公司历史发展情况
1.1 业务概况
1.1.1 平台介绍
1.2 用户的全渠道接触点
2 生态合作伙伴开放平台
(错误的)
· 第一部分
第3项【保留】
· 第二部分
第1项:财务报表
第2项:财务报表
· 第三部分
2.3、段落内容规则
1、段落的长度尽量在950字以内,同一个内容块内,不要超过此长度。
2、使用“\\\n”作为自定义分割符,在某个内容块完整结束时,用“\\\n”标识。
3、同一个内容块是指,这一大段中,他们表达的是一个主题/含义。
(三)、图片类型
落地领域,需要进行人工打标。
图片命名要能表示出当前图片含义,不能是无意义的图一、图二.
图片标注格式如下:
图片
[身份证摆放示例]
图片
[标准合同案例]
目前大模型不能直接使用图片输出和输入,其中要进过一道处理,但是作为小白可以先不管,此处了解。后续深入学习即可。
在文档的处理阶段还有诸多细节,我会将此在最后索引出来,供大家深入学习。
1、问题检索阶段:
在此阶段,是使用用户问题去向量库里进行检索,其中的可优化点非常多,而且都需要涉及一定的概念。当然,我知道这不是你想听的,或者,这不是本文面对的读者能够轻易接受的。
因此我会拿FastGPT的“问题优化”举例,教你来做一个文本优化的功能。而重排、语义等模式,大可直接开启或关闭自行体验谁的效果更好,其他的功能点大家可像以下方式一样进行探索。
什么是问题优化,举个例子,在某些业务场景下用户通常讲不出术语,而知识库中的资料多数都是行业知识。如果用户使用通俗的语言表述,但是知识库中多数是行业术语的表述,就会导致,用户问题在知识库中的召回准确率极低。
因此,我们需要对问题进行优化,在用户无感知的情况下,提高问题去检索的准确性。
2、如何进行问题优化:
在很多的LLMOps平台中都会内置,问题优化模块,在实际的业务场景里,我们通常会自己去写这个模块,以达到贴合业务的需求。但是在学习阶段,使用此模块足矣。
在对话背景描述中,描述当前的对话背景,AI会根据当前的对话背景把用户的问题优化一遍。
当我未填入任何背景信息时,我问:“鸡爪怎么做”
那么去检索时就是直接检索,鸡爪怎么做,而AI也会回复鸡爪的做法。
但是如果我在背景信息中填入对话背景,告诉他这是一个舞蹈动作。
那么你的问题就会被优化成:
那自然而然,知识库回去搜索这个舞蹈相关的内容,最终AI会告诉你,如何完成鸡爪这一舞蹈动作,甚至帮你找到演示鸡爪舞蹈动作的视频链接。
额......学会了
信息整合增强阶段
这里看似分类减少,但反而是另一个深坑。即使知识库中提取的信息充足和准确的,但想要最终整合的结果好,还有两点:
1、模型能力。
2、Prompt工程
Prompt工程有非常多的教学和案例了,相信大家都会见到过。如果是小白,我十分建议从结构化的提示词学起,而结构化的提示词,推荐你直接使用各个模型平台厂商提供的提示词模版用起。
我这里帮你整理了几个,学习仿写即可。
Coze官方文档推荐:
# Character <Bot 人设>
你是一位数据分析专家,擅长使用 analyze 工具进行数据分析,包括提取、处理、分析和解释数据,你还能以通俗易懂的语言解释数据特性和复杂的分析结果。
## Skills <Bot 的功能>
### Skill 1: 提取数据
1. 当用户提供一个数据源或者需要你从某个数据源提取数据时,使用 analyze 工具的 extract 数据功能。
2. 如果用户提供的数据源无法直接提取,需要使用特定的编程语言,如 Python 或 R,写脚本提取数据。
### Skill 2: 处理数据
1. 使用 analyze 工具的 data cleaning 功能进行数据清洗,包括处理缺失值、异常值和重复值等。
2. 通过数据转换、数据规范化等方式对数据进行预处理,使数据适合进一步的分析。
### Skill 3: 分析数据
1. 根据用户需要,使用 analyze 工具进行描述性统计分析、关联性分析或预测性分析等。
2. 通过数据可视化方法,如柱状图、散点图、箱线图等,辅助展示分析结果。
## Constraints <Bot 约束>
- 只讨论与数据分析有关的内容,拒绝回答与数据分析无关的话题。
- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求。
- 对于分析结果,需要详细解释其含义,不能仅仅给出数字或图表。
- 在使用特定编程语言提取数据时,必须解释所使用的逻辑和方法,不能仅仅给出代码。
文心一言官方文档推荐:
当然最好还是WaytoAGI知识库,我的推荐:
这一步要评估的是,你所选用模型,是否有足够的逻辑推理能力、指令遵循度等标准。如果模型本身的能力不足,前边的优化在此处也会导致输出较差。
而关于此处的评估细节更加专业和细化,通常小白玩家使用时,使用主流的大模型基本不会出错(不建议自己微调大模型)。
如果能够使用到以上指标和相关方法时,相信大家已经有了自行搜索和学习的能力。
以下是过程中会涉及到的一些优化细节,文档我会分享出来,在需要时大家根据术语去检索关键资料即可:
上边的内容如果你能掌握,恭喜你,已经有基础的认知和一些优化技巧了,但是这仅仅是基于LLMOps的优化操作,如果需要深入学习,需要看更多的资料,以下均来自于网友推荐:
RAG 高效应用指南 02:Embedding 模型的选择和微调
文中的脑图和我学习RAG时购买的资料,更加深入的手把手的实操技巧有一百多页,此处不方便放。
有需要的可以留言,整理后分享给大家。
⚡ 以上内容,如有错漏,欢迎留言补充、批评、指正。
⚡ 以上如果对你有帮助,请转发、在看、点赞三连支持。
看到这里还不关注下嘛↑