AI 文摘

大模型RAG行业适配过程中的一些思考


  • By AiBard123
  • February 29, 2024 - 2 min read



作者: 吃果冻不吐果冻皮 来源: 吃果冻不吐果冻皮

【点击】加入大模型技术交流群

原文:https://zhuanlan.zhihu.com/p/682625461

近段时间接触了较多政务、医疗等行业问答类大模型项目,在沟通中,大部分行业客户均提出了数据安全、数据不出局的业务需求,这就要求我们进行大模型的私有化部署。但是目前,行业客户算力资源十分有限,多数以T4卡服务器为主,这就面临着大模部署选型上局限性很大,会以13B、7B模型选型为主,面向行业的问答对于SFT或RAG的需求很高,数据梳理、标注过程的缓慢,也影响到了客户在选择本地知识适配过程中,主要以RAG方式为主(也体现了当下急功近利的行业应用心态)。RAG方式很好的解决了本地知识快速适配的问题,但是在使用过程中,会发现基于embedding和相似度比较的知识获取方式,在面向一些问题时回答的很差,例如一些短问题、一些携带知识库文件名的问题。针对上述情况,整理了一下几种处理的思路。

先来看看对齐,从对齐方式上来看,是人向大模型对齐和大模型向人对齐。

人向大模型的对齐方式:prompt工程,通过提示词工程提升,进行问题的优化,或引入BPO机制,进行提示词的预训练。

大模型向人的对齐方式:RLHF、SFT、RAG等方式,通过对于人类习惯、领域知识的增强与补充,使模型的输出更加符合人类的预期和需求。

在实际工程中也会通过以上融合的方式,使大模型能够更加符合人类对于问答的预期。本篇还是主要描述RAG的作用与使用技巧。

RAG:全称为Retrieval-Augmented Generation,中文翻译为检索增强生成,是一个为大模型提供外部知识源的概念,使它们能够生成准确且符合上下文的答案,同时能够减少模型幻觉。RAG的基本原理是,首先对现有文档进行检索,然后基于检索到的信息对生成的答案进行修正。RAG主要的作用还是来提高LLM的处理效率,并有效控制tokens的长度,主流框架包括LlamaIndex和langchain等,通过RAG对于领域知识的引入,可以减少大模幻觉问题。并且,由于无需打开模型调参的工作机制,与SFT等对齐方式相比,具有更加快速、便捷的优点。

1、RAG的准确性

RAG由于涉及到大模型自身、检索定位等多个环节,因此准确率计算涉及三部分:RAG准确率=LLM的准确率语义搜索准确率RAG信息保存率。

接下来看一下什么是RAG信息保存,目前主流增强知识会以向量库的方式进行存储,针对较长文本,需要以chunk的方式进行切片保存。如此,chunk之间的联系会被切断,并且只有TopK的chunk有机会被召回。

另外对于RAG的准确性,还有一下问题会产生影响。

  1. 上下文脱节问题:如果文本有多层上下文信息,chunk之间会使得内容上上下文脱节

  2. 位置因素失效问题:一般文字位置代表一定的重要性,但是在向量库存储的模式下,位置关键因素会失效

  3. 连续信息不完整问题:由于连接不再完整,语序容易被打乱

  4. 描述信息丢失问题。

因此RAG在问答准确性方面,可大概归纳一下优劣势:

优势:小范围描述式问答回答精准

劣势:1、不擅长关系型推理;2、不擅长时间跨度长的问题。如:分析一下二战的一共有多少次战役。

以上劣势,主要还是因为chunk的分散性导致的。

2、RAG的准确性提升

  • prompt优化,减少问题中的错别字,并尽量对于提问内容表达详细。比如:原始用户查询为“跟我说说托尼”,在原始查询的基础上使用bard重新表述的为:”托尼的政治背景是什么,最显著的成就是什么,政治观点是什么“

  • 保持embedding模型在同一个平面上。

  • chunk的创建也要讲究策略,其中,chunk的大小就是优质的超参,微软通过实验,给出了各超参尺寸下的recall值,可以进行参考。

  • 文本分割的策略的不同,对于召回也会产生影响,根据以下微软的实验结果,可看出多的overlapping对于召回也会有比较好的提升。

另外,embedding模型语义提取能力有限,多主体、多回合的语料库不如简单语料更加有效,在微软的任曦中,最小的chunk大小是512 tiokens,因此,要做好分块的数据实验,根据自身情况调整块大小与分块策略。

一些通用的RAG准确率提升的优化策略可概括为:

  • 大量重叠的chunk可以减少信息的丢失,以此提高准确率;

  • 引入知识图谱,RAG将关系存储到图数据库中,以此保留关系信息。

3、总结

在进行RAG设计的时候,要考虑:

1、LLM是否获得了它需要的信息

2、信息是否以对LLM友好的方式投喂

在构建RAG文件时,有如下通用性建议

1、表述清晰,尽量分拆文件

2、按照属性全部进行描述。如下为优质知识库范例

历史文章: 2024年1月大模型文章集锦

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具