RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合了检索和生成的技术。
其在多个基准测试中表现出色,如在 Natural Questions、WebQuestions 和 CuratedTrec 等中。用 MS-MARCO 和 Jeopardy 问题进行测试时,生成的答案更符合事实、具体且多样,FEVER 事实验证使用后也有更好结果。基于检索器的方法越来越流行,常与 ChatGPT 等流行 LLM 结合使用以提高能力和事实一致性。
RAG 是一种结合检索和生成的技术,能让大语言模型在生成文本时利用额外的数据源,提高生成质量和准确性。基本流程是:先根据用户输入从数据源检索相关文本片段作为上下文,然后将用户输入和上下文拼接传递给大语言模型,最后提取或格式化大语言模型的输出给用户。
大语言模型存在一些缺点,如无法记住所有知识尤其是长尾知识、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有诸多优点,如数据库对数据的存储和更新稳定,数据更新敏捷且可解释,能降低大模型输出出错可能,便于管控用户隐私数据,还能降低大模型训练成本。
RAG在[Natural Questions(opens in a new tab)](https://ai.google.com/research/NaturalQuestions)、[WebQuestions(opens in a new tab)](https://paperswithcode.com/dataset/webquestions)和CuratedTrec等基准测试中表现抢眼。用MS-MARCO和Jeopardy问题进行测试时,RAG生成的答案更符合事实、更具体、更多样。FEVER事实验证使用RAG后也得到了更好的结果。这说明RAG是一种可行的方案,能在知识密集型任务中增强语言模型的输出。最近,基于检索器的方法越来越流行,经常与ChatGPT等流行LLM结合使用来提高其能力和事实一致性。LangChain文档中可以找到[一个使用检索器和LLM回答问题并给出知识来源的简单例子(opens in a new tab)](https://python.langchain.com/docs/use_cases/question_answering/quickstart)。
RAG(Retrieval-Augmented Generation)是一种结合了检索和生成的技术,它可以让大语言模型在生成文本时利用额外的数据源,从而提高生成的质量和准确性。[heading2]流程:[content]RAG的基本流程是:首先,给定一个用户的输入,例如一个问题或一个话题,RAG会从一个数据源中检索出与之相关的文本片段,例如网页、文档或数据库记录。这些文本片段称为上下文(context)。然后,RAG会将用户的输入和检索到的上下文拼接成一个完整的输入,传递给一个大语言模型,例如GPT。这个输入通常会包含一些提示(prompt),指导模型如何生成期望的输出,例如一个答案或一个摘要。最后,RAG会从大语言模型的输出中提取或格式化所需的信息,返回给用户。[heading2]优点:[content]RAG技术的优点是可以利用额外的数据源提供模型所缺乏的知识和信息,从而提高生成的质量和多样性。
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.数据库维护起来,可以降低大模型的训练成本,毕竟新知识存储在数据库即可,不用频繁更新模型,尤其是不用因为知识的更新而训练模型。