从数据到答案:RAG 工作流深度拆解

一、概述

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合检索系统与生成模型的技术架构。其核心思想是:在 LLM 生成回答之前,先从知识库中检索相关文档或片段(chunk),将检索结果作为上下文提供给 LLM,从而提升回答的准确性和可信度,同时有效缓解 LLM 的「幻觉」问题。

RAG 主要解决以下问题:

  • 知识时效性问题:LLM 的训练数据有截止日期,无法获取最新信息。RAG 通过实时检索外部知识库,使系统能够回答训练数据之后的新知识。
  • 私域知识问题:企业内部的专有数据(如内部文档、产品手册、客户资料等)不会被纳入通用 LLM 的训练数据。RAG 可以将这些私域知识纳入检索范围,使 LLM 能够回答特定领域的问题。
  • 幻觉问题:LLM 有时会「编造」看似合理但实际错误的信息。RAG 通过提供可靠的检索结果作为上下文,约束 LLM 的回答范围,显著降低幻觉发生的概率。

从整体上看,RAG 工作流程分为两个阶段:

  • 离线数据存储阶段:把各种来源的知识库源文件,经过处理后存储到向量数据库中。
  • 在线检索阶段:用户输入查询内容,系统完成检索和生成,最终输出结果。

二、离线数据存储阶段

离线阶段的核心目标是将原始文档转化为可检索的向量数据。整个流程可分为以下几个步骤:

2.1 数据收集

从各类知识来源收集原始文档,包括 PDF、Word、Markdown、网页等多种格式。来源可能包括内部文档库、产品手册、FAQ、技术文档等。

2.2 数据清洗

对原始数据进行格式化和校验,去除无效符号(如乱码、特殊控制字符)、重复内容、噪声数据等,确保后续处理的输入质量。

2.3 文档切分(Chunking)

将文档切分成一个个小的文本块(Chunk),这是因为:

  • 完整文档通常过长,超出 LLM 的上下文窗口限制
  • 细粒度的 Chunk 便于精准检索,避免引入过多无关上下文
  • 合理的切分策略直接影响检索效果和生成质量

常见的切分策略包括按段落、按句子、滑动窗口、基于语义等方法。具体策略的选择需要根据业务场景和文档特点来决定。

详细的chunk切分策略可以查看这篇文章:RAG 检索的 Chunk 切分策略完全指南

2.4 Embedding 向量化

使用 Embedding 模型将切分后的 Chunk 转化为稠密向量,然后存储到向量数据库中。模型的选择需要考虑维度、语言支持、领域适配等因素。

详细的Embedding模型选择可以查看这篇文章:RAG检索效果差?可能是你的Embedding模型没选对!

2.5 向量数据库存储

将向量化后的 Chunk 连同其元数据(如来源文档、时间、标签等)一并存入向量数据库。常用的向量数据库包括 Milvus、Pinecone、Chroma、Weaviate 等。

2.6 质量验证

数据入库后应进行抽样质量检查,包括:验证 Embedding 是否正确生成、Chunk 内容是否完整、关键信息是否丢失等,确保知识库的基础质量。

三、在线检索阶段

在线阶段是 RAG 系统响应用户查询的核心流程。我们通过拆解这个问题来理解:

「在一个 RAG 系统中,用户输入检索内容后,都发生了什么?」

3.1 意图识别

对用户输入进行意图识别,判断用户想要做什么。常见的处理包括:

  • 闲聊/问候类内容(如「你好」、「hello」)→ 直接返回固定回复,减少检索资源消耗
  • 知识问答类 → 走 RAG 检索通道
  • 特定场景区分 → 根据业务领域进行细分,如电商场景中的产品查询、售后咨询等

3.2 路由分发(Routing)

根据意图识别结果,将请求分发到不同的处理通道。例如,电商场景中产品咨询走产品知识库通道,售后问题走售后知识库通道。路由可以使后续检索更加专业和精准。

3.3 Query 预处理

对用户输入进行规范化处理,包括:

  • 去除空白字符、空行
  • 纠正错别字、拼写错误
  • 统一标点符号格式

3.4 Query 改写与扩展

针对搜索场景优化的预处理步骤:

  • Query 改写:理解用户真实意图,改写为更利于检索的表达
  • Query 扩展:补充同义词、近义词、相关概念,提升召回率
  • Query 分解:将复杂问题拆分为多个简单子问题,便于多步检索

3.5 Query Embedding

将预处理后的 Query 向量化,然后到向量数据库中进行检索。这一步使用的 Embedding 模型应与离线阶段保持一致。

3.6 多路召回(Multi-Channel Retrieval)

实际应用中通常采用多路召回策略,通过多种途径获取综合性的候选结果:

  • 向量检索(Dense Retrieval):基于语义相似度进行匹配
  • 关键词检索(Sparse Retrieval):如 BM25,捕捉词汇层面的精确匹配
  • 混合检索:结合向量检索和关键词检索的优势
  • 其他:根据业务需要,还可以引入知识图谱检索、协同过滤等

3.7 Rerank 重排

根据多路召回的结果,进行更精准的筛选和排序。常用的方法包括:

  • 交叉编码器(Cross-Encoder):对 Query 和候选 Chunk 进行精细化打分
  • 相关性过滤:根据相似度分数过滤低质量结果
  • 多样性考量:避免返回内容高度相似的结果,保证覆盖度

最终返回 Top-K 个最相关的 Chunk 作为后续生成的输入。

3.8 上下文组装

将重排后的检索结果拼接到 Prompt 中,形成完整的上下文。需要注意:

  • 控制上下文长度,避免超出 LLM 的 token 限制
  • 必要时对上下文进行压缩或摘要,提取最关键的信息
  • 保持信息的完整性和连贯性

3.9 LLM 生成

将组装好的 Prompt 发送给 LLM,由 LLM 生成最终回答。

补充说明:在简单的知识库问答系统中,上述步骤即为完整的处理流程。但在复杂的 Agent 系统中,Prompt 拼接和 LLM 调用可能只是某一次工具调用的一部分。系统需要根据 LLM 的返回结果判定是否需要继续检索、进行其他工具调用,或执行其他任务——这就是 Agent 工作流相关的内容了。

四、RAG 评估体系

评估 RAG 系统通常从两个维度进行:

检索质量

衡量检索系统找到相关信息的能力,常用指标包括:召回率(Recall)、精确率(Precision)、MRR(Mean Reciprocal Rank)、NDCG 等。

生成质量

衡量 LLM 生成回答的质量和相关性,常用方法包括:人工评估、自动评估(如 RAGAS 框架)、LLM-as-Judge 等。

五、总结

RAG 工作流程涵盖了从数据处理到最终生成的完整链路。离线阶段完成知识库的构建,在线阶段完成用户查询的理解、检索和回答生成。理解每个环节的作用和优化点,是构建高质量 RAG 系统的基础。

随着技术的发展,RAG 也在持续演进,从简单的检索增强到 Agentic RAG、自适应检索、多跳推理等高级能力不断丰富。在实际应用中,应根据业务场景和需求,选择合适的方案组合。

暂无评论

发送评论 编辑评论


				
上一篇