首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RAG学习笔记(一)

RAG学习笔记(一)

作者头像
用户4176869
发布2026-06-22 16:44:06
发布2026-06-22 16:44:06
110
举报

RAG的崛起与核心价值

大型语言模型(LLMs)以其卓越的文本生成、理解和推理能力,正在深刻改变我们与信息交互的方式。然而,LLMs并非没有局限。它们在面对特定领域知识、实时信息或需要高度事实准确性的场景时,常常暴露出“幻觉”(Hallucination)问题,即生成听起来合理但实际上错误或虚构的内容。此外,LLMs的知识通常停留在其训练数据的截止日期,对于最新事件或动态信息无法感知,存在知识时效性问题。

检索增强生成(Retrieval-Augmented Generation, RAG)技术应运而生。

RAG的核心思想是将外部知识检索机制与LLMs的生成能力相结合,使得模型在生成回答之前,能够从一个或多个外部知识库中检索到相关信息,并以此作为生成的基础。这种结合不仅显著提升了LLMs回答的准确性和可靠性,有效抑制了幻觉现象,还赋予了模型处理实时信息和特定领域知识的能力,极大地扩展了LLMs的应用边界。

从本质上讲,RAG可以被理解为两个核心环节的有机融合:首先,它利用先进的AI技术帮助我们高效地进行信息检索,从海量数据中精准定位所需知识;其次,它反过来利用检索到的信息,辅助大模型进行更有效、更可靠的内容生成。这种双向赋能的机制,使得RAG成为构建高精度、高时效性智能问答系统、知识助手乃至复杂决策支持系统的关键技术。

RAG核心机制剖析:四大基石

一个典型的RAG系统,其工作流程可以概括为用户提出问题,系统进行信息检索,然后基于检索结果生成回答。为了实现这一流畅的闭环,RAG系统通常由以下四大核心组件构成:知识嵌入、向量数据库、检索器和生成器。

整体流程概览

想象一个用户询问:“请解释一下量子纠缠现象。”

无RAG系统下,大模型可能会基于其训练数据中的通用知识进行回答,但如果其训练数据中关于量子纠缠的最新研究或特定细节不足,回答可能不够深入或存在偏差。

例如,它可能会给出:“量子纠缠是一种物理现象,其中两个或多个粒子以某种方式连接,无论它们相距多远,一个粒子的状态都会立即影响另一个粒子的状态。”这个回答虽然基本正确,但可能缺乏最新的实验进展或更深层次的理论解释。

而在有RAG系统的情况下,系统首先会根据用户问题,从预先构建的物理学知识库中检索出关于量子纠缠的相关文档片段,例如:最新的物理学期刊论文、权威教材中的章节、知名物理学家的公开讲座记录等。

然后,这些检索到的片段连同用户问题一起被送入大模型,大模型基于这些信息生成一个详细且准确的回答,例如:“量子纠缠是量子力学中的一个核心概念,描述了两个或多个粒子之间存在的特殊关联。即使这些粒子在空间上分离,测量其中一个粒子的状态会瞬间影响到另一个粒子的状态,这种非局域性是量子力学与经典物理学显著的区别之一……”。

这个例子清晰地展示了RAG如何通过引入外部知识,将大模型的“不知道”变为“知道并能准确回答”,并且能够提供更具时效性和专业深度的信息。

知识嵌入(Embedding)

知识嵌入是RAG系统的第一步,也是至关重要的一步。它的作用是将非结构化的文本知识(如文档、网页、书籍等)转化为高维度的数值向量表示。这些向量能够捕捉文本的语义信息,使得在向量空间中,语义相似的文本片段拥有相近的向量表示。

从技术细节来看,知识嵌入通常通过预训练的深度学习模型实现,例如基于Transformer架构的模型(如BERT、RoBERTa,或专门为嵌入任务设计的Sentence-BERT、OpenAI Embedding模型等)。

这些模型通过学习大量的文本数据,掌握了词语、句子乃至段落的语义关系。当输入一段文本时,模型会输出一个固定长度的向量,这个向量就是该文本的“语义指纹”。选择合适的嵌入模型对于RAG系统的性能至关重要,因为它直接决定了文本语义捕捉的准确性和向量表示的质量。

向量数据库(Vector DB)

向量数据库是RAG系统存储和管理海量向量表示的核心组件。它专门设计用于高效地存储、索引和检索这些高维向量数据。从技术细节来看,传统的数据库(如关系型数据库)不擅长处理高维向量的相似性搜索。向量数据库通过采用特殊的索引结构(如HNSW, IVF, LSH等)来加速相似度查询。

这些索引结构能够在庞大的向量集合中快速找到与给定查询向量最相似的Top-K个向量。相似度计算通常采用余弦相似度(Cosine Similarity)、欧氏距离(Euclidean Distance)等度量方法,以量化向量之间的语义距离。常见的向量数据库包括Milvus、Pinecone、Weaviate、Chroma等,它们提供了高性能的向量存储和检索能力。

检索器(Retriever)

检索器是RAG系统的“大脑”,负责根据用户查询从向量数据库中召回最相关的文档片段。它的目标是找到那些能够为大模型生成高质量回答提供充足上下文支持的信息。

从技术细节来看,当用户提出一个问题时,检索器首先会使用与知识嵌入阶段相同的嵌入模型,将用户查询也转化为一个查询向量。然后,这个查询向量被用于在向量数据库中执行相似度搜索,找出与查询向量最相似的Top-K个文档向量。

这些文档向量对应的原始文本片段(或其引用)就是检索结果。检索器的性能直接影响到RAG系统的最终效果,如果检索到的信息不相关或不准确,大模型即使能力再强也难以生成高质量的回答。

生成器(Generator)

生成器是RAG系统的“嘴巴”,它接收用户问题和检索器提供的相关文档片段作为输入,并利用大模型的能力,生成一个流畅、连贯且基于事实的回答。从技术细节来看,生成器通常是一个大型语言模型(LLM),例如GPT系列、Llama系列、GLM系列等。

在接收到用户问题和检索到的上下文信息后,生成器会通过精心设计的“提示词”(Prompt)将这些信息整合起来。提示词工程(Prompt Engineering)在这里扮演着关键角色,它指导LLM如何利用这些信息来生成回答,例如明确指示LLM“请基于以下资料回答上述问题:[片段1] [片段2] [片段3]”。

此外,根据具体应用场景,可能还需要对LLM进行微调(Fine-tuning),使其更好地适应特定领域的语言风格和知识表达,从而进一步提升生成回答的质量和相关性。

RAG系统快速搭建

对于算法工程师而言,快速上手RAG系统并进行实验是至关重要的。幸运的是,当前业界提供了多种工具和方法,从高级框架到底层手工构建,再到低代码平台,满足不同层次的需求。

框架的力量:LlamaIndex与LangChain

LlamaIndex和LangChain是当前RAG领域最受欢迎的两个开源框架,它们为RAG系统的开发提供了高度抽象和模块化的组件,极大地简化了开发流程。LlamaIndex更侧重于数据摄取、索引构建和查询优化。

它提供了一套完整的工具链,用于将各种数据源(如PDF、网页、数据库等)转化为可检索的索引,并支持多种索引类型和查询模式。LlamaIndex的优势在于其强大的数据管理能力,使得开发者可以轻松地将非结构化数据转化为LLM可用的知识。

LangChain则是一个更通用的LLM应用开发框架,它提供了“链”(Chains)的概念,允许开发者将不同的LLM组件(如模型、提示词、解析器、工具等)串联起来,构建复杂的LLM应用。在RAG场景中,LangChain提供了丰富的检索器、文档加载器和向量存储集成,使得构建RAG流程变得直观和高效。

这两个框架都提供了丰富的示例和集成,开发者可以快速地利用它们来搭建一个基本的RAG系统,并尝试不同的嵌入模型和LLM。

高级编排:LCEL与LangGraph

随着RAG系统复杂度的提升,简单的链式调用可能无法满足需求。LangChain为此引入了LCEL(LangChain Expression Language)和LangGraph,提供了更强大、更灵活的编排能力。LCEL提供了一种声明式的方式来构建LLM应用。

它的核心特点包括组件式设计,即将LLM应用拆分为可复用的独立组件;管道式(Pipeline)数据流,即数据在组件之间以管道的形式流动,清晰直观;高度可组合性,允许开发者将小组件组合成大组件,构建任意复杂的逻辑;兼容异步执行,支持异步操作,提升系统并发性能;以及易于调试和扩展,模块化的设计使得问题定位和功能扩展更加便捷。

LangGraph是LangChain家族中用于构建多步骤、有状态LLM应用的利器。它将LLM应用视为一个图(Graph),其中节点代表不同的操作或LLM调用,边代表状态的转移。

LangGraph的特点包括基于状态(State)驱动的执行模型,即整个应用的状态在不同节点间传递和更新;DAG(有向无环图)任务流,支持复杂的任务依赖和分支逻辑,而非简单的线性执行;任务模块化,每个节点都是一个独立的任务模块,易于测试和替换;灵活的控制流,可以根据条件动态地改变执行路径;以及并行执行,支持任务的并行处理,提升效率。

LangGraph与传统LangChain在执行方式、状态管理、任务复用、分支逻辑、并行执行和复杂度方面存在显著差异。传统LangChain采用线性执行和手动变量传递,适用于简单任务;而LangGraph则基于DAG,支持统一状态自动传递,通过add_conditional_edges()实现分支逻辑,通过add_parallel()自动并行,更适用于复杂任务。

LangGraph的引入,为RAG系统带来了更广阔的扩展可能性,例如增加条件分支,根据不同类型的问题调用不同的检索器(例如,对于事实性问题使用精确匹配检索,对于开放性问题使用语义检索);加入并行任务,同时执行关键词匹配和向量搜索,然后对结果进行融合;以及增加RAG质量评估,在生成前对检索结果进行重排序(reranking)或置信度评分,以确保输入给LLM的上下文质量。

低代码/可视化工具:加速开发

对于快速原型开发或非编程背景的用户,一些低代码或可视化AI开发工具(如Coze、Dify、RagFlow等)提供了拖拽式的界面和预设的RAG组件,使得构建RAG应用变得像搭积木一样简单。这些工具通常集成了多种LLM、嵌入模型和向量数据库,并提供了方便的部署和管理功能。

RAG系统优化策略

构建一个基本的RAG系统相对容易,但要使其在实际应用中表现出色,则需要精细的优化。RAG的优化可以从数据准备、检索效果和生成质量三个主要方面入手。

数据准备与索引优化

高质量的知识库是RAG系统性能的基石。文档分块策略(Chunking)是关键一环,因为原始文档通常很长,直接作为上下文输入LLM会超出其上下文窗口限制,且可能引入无关信息。

因此,需要将文档切分成更小的“块”(chunks)。常见的分块策略包括简单地按字符数或Token数进行切分的固定长度分块,但这种方式可能导致语义不完整;尝试根据文档的结构(如段落、章节)或语义完整性进行切分的语义分块,确保每个块都包含一个相对独立的概念;以及在固定长度分块的基础上,引入重叠部分,以保留上下文连续性的滑动窗口分块。

除了文本内容,文档的元数据(如作者、日期、来源、主题标签等)对于检索和过滤至关重要。利用元数据可以实现更精准的检索,例如只检索特定时间范围内的文档,或特定作者的文章。此外,知识库是动态变化的,需要定期更新索引以反映最新信息,这包括增量更新、删除过期数据和重建索引等操作。

检索效果优化

检索的准确性直接决定了LLM生成回答的质量。查询扩展(Query Expansion)是一种有效手段,因为用户查询可能过于简短或模糊,导致检索效果不佳。

可以通过同义词扩展,将查询中的关键词替换为同义词;相关概念扩展,自动添加与查询相关的概念或短语;或者利用LLM辅助扩展,根据用户查询生成多个潜在的查询变体。

重排序(Reranking)可以对初步检索结果进行二次排序,向量检索通常会返回Top-K个相似度最高的文档,但这些文档并非都同样相关。

重排序器(Reranker)可以根据更复杂的语义匹配或相关性模型,提升最终召回结果的质量,这通常涉及一个独立的模型,对查询和每个检索到的文档对进行打分。

混合检索(Hybrid Search)结合了关键词搜索(如BM25)和向量相似度搜索的优势。关键词搜索在精确匹配方面表现优异,而向量搜索擅长语义匹配。混合检索可以弥补单一检索方式的不足,提升召回率和准确性。

生成质量优化

即使检索到了高质量的上下文,LLM的生成能力也需要被充分利用。提示词工程进阶是关键,除了基本的指令,可以尝试更复杂的提示词策略。

例如角色设定,让LLM扮演特定角色(如“你是一个专业的法律顾问”),以影响其回答风格和内容;思维链(Chain-of-Thought)提示,引导LLM逐步思考,分解问题,从而生成更严谨的回答;

以及少样本学习(Few-shot Learning),在提示词中提供少量高质量的问答示例,引导LLM学习期望的回答模式。上下文窗口管理也至关重要,LLM的上下文窗口大小有限。

在RAG中,需要确保检索到的信息能够有效利用LLM的上下文窗口,避免截断重要信息或引入过多无关内容。可以考虑对检索结果进行摘要或精炼,以适应上下文窗口。

最后,答案事实性与流畅性评估是衡量RAG系统生成回答质量的重要环节。这包括事实性评估,检查回答是否与检索到的信息一致,是否存在幻觉;流畅性评估,评估回答的语法、连贯性和可读性;以及相关性评估,评估回答是否准确地解决了用户的问题。

总结

检索增强生成(RAG)技术在大模型时代扮演着越来越重要的角色。它通过将外部知识引入LLM的生成过程,有效解决了大模型在知识时效性、事实准确性和特定领域应用方面的痛点。

从核心组件的协同工作,到利用LlamaIndex、LangChain等框架快速搭建。

再到通过LCEL、LangGraph进行高级编排,以及深入底层的手工构建,RAG的开发生态日益完善。而通过对数据准备、检索效果和生成质量的持续优化,RAG系统能够为用户提供更加精准、可靠和个性化的智能服务。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 翻身AI挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RAG的崛起与核心价值
    • RAG核心机制剖析:四大基石
    • RAG系统快速搭建
    • RAG系统优化策略
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档