应用通用大模型构建基于企业私有知识库内容的智能助手,离不开RAG(全称:Retrieval Augmented Generation,检索增强生成)的支持,同时也是目前最火热的LLM应用方案。RAG的出现更好的解决了通用大模型的知识局限性、生成幻觉以及数据安全性问题,它的核心流程是根据用户的提问检索企业自有的知识库,并将检索结果通过大模型能力生成回答反馈给用户。数智索年初推出的基于大模型的企业知识助手解决方案(PS:还没有收到消息的小伙伴,可以回顾1月份的这篇文章 https://diswdata.com/detail/36 )正是基于RAG来实现,以下通过一张图例介绍下关键流程:
以上流程的所有动作均为全自动化过程,企业只需上传相关的本地知识文档便可构建智能知识助手。
但是,但是,但是,经过我们这一个多月实际测试及验证,RAG遇到了越来越多的限制。包括下面几点:
-
向量检索能力的限制: RAG效果的好坏,受限于向量算法的使用以及检索内容的语法问题(博大精深的中文比英文的复杂度高出好几个量级)。
-
人工搜索效率低下:人类并不擅长在搜索系统中输入他们想要的东西,比如打字错误、模糊的查询或有限的词汇,这通常会导致错过明显的顶级搜索结果之外的大量信息。虽然RAG有所帮助,但它并没有完全解决这个问题。
-
搜索的过度简化:我们流行的搜索模式将查询线性地映射到答案,缺乏深度来理解人类查询的多维本质。这种线性模型通常无法捕捉更复杂的用户查询的细微差别和上下文,从而导致相关性较低的结果。
OK,既然有限制,效果达不到我们想要的状态,我们尝试了另外一种玩法,将数智索的大模型企业知识助手等到了跨越式的升级。
从RAG到RAG-Fusion
RAG-Fusion中文意思是融合检索增加生成,通过生成多个用户相关查询和重新排序结果来解决RAG固有的约束,以及利用倒数排序融合(RRF)和自定义向量评分加权,生成全面准确的结果。以下提供一张图来对比一下和RAG的区别:
暂时无法在飞书文档外展示此内容
通过上图可以看到,在原有本地知识库的基础上,用户提问及回答的流程中增加了三个关键动作,解决用户提问的过度简化、有限的词汇以及中文语义多样化的问题。
-
将用户的原始提问经过大模型生成相似的多个问题,挖掘用户的意图。
-
多个大模型生成的问题均进行向量化,并发检索向量库,召回多个检索的结果。
-
多个召回的结果,通过权重以及重排序算法,优中选优交给大模型生成答案。
我们团队使用阿里通义千问大模型以及Langchain框架,来验证RAG-Fusion的效果,这里贴一张我们搭建成果
在相同本地知识库的条件下,经过优化升级后的数智索企业知识助手得到了以下3点提升:
1、优质的检索结果
相关文档的重新排序意味着不仅仅是在抓取提问中的字面意思,而是在深入这个搜索的意图,所以会涉及到更多的优质文档和待搜索内容,通过重排算法优中选优。
2、增强用户意图对齐
类似于在Google、百度搜索输入是,会进行输入框的自动补全提示,基于RAG Fusion的数智索知识助手可以捕获用户信息需求的多个方面,从而提供整体输出并与对用户意图进行增强。
3、自动为用户的查询输入纠错
数智索知识助手系统不仅可以解释用户的查询,还可以精炼用户的查询。通过生成多个查询变体,RAG Fusion执行隐式拼写和语法检查,从而提高搜索结果的准确性。