# 热门搜索 #
搜索
【AI+知识库】商业化问答场景,让AI回复更准确,一篇专为所有“小白”讲透RAG的实例教程(下篇)
8680点击    2024-09-10 21:34

回顾


上篇已经详细介绍了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 高效应用指南:01


RAG 高效应用指南 02:Embedding 模型的选择和微调


RAG 高效应用指南 03:Query 理解


RAG 高效应用指南 04:语义路由


RAG 高效应用指南 05:再谈文档智能解析


RAG 高效应用指南 06:巧妇难为无米之炊


RAG在企业应用中落地的难点与创新(文字稿)


一文详谈20多种RAG优化方法


文章来源于“WayToAGI Agent探索”,作者“UU大王 ”


关键词: AI , 知识库 , RAG , 人工智能
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
智能体

【开源免费】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

2
知识库

【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。

项目地址:https://github.com/labring/FastGPT

3
RAG

【开源免费】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

4
微调

【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。

项目地址:https://github.com/InternLM/xtuner

5
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0