RAG 技术体系:从向量检索到生产级 Pipeline
RAG(Retrieval-Augmented Generation)的核心思路很简单:LLM 的上下文窗口有限,不要全塞,只塞相关的。从外部知识库检索相关内容,注入 prompt,让模型基于检索结果生成回答。
完整流程:写入 + 检索
两个阶段:
写入(Ingestion):原始文档 → 切块(Chunking)→ Embedding 模型编码 → 存入向量数据库。
检索(Retrieval):用户提问 → 同一个 Embedding 模型编码 → 向量相似度搜索 → 取出 Top-K → Rerank 精排 → 取 Top-N 注入 prompt → LLM 生成回答。
接下来按 Pipeline 的顺序,逐个拆解每个环节。
Chunking:切块的核心矛盾
切太大 → embedding 把所有语义平均了,搜什么都"有点像"但不精确。切太小 → 丢失上下文,“它用 REST” 里的"它"指什么都不知道。
从简单到智能,主要策略:
Fixed Size + Overlap:固定 400 tokens,重叠 100 tokens。简单有效,但会从句子中间切断。
Recursive Character Splitter:LangChain 默认方案。按优先级递归尝试分隔符:\n\n→\n→.→ 字符。尽量保持段落/句子完整。
Document-Aware:根据文档结构切——Markdown 按标题,代码按函数,HTML 按 section。
Semantic Chunking:对每个句子生成 embedding,计算相邻句子的 cosine similarity,在相似度断崖式下降的地方切分:
每个 chunk 内部语义自洽,但预处理成本高。
Small-to-Big:解决经典矛盾
存两层 chunk:小 chunk(100 tokens)用于精准检索,大 chunk(500 tokens,parent)用于返回给 LLM,保证上下文完整。可以和上面任何策略组合使用。
Embedding:有损压缩,不可逆
Embedding 把文本映射到高维空间中的一个点。语义相近的文本,在空间中距离相近:
“我喜欢吃苹果” → 点 A
“我爱吃水果” → 点 B(离 A 很近)
“苹果发布新 iPhone” → 点 C(离 A 远,虽然都有"苹果")
关键认知:400 tokens 文本被压缩成 1536 维向量,信息量大幅减少。向量不能反推出原文。
所以向量库每条记录存三样东西:vector(用于搜索)、text(原文,用于返回)、metadata(来源、时间戳等)。检索时通过向量找到位置,返回的是存储的原文——跟 Google 搜索用索引找网页是一个道理。
Rerank:两阶段检索 Pipeline
向量检索的 Top-K 排序往往不够准。解决方案:粗排 + 精排两阶段。
Stage 1 — Bi-Encoder(粗排):查询和文档分别编码成向量,算 cosine similarity。文档向量可预计算,查询时只算一个向量。快(毫秒级),但 query 和 document 之间没有深度交互。
Stage 2 — Cross-Encoder(精排):把查询和文档拼在一起[Query SEP Doc],经过完整 Transformer self-attention,输出 relevance score。每对 (query, doc) 都要跑一次完整 forward pass。慢(百毫秒级),但排序更准。
举个例子,查询 “推荐一本 Python 入门书”:
| 阶段 | Doc1《Python编程从入门到实践》 | Doc2《Python入门很简单》 | Doc3《算法导论第四版》 |
|---|---|---|---|
| Bi-Encoder 粗排 | 0.71 | 0.92 | 0.45 |
| Cross-Encoder 精排 | 0.88 | 0.95 | 0.31 |
粗排已经把 Doc2 排到了第一,但精排进一步拉开了差距——Doc3 从 0.45 降到 0.31,说明深度交互后模型更确信它不相关。
本质区别:Bi-Encoder 是"各自画肖像再比较",Cross-Encoder 是"放在一起仔细端详"。
常见 Reranker:Cohere Rerank(API,最方便)、bge-reranker-v2(开源,中英文都强)、cross-encoder/ms-marco-MiniLM(经典开源)。
Hybrid Search:语义 + 关键词双路检索
单靠向量搜索不够:它能理解"我习惯用什么语言"和"喜欢 TypeScript"是相关的,但搜精确 ID、错误代码不准。BM25 关键词搜索精确匹配好,但不懂语义。
两路并行搜索后需要合并排名。最常用的方法是RRF(Reciprocal Rank Fusion)——不看分数(BM25 和 cosine 量纲不同),只看排名:
示例:
chunk_A:BM25 排名第 1,向量排名第 2 → RRF = 1/61 + 1/62 =0.0325
chunk_B:BM25 没出现,向量排名第 1 → RRF = 0 + 1/61 =0.0164
在两个搜索里都排名靠前的文档,合并后分数最高。简单、对异常分数鲁棒。
生产推荐
| 级别 | 组合 |
|---|---|
| 最简单 | Recursive Splitter + 400 tokens + 100 overlap |
| 推荐 | Document-Aware + Small-to-Big + Rerank |
| 高精度 | Semantic Chunking + Small-to-Big + Hybrid Search + Rerank |
K(召回数量):没有 reranker 时 5 到 10,有 reranker 时 20 到 50。太小会丢失相关文档,太大则 reranker 负担重。
N(注入 prompt 数):通常 3 到 5。受限于 prompt 空间和Lost in the Middle效应——LLM 对 prompt 中间部分注意力最弱。塞太多半相关 chunk 反而会分散模型注意力。
RAG 的已知局限
Recall 问题——该想起来的没想起来
噪声——什么都存,检索出半相关内容
时效性——新旧信息混在一起,无法区分
无推理能力——只能找直接相关的,不能跨文档推理
Lost in the Middle——注入太多 chunk 时中间部分被忽略
RAG 不是万能的,但它是目前让 LLM 接入外部知识最实用的方案。理解每个环节的 trade-off,才能在生产中做出正确的工程取舍。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
