RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。
大语言模型(LLM)需要 RAG 进行检索优化,原因在于 LLM 存在一些缺点:
RAG 具有以下优点:
在商业化问答场景中,优化 AI 更准确回答问题的过程称为 RAG。RAG 由检索器和生成器组成,检索器从外部知识中找到相关信息,生成器利用这些信息生成精确连贯的答案,适合处理需要广泛知识的任务。
目前,业界针对 RAG 的优化主要围绕“问题输入”“检索相关信息”“生成回复”这三个环节开展,如通过 COT 等方式提升 LLM 对问题的理解程度,使用特定方式提升语义搜索准确率,选择和优化 embedding 算法保留原始数据信息。但即便每个环节优化到 90%,最终准确率也只有 72%。有一种不用向量也可以 RAG 的方法,基于结构化数据和 LLM 的交互,具有准确、高效、灵活、易扩展等优势。
RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,它旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。简单来说,就是通过检索的模式,为大语言模型的生成提供帮助,从而使大模型生成的答案更符合要求。[heading2]为什么LLM需要RAG?[content]众所周知,大模型已经在很多领域和问题下都取得了很好的效果,那为什么还需要RAG进行检索优化呢?[heading3]LLM的缺点[content]1.LLM无法记住所有知识,尤其是长尾的。受限于训练数据、现有的学习方式,对长尾知识的接受能力并不是很高;长尾数据是指数据集中某些类别数量较少,而其他类别样本数较多的不平衡“长尾”状态。例如在自然语言处理中,一些少见的词汇出现频率很低,而常见的词汇出现频率很高。2.LLM的知识容易过时,而且不好更新。只是通过微调,模型的接受能力其实并不高而且很慢,甚至有丢失原有知识的风险;3.LLM的输出难以解释和验证。一方面最终的输出的内容黑盒且不可控,另一方面最终的结果输出可能会受到幻觉之类的问题的干扰;4.LLM容易泄露隐私训练数据。用用户个人信息训练模型,会让模型可以通过诱导泄露用户的隐私;5.LLM的规模大,训练和运行的成本都很大。[heading3]RAG的优点[content]1.数据库对数据的存储和更新是稳定的,不像模型会存在学不会的风险。2.数据库的数据更新可以做得很敏捷,增删改查可解释,而且对原有的知识不会有影响。3.数据库的内容是明确、结构化的,加上模型本身的理解能力,一般而言数据库中的内容以及检索算法不出错,大模型的输出出错的可能就大大降低。4.知识库中存储用户数据,为用户隐私数据的管控带来很大的便利,而且可控、稳定、准确。5.数据库维护起来,可以降低大模型的训练成本,毕竟新知识存储在数据库即可,不用频繁更新模型,尤其是不用因为知识的更新而训练模型。
其中,她是陈美嘉,这里是人设中的设定。吵架的经过是知识库中的内容。在我提问了之后,大模型去知识库里找到了相关内容,然后回复了我。这就是一个简单的正确回复的demo示例。然而,我们会发现,有时候她的回答会十分不准确。图二明显回答的牛头不对马嘴。图三是知识库截图,其中是有“一菲为美嘉找了一份助教工作”的内容的。但是回答这个问题时,AI并没有根据正确的知识库内容回答。这,就是基于知识库问答中的一个非常常见的错误场景。在其他情况下,甚至有可能出现报价错误、胡编乱造等等。这在严肃场景中,是不能接受的出错。现在应该能够直观的理解,为什么需要让大模型根据知识库回答的更加准确、更符合我们的要求。在AI领域中,优化AI更准确回答问题的过程,有一个更加专业的术语,叫做RAG。接下来,咱们进入正题,一步一步探索,如何优化回答。二、基础概念如果我们要优化幻觉问题和提高准确性,就务必要了解清楚从“问题输入”--“得到回复”,这个过程中,究竟发生了什么。然后针对每一个环节,逐个调优,以达到效果最佳化。因此,我们先深入其中了解问答全貌。[heading3]1、RAG介绍[content]RAG(Retrieval-Augmented Generation),即检索增强生成,是一种结合信息检索和文本生成能力的技术,它由两部分组成:一个“检索器”和一个“生成器”。检索器从外部知识中快速找到与问题相关的信息,生成器则利用这些信息来制作精确和连贯的答案。这种结合使得RAG非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
综上所述,我们可以得到这样一个公式,由于这三个环节是串行的,准确率最终是三者的乘积,因而任何一个环节的短板都将导致整体的准确率完全无法保证。目前来看,业界针对RAG的优化也主要是围绕这三个环节开展通过COT等方式提升LLM对问题的理解程度使用sentence window retrive、rerank等方式提升语义搜索的准确率通过针对的选择和优化embedding算法来最大化的保留原始数据的信息。然而由于最终结果是三者的乘积,即便是耗费大量精力将每个环节都优化到90%,最终乘积也只有72%。那么,有没有一种方法,可以避免数据向量化和语义搜索的问题,直接利用原始数据和LLM的交互,提高RAG的准确率和效率呢?本文的目的就是介绍一种不用向量也可以RAG的方法,它基于结构化数据和LLM的交互,实现了一种新颖的RAG模式,具有准确、高效、灵活、易扩展等优势。