Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

解释一下RAG

Answer

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。

大模型存在一些缺点,如无法记住所有知识(尤其是长尾知识)、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有诸多优点:

  1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。
  2. 数据库的数据更新敏捷,增删改查可解释,且对原有知识无影响。
  3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。
  4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。
  5. 数据库维护可降低大模型的训练成本。

在实际应用中,如本地部署大模型以及搭建个人知识库时,利用大模型搭建知识库就是 RAG 技术的应用。RAG 的应用可抽象为文档加载、文本分割、存储(包括嵌入和向量数据存储)、检索、输出这 5 个过程。在产品视角下,RAG 常见应用于知识问答系统,其核心流程是根据用户提问从私有知识中检索相关内容,与提问一起提交给大模型生成回答。

Content generated by AI large model, please carefully verify (powered by aily)

References

问: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.数据库维护起来,可以降低大模型的训练成本,毕竟新知识存储在数据库即可,不用频繁更新模型,尤其是不用因为知识的更新而训练模型。

手把手教你本地部署大模型以及搭建个人知识库

因为利用大模型的能力搭建知识库本身就是一个RAG技术的应用。所以在进行本地知识库的搭建实操之前,我们需要先对RAG有一个大概的了解。以下内容会有些干,我会尽量用通俗易懂的描述进行讲解。我们都知道大模型的训练数据是有截止日期的,那当我们需要依靠不包含在大模型训练集中的数据时,我们该怎么做呢?实现这一点的主要方法就是通过检索增强生成RAG(Retrieval Augmented Generation)。在这个过程中,首先检索外部数据,然后在生成步骤中将这些数据传递给LLM。我们可以将一个RAG的应用抽象为下图的5个过程:文档加载(Document Loading):从多种不同来源加载文档。LangChain提供了100多种不同的文档加载器,包括PDF在内的非结构化的数据、SQL在内的结构化的数据,以及Python、Java之类的代码等文本分割(Splitting):文本分割器把Documents切分为指定大小的块,我把它们称为“文档块”或者“文档片”存储(Storage):存储涉及到两个环节,分别是:将切分好的文档块进行嵌入(Embedding)转换成向量的形式将Embedding后的向量数据存储到向量数据库检索(Retrieval):一旦数据进入向量数据库,我们仍然需要将数据检索出来,我们会通过某种检索算法找到与输入问题相似的嵌入片Output(输出):把问题以及检索出来的嵌入片一起提交给LLM,LLM会通过问题和检索出来的提示一起来生成更加合理的答案[heading2]文本加载器(Document Loaders)[content]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理

RAG性能提升策略和评估方法(产品视角)

作者:牛大局原文:[RAG性能提升策略和评估方法(产品视角)](https://iac2rhlh02p.feishu.cn/wiki/WL4Lwx5dyigl4zkZQojc7esQnWf)[heading1]一、前言[content]相信经过一年的知识沉淀,RAG是什么大家都不陌生了。RAG是检索增强生成(Retrieval-Augmented Generation)的缩写,它是一种结合了检索模型和生成模型的技术。其核心目的是通过某种途径把知识告诉给AI大模型,让大模型“知道”我们的私有知识,变得越来越“懂”我们。RAG的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。RAG的最常见应用场景知识问答系统:RAG可以用于构建问答系统,用户提出问题,RAG模型从大规模的文档集合中检索相关的文档,然后生成回答。

Others are asking
rag分几种模式
RAG 主要分为以下几种模式: 1. 基础 RAG(Naive RAG) 2. 高级 RAG(Advanced RAG) 3. 模块化 RAG(Modular RAG) 其工作流程包括: 1. 上传文档:用户上传包含知识的文档,支持 txt、pdf、docx 等格式,LangChain Chatchat 会将文档转换为 Markdown 格式。 2. 文本切割:为了便于分析和处理,将长文本切割为小块(chunk)。 3. 文本向量化:将切割的 chunk 通过 embedding 技术,转换为算法可以处理的向量,存入向量数据库。 4. 问句向量化:用户提问后,同样将用户的问句向量化。 5. 语义检索匹配:将用户的问句与向量数据库中的 chunk 匹配,匹配出与问句向量最相似的 top k 个。 6. 提交 Prompt 至 LLM:将匹配出的文本和问句,一起添加到配置好的 prompt 模板中,提交给 LLM。 7. 生成回答:LLM 生成回答,返回给用户。 在典型的 RAG Flow 模式方面,包括以下微调阶段模式和推理阶段模式。 此外,RAG 就像是一个超级智能的图书馆员,具有检索、增强和生成三个步骤。其优点包括成本效益、灵活性和可扩展性;缺点是回答准确性相对专有模型的方案不够。
2025-01-16
解释一下RAG
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构,旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。 大模型存在一些缺点,如无法记住所有知识(尤其是长尾知识)、知识容易过时且不好更新、输出难以解释和验证、容易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有诸多优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,且对原有知识无影响。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本。 在实际应用中,如本地部署大模型以及搭建个人知识库时,利用大模型搭建知识库就是 RAG 技术的应用。RAG 的应用可抽象为文档加载、文本分割、存储(包括嵌入和向量数据存储)、检索、输出这 5 个过程。在产品视角下,RAG 常见应用于知识问答系统,其核心流程是根据用户提问从私有知识中检索相关内容,与提问一起提交给大模型生成回答。
2025-01-16
rag
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 大模型需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控及受幻觉问题干扰的情况。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 的优点包括: 1. 数据库对数据的存储和更新稳定,不存在学不会的风险。 2. 数据更新敏捷,可解释且不影响原有知识。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 便于管控用户隐私数据,且可控、稳定、准确。 5. 可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt 中,提交给大模型,让其回答充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。RAG 由“检索器”和“生成器”两部分组成,检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确连贯的答案,适合处理需要广泛知识的任务,如问答系统,能提供详细准确的回答。
2025-01-14
RAG是什么意思
RAG 即检索增强生成(RetrievalAugmented Generation),是一种结合检索和生成能力的自然语言处理架构。 其旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。通过检索的模式,为大语言模型的生成提供帮助,使大模型生成的答案更符合要求。 大模型需要 RAG 进行检索优化,是因为大模型存在一些缺点,如: 1. 无法记住所有知识,尤其是长尾的。受限于训练数据和现有的学习方式,对长尾知识的接受能力不高。 2. 知识容易过时,且不好更新。微调模型的接受能力不高且慢,甚至有丢失原有知识的风险。 3. 输出难以解释和验证。最终输出的内容黑盒且不可控,可能受到幻觉等问题的干扰。 4. 容易泄露隐私训练数据。用用户个人信息训练模型,会让模型可以通过诱导泄露用户的隐私。 5. 规模大,训练和运行的成本都很大。 而 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不像模型会存在学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,对原有的知识不会有影响。 3. 数据库的内容明确、结构化,加上模型本身的理解能力,一般而言数据库中的内容以及检索算法不出错,大模型的输出出错的可能就大大降低。 4. 知识库中存储用户数据,为用户隐私数据的管控带来很大的便利,而且可控、稳定、准确。 5. 数据库维护起来,可以降低大模型的训练成本,新知识存储在数据库即可,不用频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。 LangChain 是一个用于构建高级语言模型应用程序的框架,它提供了一系列的工具和组件,使得开发人员能够更容易地使用大型语言模型(LLM)来创建各种应用程序。LangChain 和 RAG 的关系包括: 1. LangChain 作为框架,提供了实现 RAG 所必需的工具和组件,RAG 作为技术可在 LangChain 框架内得以实施和利用。 2. LangChain 允许开发者通过其模块化组件来构建 RAG 应用程序。 3. LangChain 通过提供现成的链和提示模板,简化了 RAG 应用程序的开发过程。 4. 利用 LangChain 实现 RAG 可以帮助开发者创建更高效、更准确的应用程序。 5. LangChain 通过其丰富的 API 和组件库,支持开发者构建复杂的 RAG 应用,如智能问答系统、内容推荐引擎等。
2025-01-10
RAG可以学习多大的知识库
RAG 可以让大模型从权威的、预先确定的知识来源中检索、组织相关信息,更好地控制大模型生成的文本输出,并且用户可以深入了解 LLM 如何生成最终的结果。 RAG 对大语言模型的作用就像开卷考试对学生一样,事实性知识与 LLM 的推理能力相分离,被存储在容易访问和及时更新的外部知识源中,具体分为参数化知识(模型在训练过程中学习得到,隐式地储存在神经网络的权重中)和非参数化知识(存储在外部知识源,例如向量数据库中)。 但目前没有关于 RAG 可以学习知识库大小的明确说明。
2025-01-10
是否有推荐的RAG 框架
以下为您推荐常用的 RAG 框架: LangChain 是一个为简化大模型应用开发而设计的开源框架。它通过提供一套模块化的工具和库,允许开发者轻松集成和操作多种大模型,使开发者能将更多精力投入到创造应用的核心价值上。其设计注重简化开发流程,支持广泛的模型,具有良好的可扩展性,以适应不断变化的业务需求。作为一个得到社区广泛支持的开源项目,LangChain 拥有活跃的贡献者和持续的更新,同时提供了全面的文档和示例代码帮助新用户快速掌握。此外,LangChain 在设计时充分考虑了应用的安全性和用户数据的隐私保护,是一个多语言支持的灵活框架,适用于各种规模的项目和不同背景的开发者。 LangChain 官方手册:https://python.langchain.com/docs/get_started/introduction/
2025-01-08
请解释一下AI智能体的概念及功能
AI 智能体是指类似于 AI 机器人小助手的存在。简单理解,参照移动互联网,它类似 APP 应用的概念。AI 大模型是技术,而面向用户提供服务的产品形式就是智能体,所以很多公司关注 AI 应用层的产品机会。 在 C 端,比如社交方向,用户注册后先创建自己的智能体,然后让其与他人的智能体聊天,聊到一起后真人再介入,这是一种有趣的场景;还有借 Onlyfans 入局打造个性化聊天的创业公司。在 B 端,如果字节扣子和腾讯元器是面向普通人的低代码平台,类似 APP 时代的个人开发者,那还有帮助 B 端商家搭建智能体的机会,类似 APP 时代专业做 APP 的。 目前有不少大厂推出自己的 AI 智能体平台,如字节的扣子、阿里的魔搭社区等。AI 智能体拥有各项能力,能帮我们做特定的事情。它包含了自己的知识库、工作流,还可以调用外部工具,再结合大模型的自然语言理解能力,就可以完成比较复杂的工作。AI 智能体的出现是为了解决像 GPT 或者文心一言大模型存在的胡编乱造、时效性、无法满足个性化需求等问题,结合自身业务场景和需求,定制出适合自己的智能体来解决问题。 例如,扣子(Coze)是字节跳动旗下的新一代一站式 AI Bot 开发平台,无论用户是否具备编程基础,都能在该平台上迅速构建基于 AI 模型的各类问答 Bot,开发完成后还可将其发布到各种社交平台和通讯软件上供用户交互聊天。创建智能体通常包括起名称、写介绍、使用 AI 创建头像等简单步骤。
2024-12-17
帮我解释一下AI和人工智能、机器学习的关系
AI 即人工智能,是一个广泛的概念,旨在让计算机模拟人类智能。 机器学习是人工智能的一个重要分支。它指的是计算机通过寻找数据中的规律进行学习,包括监督学习、无监督学习和强化学习等方式。 监督学习使用有标签的训练数据,目标是学习输入和输出之间的映射关系,包括分类和回归任务。 无监督学习处理的数据没有标签,算法自主发现规律,经典任务如聚类。 强化学习则是从反馈中学习,以最大化奖励或最小化损失,类似于训练小狗。 深度学习是一种参照人脑神经网络和神经元的方法,由于具有很多层所以称为深度。神经网络可用于监督学习、无监督学习和强化学习。 生成式 AI 能够生成文本、图片、音频、视频等内容形式。 LLM 是大语言模型,对于生成式 AI ,生成图像的扩散模型不属于大语言模型;对于大语言模型,生成只是其中一个处理任务,如谷歌的 BERT 模型可用于语义理解,像上下文理解、情感分析、文本分类等,但不擅长文本生成。 2017 年 6 月,谷歌团队发表论文《Attention is All You Need》,首次提出了 Transformer 模型,它基于自注意力机制处理序列数据,比 RNN 更适合处理文本的长距离依赖性。
2024-10-15
帮我解释一下transformer
Transformer 的工作流程如下: 1. 输入嵌入(Input Embeddings):将每个单词映射为一个向量,例如将“ I ”映射为一个 512 维的向量。 2. 位置编码(Positional Encodings):由于 Transformer 没有能捕获序列顺序的结构,如递归或卷积,所以给每个词位置加上位置编码,让模型知晓词语的相对位置。 3. 编码器(Encoder):输入序列的嵌入向量和位置编码相加后被送入编码器层。编码器由多个相同的层组成,每层有两个核心部分,一是多头注意力机制(MultiHead Attention),用于捕捉单词间的依赖关系;二是前馈神经网络(FeedForward NN),对 attention 的结果进行进一步编码。 4. 解码器(Decoder):编码器的输出被送入解码器层。解码器同样由多个相同层组成,每层除了编码器组件外,还有一个额外的注意力模块,对编码器的输出序列建模依赖关系。 5. 输出嵌入(Output Embeddings):解码器最后一层的输出被映射为输出单词概率分布,例如生成“我”“是”等单词的概率。 6. 生成(Generation):基于概率分布,以贪婪或 beam search 等解码策略生成完整的输出序列。 注意力机制是 Transformer 最关键的创新,允许模型捕获长距离依赖关系。多头注意力可并行计算,因此高效。残差连接和层归一化有助于优化网络。整体上,Transformer 无递归和卷积结构,计算并行化程度高,更适合并行加速。 Transformer 是一个大参数(千亿级别)的回归方程,其底层是 function loss 损失函数。它是在一定 prompt condition 情况下,repeat 曾经出现过的数据内容,实现“生成”能力。回归方程的 Function loss 拟合 A to B mapping 关系,实现数据集的压缩与还原。 在公众传播层面,AIGC 指用 Stable Diffusion 或 Midjourney 生成图像内容,后来泛指用 AI 生成音乐、图像、视频等内容;LLM 指 NLP 领域的大语言模型,如 ChatGPT;GenAI 是生成式人工智能模型,国内官方政策文件使用这个词相对科学,涵盖了 LLM 和 AIGC;AGI 指通用人工智能。公众传播一般会混用上述名词,但底层是 Transformer 结构。 大语言模型是一个 perfect memory,repeat 曾经出现的内容。它与 Alpha Go 有差异,Alpha Go 是一个增强学习模型,学习结果会调整模型自身参数,有推理能力,但大语言模型在推理这块很弱。Transformer 决定 LLM 是一个生成式模型。
2024-10-12
我是一个小学生,给我解释一下什么是AI
AI 是一门令人兴奋的科学,它研究如何使计算机表现出智能行为,例如做一些人类所擅长的事情。简单来说,就是让计算机或机器能像我们人类一样思考和学习的技术。 在小学课堂上,可以用学生能理解的语言来解释 AI。比如,先和学生互动,听听他们口中的 AI,再引出我们的概念。可以告诉学生,AI 就像一个聪明的机器人,它可以通过学习和分析大量的数据,来完成各种任务,例如识别图像、语音识别、翻译等。 虽然计算机已经很先进了,但有些任务我们并不知道明确的解法,例如从一个人的照片中来判断他/她的年龄。而 AI 对这种类型的任务感兴趣,它可以通过学习和分析大量的照片数据,来学会如何判断一个人的年龄。 总之,AI 是一种非常酷的技术,它可以帮助我们解决很多难题,让我们的生活变得更加便捷和有趣。
2024-07-09
请解释一下langchain和RAG的关系?
LangChain是一个用于构建高级语言模型应用程序的框架,它提供了一系列的工具和组件,使得开发人员能够更容易地使用大型语言模型(LLM)来创建各种应用程序。LangChain的设计主张集中在模块化组件上,这些组件提供用于使用LLM的行为抽象,并为每个抽象提供实现的集合,从而允许开发人员构造新链或实现现成的链。 RAG,即检索增强生成(RetrievalAugmented Generation),是一种结合了检索(检索外部知识库中相关信息)和生成(利用LLM生成文本)的技术。RAG能够为LLM提供来自外部知识源的附加信息,使得LLM在应对下游任务时能够生成更精确和上下文相关的答案,并减少LLM的幻觉现象。 LangChain和RAG之间的关系可以概括为: 1. 框架与技术:LangChain作为一个框架,提供了实现RAG所必需的工具和组件。RAG作为一项技术,可以在LangChain框架内得以实施和利用。 2. 模块化实现:LangChain允许开发者通过其模块化组件来构建RAG应用程序,例如使用LangChain的检索器(Retriever)和生成模型(LLM)来创建一个完整的RAG流程。 3. 简化开发:LangChain通过提供现成的链(Offtheshelf chains)和提示模板(Prompt Templates),简化了RAG应用程序的开发过程。 4. 提高性能:利用LangChain实现RAG可以帮助开发者创建更高效、更准确的应用程序,特别是在需要大量外部信息来辅助决策的场景中。 5. 应用构建:LangChain通过其丰富的API和组件库,支持开发者构建复杂的RAG应用,如智能问答系统、内容推荐引擎等。 总的来说,LangChain为RAG提供了一个强大的基础设施,使得开发者可以更容易地实现复杂的、基于LLM的应用程序,同时RAG作为LangChain支持的关键技术之一,能够帮助应用程序更好地利用外部知识源,提升应用的性能和准确性。
2024-04-22