Navigate to WaytoAGI Wiki →
Home/question.detail.breadcrumb.questionList/question.detail.breadcrumb.questionDetail

什么是rag

Answer

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

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

大模型需要 RAG 进行检索优化的原因在于其存在一些缺点:

  1. LLM 无法记住所有知识,尤其是长尾知识,受限于训练数据和学习方式,对长尾知识的接受能力不高。
  2. LLM 的知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。
  3. LLM 的输出难以解释和验证,存在黑盒、不可控以及受幻觉干扰等问题。
  4. LLM 容易泄露隐私训练数据。
  5. LLM 的规模大,训练和运行成本高。

而 RAG 具有以下优点:

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

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

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

  1. 文档加载:从多种不同来源加载文档,LangChain 提供了 100 多种不同的文档加载器,包括 PDF 在内的非结构化的数据、SQL 在内的结构化的数据,以及 Python、Java 之类的代码等。
  2. 文本分割:文本分割器把 Documents 切分为指定大小的块,称为“文档块”或者“文档片”。
  3. 存储:涉及将切分好的文档块进行嵌入转换成向量的形式,并将 Embedding 后的向量数据存储到向量数据库。
  4. 检索:通过某种检索算法找到与输入问题相似的嵌入片。
  5. Output(输出):把问题以及检索出来的嵌入片一起提交给 LLM,LLM 会通过问题和检索出来的提示一起来生成更加合理的答案。
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性能提升策略和评估方法(产品视角)](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]文本加载器就是将用户提供的文本加载到内存中,便于进行后续的处理

Others are asking
dify 实现rag
Dify 是一个开源的大规模语言模型(LLM)应用开发平台,具有以下特点和优势: 1. 配备 RAG 引擎,允许用户编排从代理到复杂 AI 工作流的 LLM 应用。 2. 关键特性: 快速部署,5 分钟内可部署定制化的聊天机器人或 AI 助手。 创意文档生成,能从知识库生成清晰、逻辑性强且无长度限制的文档。 长文档摘要,可轻松对长文档进行摘要。 自定义 API,能安全连接业务知识,解锁更深层次的 LLM 洞察。 连接全球 LLM。 生产就绪,比 LangChain 更接近生产环境。 开源,可被社区广泛使用和改进。 3. 资源获取:可从 Dify 的 GitHub 仓库(https://github.com/langgenius/dify.git 和 https://docs.dify.ai/)获取源代码、文档、安装指南、使用说明和贡献指南等资源。 4. 是一个结合后端即服务和 LLMOps 理念的平台,为用户提供直观界面快速构建和部署生产级别的生成式 AI 应用,具备强大工作流构建工具、广泛模型集成、功能丰富的提示词 IDE 及全面的 RAG Pipeline 用于文档处理和检索,允许定义 Agent 智能体,并通过 LLMOps 功能对应用程序性能持续监控和优化。提供云服务和本地部署选项,满足不同用户需求。其设计理念注重简单性、克制和快速迭代,个人研究可单独使用,企业级落地项目推荐多种框架结合。 5. 官方手册:https://docs.dify.ai/v/zhhans
2024-12-25
RAG
RAG(RetrievalAugmented Generation)即检索增强生成,是一种结合检索和生成能力的自然语言处理架构。 其核心目的是为大语言模型(LLM)提供额外的、来自外部知识源的信息,通过检索模式为大语言模型的生成提供帮助,使生成的答案更符合要求。 大模型需要 RAG 进行检索优化的原因在于其存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,受训练数据和学习方式限制,对长尾知识接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在内容黑盒、不可控及受幻觉问题干扰的情况。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,可解释且不影响原有知识。 3. 数据库内容明确、结构化,加上模型理解能力,降低大模型输出出错可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型训练成本,新知识存储在数据库即可,无需频繁更新模型。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。其最常见应用场景是知识问答系统,用户提出问题,RAG 模型从大规模的文档集合中检索相关的文档,然后生成回答。 RAG 由一个“检索器”和一个“生成器”组成,检索器从外部知识中快速找到与问题相关的信息,生成器则利用这些信息来制作精确和连贯的答案,非常适合处理需要广泛知识的任务,如问答系统,能够提供详细而准确的回答。
2024-12-25
推荐 GraphRAG 的学习文档
以下是为您推荐的 GraphRAG 学习文档: 1. ,其中包含 GraphRAG 相关内容。 2. ,涉及 GraphRAG 内容。 3. ,有关于 GraphRAG 的介绍。 4. ,包含 GraphRAG 相关内容。 5. ,通俗易懂地介绍了 GraphRAG 的原理、与传统 RAG 的区别、GraphRAG 的优势、知识图谱的创建和利用知识图谱工作。
2024-12-24
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