AI大模型应用随笔-RAG工作流应用搭建
AI大模型应用随笔-RAG工作流应用搭建
概要
RAG数据增强是我们解决大模型场景知识的缺失或回答不准确,还有最重要且常见的大模型回答幻觉问题的很有用的解决方法;通过让大模型结合知识库的内容来提供更高效的答案,下面我们基于coze平台以工作流的方式来搭建一个RAG增强后的大模型应用;
RAG流程
图片来自langchain.com
我们先分析下RAG应用工作流需要哪些节点或组件,根据上面RAG流程分析可知:
- 用户输入- Question
- 知识匹配-知识库上传、知识文档切片、知识与用户输入检索召回
- 大模型指示词-包含Prompt指令、用户输入和知识信息
- 大模型选择- LLM
- 结果输出
01
首先进行“扣子”平台,创建一个工作流;
创建完一个工作流之后,我们可以看到,平台默认已经提供了两个组件,分别为输入和输出;
02
接下来第二步呢,就是我们要创建一个知识库,为后续基于用户的提问来检索知识信息给模型做输入而准备;扣子平台中比较友好的点就在创建库的过程中,就已经把文档切片和切片规则配置以及检索配置都已经打包在知识库组件中,我们只需要创建知识库然后配置就可以;
知识处理流程
图片来自langchain.com
创建知识库
点击知识库,上传文档(新增单元),因为我上传的文档在本地且格式是PDF文档,所以选择本地文档上传文档,如果大家的数据存储是其它方式可以按需选择;
上传文档(新增单元),选择并上传文档后,点击下一步,到分段设置,这里就是前面我们说的切片,这里我选的是自动分段和清洗,也可以自定义,但因为我上传的是PDF文档标识出文字本身格式就很乱,无明显结构,所以通过自定义规划比较难处理,本人尝试过自定义,效果不理想;
自动分段:
自定义:切的太散了,内容的关联性和整体性就很差了
知识库建好了,我们回到工作流,拖出一个知识库组件;选择我们刚刚创建好的知识库;
可设置搜索策略、最大召回数量和最小匹配度,这几个参数的设置可能不同的场景配置不一样,也需要多试试,这里我就不展开去讲了,大家可以多试试;
03
知识库组件配置好,后面就简单了;拖一个大模型组件,大模型选择目前只有云雀语言模型可以选择,直接默认就好了,温度值也默认为0.7就好;下面就是还有一个提示词需要配置;可以参考示例
参考信息:
{{context}}
问题:
{{input}}
请根据上述参考信息回答问题。前面的参考信息可能有用.也可能没用,你需要从参考信息中选出与问题最相关的那些,来为回答提供依据。回答定要忠于参考信息,简洁但不丢信息,不要胡乱编造。
你的回答:
04
最后就是我们把流程连线起来,下列有几点注意事项:
- 开始输入组件中,输入参数名就可以,如user_Q。
- 知识库组件中的参数值选“引用”,然后选择,如user_Q就可以关联。
- 大模型组件中输入,添加两个参数,一个是输入组件中用户提问,另一个是知识库跟提问匹配的知识信息;提示词中的参数名要和输入中的参数名一致
- 提示词中的变量用双括号{{变量名}},作者我用了单括号,后面发现没效果,犯了没仔细看说明的错;
- 由于大模型组件中已经设置了两个变量,所以不用重复连线,只连接知识库组件就可以。
05
最后,让我们来运行下工作流看看效果,这里有一个我很喜欢的点就是每个组件的输出可以显示出来,这样看中间输出就很方便,赞
输入:
输出:
总结:通过一个个组件的方式创建操作来实现一个RAG流程,对原理的理解还是会比较清晰和深刻,很多复杂的工作都也已经被包装成一个个组件了,跟大模型一样,就让黑盒子变成黑拿子本身,只要我们知道控制组件的参数有哪些,可以怎么调,我们一样可以运用好大模型的能力。