直达「 通往AGI之路 」飞书知识库 →
首页/问答列表/问答详情

什么是RAG

回答

RAG(Retrieval-Augmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。

其旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息。通过检索的模式,为大语言模型的生成提供帮助,使大模型生成的答案更符合要求。

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

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

RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型。其最常见应用场景是知识问答系统。

在一个 RAG 的应用中,可抽象为以下 5 个过程:

  1. 文档加载:从多种不同来源加载文档。
  2. 文本分割:把文档切分为指定大小的块。
  3. 存储:包括将切分好的文档块进行嵌入转换成向量的形式,以及将向量数据存储到向量数据库。
  4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。
  5. 输出:把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示生成更合理的答案。
内容由 AI 大模型生成,请仔细甄别(powered by aily)

参考资料

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

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

因为利用大模型的能力搭建知识库本身就是一个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(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 大模型需要 RAG 进行检索优化,是因为大模型存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控及受幻觉问题干扰的情况。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,可解释且不影响原有知识。 3. 数据库内容明确、结构化,加上模型的理解能力,能降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt 中,提交给大模型,此时大模型的回答会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统。 RAG 由一个“检索器”和一个“生成器”组成,检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息来制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
2024-12-19
如何搭建一个RAG应用?
搭建一个 RAG 应用可以使用 LangChain 平台,以下是相关步骤和组件: 1. 数据加载器(DocumentLoader):这是一个对象,能从数据源加载数据并转换为包含 page_content(文本内容)和 metadata(元数据,如标题、作者、日期等)的文档对象。 2. 文本分割器(DocumentSplitter):可将文档对象分割成多个较小的文档对象,方便后续检索和生成,因为大模型输入窗口有限,短文本更易找到相关信息。 3. 文本嵌入器(Embeddings):能将文本转换为高维向量的嵌入,用于衡量文本相似度以实现检索功能。 4. 向量存储器(VectorStore):可存储和查询嵌入,通常使用 Faiss 或 Annoy 等索引技术加速检索。 5. 检索器(Retriever):能根据文本查询返回相关文档对象,常见实现是向量存储器检索器,利用向量存储器的相似度搜索功能检索。 6. 聊天模型(ChatModel):可根据输入序列生成输出消息,通常基于大模型如 GPT3 实现文本生成功能。 使用 LangChain 构建 RAG 应用的一般流程如下: 首先,使用合适的数据加载器根据数据源类型加载数据。例如,数据源是网页可用 WebBaseLoader 加载和解析网页得到文档对象。 然后,用合适的文本分割器将文档对象分割成较小的符合要求的文档对象。如文本是博客文章,可用 RecursiveCharacterTextSplitter 分割。 接下来,用文本嵌入器将文档对象转换为嵌入,并存储到向量存储器中。可根据嵌入质量和速度选择合适的嵌入器和存储器,如 OpenAIEmbeddings 和 ChromaVectorStore。 之后,创建向量存储器检索器,传递向量存储器对象和文本嵌入器对象作为参数。 最后,创建聊天模型,根据性能和成本选择合适的模型,如 OpenAIChatModel。 以下是一个使用 LangChain 构建 RAG 应用的示例代码。
2024-12-15
RAG 如何测评?
RAG(检索增强生成)的测评方法如下: 1. 可以使用 TruLens 来实现 RAG 三角形的评估方法,具体步骤为: 在 LangChain 中,创建一个 RAG 对象,使用 RAGPromptTemplate 作为提示模板,指定检索系统和知识库的参数。 在 TruLens 中,创建一个 TruChain 对象,包装 RAG 对象,指定反馈函数和应用 ID。反馈函数可以使用 TruLens 提供的 f_context_relevance、f_groundness、f_answer_relevance,也可以自定义。 使用 with 语句来运行 RAG 对象,并记录反馈数据。输入一个问题,得到一个回答,以及检索出的文档。 查看和分析反馈数据,根据 RAG 三角形的评估指标,评价 RAG 的表现。 2. 评估 RAG 生成的文本质量,常用的评估方法包括自动评估指标(如 BLEU、ROUGE 等)、人工评估和事实验证,以衡量生成文本的流畅性、准确性和相关性。 3. 评估 RAG 检索的效果,包括检索的准确性、召回率和效率,其好坏直接影响生成文本的质量。 4. 通过用户调查、用户反馈和用户交互数据来实现用户满意度评估。 5. 对于生成多模态内容的 RAG 系统,需要通过多模态评估指标来评估不同模态之间的一致性和相关性。 6. 对于需要实时更新的 RAG 任务,要考虑信息更新的及时性和效率进行实时性评估。 7. 为了进行客观的评估,通常会使用基准测试集来进行实验和比较不同的 RAG 系统。这些基准测试集包含了多样化的任务和查询,以涵盖不同的应用场景。 评估方法和指标的选择取决于具体的任务和应用场景。综合使用多种评估方法可以更全面地了解 RAG 系统的性能和效果,评估结果可以指导系统的改进和优化,以满足用户的需求。
2024-12-13
RAG 案例
以下是为您提供的关于 RAG 案例的相关内容: 在商业化问答场景中,存在大模型根据知识库回复不准确的情况,如回答牛头不对马嘴、未依据正确内容回答等错误场景,这凸显了优化大模型根据知识库回答准确性的重要性,而在 AI 领域中,此优化过程称为 RAG。 RAG(RetrievalAugmented Generation)即检索增强生成,由检索器和生成器两部分组成。检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确连贯的答案,适合处理需要广泛知识的任务,如问答系统。 在案例研究中: 案例 B 中,用户查询特定研究论文中的“表格 8”及所列因变量,ChatDOC 能有效检索整个表格,包括标题和内容,准确响应查询,而 Baseline 模型未检索到真正的“表格 8”。 OpenAI 在提升 RAG 准确率方面,从 45%开始,尝试多种方法,如假设性文档嵌入和精调嵌入等效果不理想,通过调整信息块大小、嵌入不同内容部分、Reranking、对不同类别问题特别处理、提示工程、查询扩展等方法,最终达到 98%的准确率,强调了模型精调和 RAG 结合使用的潜力。
2024-12-12
rag调优
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合信息检索和文本生成能力的技术,由检索器和生成器两部分组成。检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息来制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。 LLM 需要 RAG 进行检索优化的原因在于 LLM 存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调模型的接受能力不高且慢,甚至有丢失原有知识的风险。 3. 输出难以解释和验证,最终输出内容黑盒且不可控,可能受到幻觉等问题干扰。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,对原有知识无影响。 3. 数据库内容明确、结构化,加上模型本身的理解能力,大模型输出出错的可能大大降低。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 性能提升的策略和方法包括: 1. 优化索引: 按照子部分索引,将文本块再拆分为较小的文本(例如单句),然后对这些小块进行多次索引,适用于有多个主题、有冲突信息的复杂长文本信息。 按照文本框可以回答的问题索引,让 LLM 生成与拆分的文本块相关的假设性问题,并将这些问题用于索引,适用于用户没有提出非常明确问题的情况,可减少模糊性。 按照文本块的摘要进行索引,适用于文本框中有多余信息或者与用户查询无关细节的情况。 2. 重排 rerank:搜到相似信息后选择合适的信息,大部分场景下选择最相似的即可。
2024-12-05
RAG
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 其旨在为大语言模型(LLM)提供额外的、来自外部知识源的信息,通过检索模式为大语言模型的生成提供帮助,使大模型生成的答案更符合要求。 LLM 需要 RAG 进行检索优化的原因在于 LLM 存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控及受幻觉问题干扰的情况。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,对原有知识无影响。 3. 数据库内容明确、结构化,加上模型的理解能力,可降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型的训练成本。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt 中,提交给大模型,此时大模型的回答会充分考虑到“包含答案的内容”。其最常见应用场景为知识问答系统。在商业化问答场景中,优化 AI 更准确回答问题的过程称为 RAG,它由“检索器”和“生成器”两部分组成,检索器从外部知识中快速找到与问题相关的信息,生成器利用这些信息制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
2024-11-30