摘要:在企业级应用中,直接问 ChatGPT 往往得不到准确答案,因为模型不知道你的私有数据。RAG(Retrieval-Augmented Generation,检索增强生成)是目前解决这一问题的标准架构。本文不谈数学公式,只从数据流的角度,拆解 RAG 是如何运作的。
1. 为什么需要 RAG?
大语言模型(LLM)有两个核心缺陷:
- 知识截止:模型训练完那一刻,它的知识就定格了。它不知道今天发生的新闻。
- 数据隐私:它不知道你公司的内部文档、合同或代码库。
要解决这个问题,有两种思路:
- Fine-tuning(微调):把你的数据喂给模型重新训练。这就像送模型去“进修”。成本极高,且更新数据很麻烦。
- RAG(检索增强):不改变模型本身,而是在提问前,先去你的数据库里查资料,把查到的资料作为“参考答案”喂给模型。这就像“开卷考试”。
RAG 是目前性价比最高、落地最快的方案。
2. 核心流程:三步走
RAG 的本质不是 AI 技术,而是搜索技术 + 生成技术的组合。
第一步:数据入库(Indexing)
在大模型介入之前,我们需要先把私有数据(PDF、Word、Wiki)整理好。
- 切片(Chunking):大模型一次能读的字数有限(Context Window)。我们不能把整本书塞进去,必须把文本切成小块(比如每 500 字一块)。
- 向量化(Embedding):这是最关键的一步。计算机不认识文字,只认识数字。我们需要用一个模型(Embedding Model)把每一段文字变成一串长长的数字数组(向量)。
特点:意思相近的句子,转化出的数字也相近。
说明: 用于展示“向量空间”概念,表现文字如何转化为空间中的坐标点。
存入向量数据库(Vector DB):把这些数组存起来,方便以后快速查找。
第二步:检索(Retrieval)
当用户提问时:
- 用户的问题也被转化成向量。
- 系统拿着这个“问题向量”,去数据库里找跟它最相似的“文档向量”。
- 系统找出最相似的 Top 3 或 Top 5 个片段。
第三步:生成(Generation)
这是大模型真正发挥作用的时候。我们将“用户的提问”和“找到的片段”拼凑成一个新的 Prompt(提示词):
- 系统提示词:你是一个助手。请仅根据以下背景信息回答用户问题,不要编造。
- 背景信息:[这里填入刚才检索到的 Top 5 片段]
- 用户问题:[用户的原始问题]
大模型阅读这些背景信息,然后用通顺的语言总结出答案。
说明: 展示 RAG 的完整数据流:文档 -> 向量库 -> 大脑(LLM)。
3. RAG 的技术难点
看起来很简单,但在实际开发中,有几个坑:
3.1 切片的艺术
切多大?
- 太小:句子支离破碎,模型看不懂上下文。
- 太大:包含太多无关信息,干扰模型判断,且容易撑爆上下文窗口。
解决:通常采用“滑动窗口”,比如 500 字一片,每片之间重叠 100 字,保证句子完整性。
3.2 语义搜索的局限
向量搜索是基于“语义”的,但有时候它不够精准。
用户搜“苹果财报”,可能搜出水果苹果的种植技术,也可能搜出苹果公司的财务数据。
解决:混合检索(Hybrid Search)。同时使用“关键词搜索”(像百度那样匹配字面)和“向量搜索”(匹配含义),然后加权算分。
4. 实战落地:基于 AWS 的云原生架构
在生产环境中,我们极少从零手写 Python 脚本来管理这些流程,而是使用云服务来保证高可用和安全性。以下是 AWS 平台上的标准组件映射:
说明: 标准的 AWS 架构图风格,展示 S3、OpenSearch 和 Bedrock 的连接关系。
4.1 核心组件映射
- 模型层 (The Brain): Amazon Bedrock 是一个 Serverless API 服务。你不需要管理 GPU 服务器,直接通过 API 调用 Claude 3、Llama 3 或 Amazon Titan 模型。优势:数据不出境,符合企业合规(数据不会被用于训练模型)。
- 向量存储 (The Memory): Amazon OpenSearch Serverless (Vector Engine): 专业的向量检索引擎,支持高并发和混合检索(关键词+向量)。
- Amazon Aurora PostgreSQL (pgvector): 如果你的业务数据本身就在 PG 数据库里,直接装个 pgvector 插件是最简单的方案,无需维护新的数据库。
4.2 两种架构模式
模式 A:全托管模式 (Knowledge Bases for Amazon Bedrock)
这是 AWS 的“一键 RAG”方案,你只需要把 PDF 扔进 S3 Bucket。在 Bedrock 控制台勾选“创建知识库”,AWS 自动 帮你完成切片、Embedding、入库 OpenSearch 的全过程,适用于快速验证、文档问答类应用。
模式 B:自定义流水线 (DIY Pipeline)
如果你需要精细控制切片算法(比如按 Markdown 标题切分)或使用特殊的 Embedding 模型。
计算: 使用 AWS Lambda 运行 LangChain/LlamaIndex 代码。
存储: 自建 OpenSearch 索引。
模型: 通过 Boto3 SDK 调用 Bedrock。
适用:复杂业务逻辑、需要结合 SQL 数据查询的场景。
5. 总结
RAG 并不是什么黑科技。它的本质是一个精准的搜索引擎加上一个能读懂搜索结果的文案编辑。
- 搜索引擎(Vector DB / OpenSearch)负责找资料。
- 大模型(LLM / Bedrock)负责读资料和写回答。
对于大多数想做“企业知识库”、“智能客服”的公司来说,RAG 是唯一正确的起步路线。不要一上来就去微调模型,先把检索做好,效果往往更好。


