理解 RAG:简单架构背后的复杂工程

108 阅读3分钟

引言

近年来,Retrieval-Augmented Generation(RAG)在大语言模型(LLM)应用中广泛应用,成为提升生成内容准确性和时效性的关键手段。然而,市面上大量关于 RAG 的教程往往将其架构复杂化,容易让开发者忽略其本质,并混淆其与其他工程模块的边界。

本文旨在厘清 RAG 的核心结构,明确数据工程与应用逻辑的职责划分,并提出一种基于“数据-应用-评估”三位一体的系统工程思维,以支持可持续优化和工程标准化。

一、RAG 架构其实很简单

RAG 的基本流程可以高度简化为以下三个步骤:

用户查询(input query)→ 检索器(retriever)→ LLM生成(generator)

其中,检索器负责从向量数据库或其他知识库中查找与查询相关的内容,作为上下文喂给语言模型,以增强生成结果的相关性与准确性。

关键点在于:RAG 仅负责在查询到生成之间起到桥梁作用,其逻辑非常清晰。

二、数据工程应独立于 RAG 模块

当前许多教程和系统实践中,常将向量化数据的处理流程纳入 RAG 模块中,这在工程上是一种混淆。

事实上,数据的构建、处理与管理应该作为一个独立的“数据工程层”存在。这一层主要职责包括:

  • 数据源抓取与更新(如网页、文档、数据库)
  • 文本清洗与结构化处理
  • Chunk 切分与 Embedding 向量化
  • 存储管理与版本控制

这一工程的复杂度通常远高于 RAG 本身,也更容易影响最终效果。数据工程决定了系统的“知识上限”,是 RAG 成败的根基。

三、数据、应用与评估应处于同一工程层级

从系统架构视角出发,RAG 应被置于更大范围的应用层之中,与“数据工程”和“评估机制”处于平行、互依的地位。我们建议将整个系统视为由三大工程组成:

1. 数据工程(Data Engineering)

负责构建高质量、结构清晰、可版本化的知识源。

2. 应用逻辑(Application Layer)

包括检索器策略、RAG Prompt 设计、多轮交互逻辑、Agent 调度等。

3. 评估机制(Evaluation)

提供质量反馈与迭代驱动,包括自动化评分、人评机制、错误分类等。

这三者共同构成系统的闭环:数据支撑应用,应用驱动评估,评估反哺优化。

四、优化应遵循“冻结-优化”迭代策略

一个稳定的优化流程建议遵循如下模式:

  1. 冻结数据 → 优化应用逻辑(如 Prompt、检索策略、LLM 温度等)
  2. 应用优化达到瓶颈 → 冻结应用 → 调整数据构建策略(如 chunk 粒度、embedding 模型、内容补全)
  3. 不断评估 → 优化迭代 → 达成标准

这一方式确保每轮优化只调整一个变量,避免干扰评估结果,类似于实验设计中的“单变量实验法(OVAT)”。

五、建议的系统架构分层图

+----------------------+
|   Evaluation Layer   | ← 自动评估、人工评审、反馈闭环
+----------------------+
|   Application Layer  | ← 查询解析、检索器、RAG、LLM调用
+----------------------+
|   Data Engineering   | ← 文档抓取、清洗、分块、embedding、存储
+----------------------+

结语

RAG 是强大的工具,但它不是系统的全部。在实际工程中,真正决定效果的是数据工程的完备性、应用逻辑的合理性,以及评估机制的科学性。

只有将“数据 - 应用 - 评估”视为三个并行、相互依赖的工程,并配合有节奏的优化流程,才能构建一个可持续、可扩展的 RAG 系统。

声明:
本文内容为作者基于个人经验与实践进行的独立思考,观点不代表任何机构立场。文章在表达上使用了大语言模型(LLM)辅助润色与结构整理,以提升可读性与条理性,所有核心内容与观点均由作者原创提出。