回顾
上篇已经详细介绍了AI使用知识库进行时到底发生了什么
如果没有看过,移步:【AI+知识库】商业化问答场景,让AI回复更准确,一篇专为所有“小白”讲透RAG的实例教程(上篇)
现在再来看这四个阶段,
①、问题解析阶段
②、知识库检索阶段
③、信息整合阶段
④、大模型生成回答
那么想要一个更加符合预期的生成结果,本质上是对这四个阶段的一步步优化。
一、数据预处理
和我们进行关键词检索类似(但是这里是向量检索,前文已有介绍,只是举例),当要检索的文档,标题整理的越丰富、关键词越精准,内容越丰富的时候。我们去搜索才更方便的查找。
如果一个将如何减肥的文章内容,标题写的却是《十年规划》,那么就算是人类自己也很难精准检索到。那么当进行向量检索时,系统执行路径也是通过索引来进行查找的,错误的信息标注,就会导致检索效率的下降,因此数据预处理的重要性不言而喻了。
可以直接使用“问答对”来录入知识库,是比较理想的方式。尽量使用此方式整理。
此方式适用于:无逻辑递进、无层级结构或者低层级(两层)结构的数据。
常见的文档为word、doc类型。通常为较长的大段的叙述内容。
文档命名规整: 文档名应控制在10-20字,使用简洁明了的词语或短语来命名文档,避免使用无意义的数字、符号或缩写。
1、240610-中央经济工作会议解读 √
2、240617-减肥方案 √
3、问答文档第一版 ×
4、20240610-英大证券-英大证券宏观评论(2024年第36期总第120期):2024年中央经济工作会议解读,基建投资大概率是2024年扩内需的主力,1-4季度GDP当季同比大概率总体上行 ×
举例:
(正确的)
1 公司历史发展情况
1.1 业务概况
1.1.1 平台介绍
1.2 用户的全渠道接触点
2 生态合作伙伴开放平台
(错误的)
· 第一部分
第3项【保留】
· 第二部分
第1项:财务报表
第2项:财务报表
· 第三部分
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 模型的选择和微调
文章来源于“WayToAGI Agent探索”,作者“UU大王 ”
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0