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.数据库维护起来,可以降低大模型的训练成本,毕竟新知识存储在数据库即可,不用频繁更新模型,尤其是不用因为知识的更新而训练模型。
我们从下面SCRIV.AI提出的ChatBot解决方案作为示例,先介绍RAG架构的工作步骤,然后说明提示工程的作用。[heading4]3.1嵌入阶段:[heading5]3.1.1为知识库创建索引[content]从知识库中加载内容,并将其分割成适合嵌入搜索的片段。这个步骤包括了将知识库的内容转换为单个文档,并进一步划分为更小的信息块。[heading5]3.1.2使用嵌入来转换知识片段[content]分割后的知识片段通过嵌入机(embedding machine)转换成数字向量,这些嵌入向量代表了文本的语义内容。[heading5]3.1.3储存嵌入向量到向量数据库[content]将这些嵌入向量与其对应的文本片段一起保存在一个专用的向量数据库中,为之后的检索步骤做准备[heading4]3.2检索&生成阶段:[heading5]3.2.1根据用户问题获取相关信息[content]在用户提出问题时,将这个问题也转换成嵌入向量,并在向量数据库中查找最接近的、与问题最相关的知识片段。[heading5]3.2.2整合检索到的信息[content]将检索到的相关知识片段整合在一起,准备用于下一步的生成过程。[heading5]3.2.3为LLM提供特定的知识来源[content]以特定的格式向大型语言模型(LLM)提供这些整合后的知识片段,作为生成回答的基础。[heading5]3.2.4使用system prompt为LLM提供自定义指令[content]通过system prompt向LLM提供指令,指导其如何利用提供的知识片段来生成回答。[heading5]3.2.5 LLM生成回答[content]LLM利用提供的知识片段和指令生成针对用户问题的回答。[heading5]3.2.6输出答案[content]最后,系统输出LLM生成的、基于检索增强的答案。在这个工作流程中可以看到,作为到模型推理的前一阶段,提示词工程肩负了整合搜索到的知识片段、驱动模型与用户交互、封装业务逻辑等既面向业务又面向技术的中间件功能。
RAG对大语言模型(Large Language Model,LLM)的作用,就像开卷考试对学生一样。在开卷考试中,学生可以带着参考资料进场,比如教科书或笔记,用来查找解答问题所需的相关信息。开卷考试的核心在于考察学生的推理能力,而非对具体信息的记忆能力。同样地,在RAG中,事实性知识与LLM的推理能力相分离,被存储在容易访问和及时更新的外部知识源中,具体分为两种:参数化知识(Parametric knowledge):模型在训练过程中学习得到的,隐式地储存在神经网络的权重中。非参数化知识(Non-parametric knowledge):存储在外部知识源,例如向量数据库中。