当前位置: 首页 > news >正文

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.710.920.45
Cross-Encoder 精排0.880.950.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 的已知局限

  1. Recall 问题——该想起来的没想起来

  2. 噪声——什么都存,检索出半相关内容

  3. 时效性——新旧信息混在一起,无法区分

  4. 无推理能力——只能找直接相关的,不能跨文档推理

  5. 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时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.jsqmd.com/news/907338/

相关文章:

  • 保姆级教程:用PyTorch Geometric搭建GCN,实战DEAP脑电情绪分类(附完整代码)
  • 深入UGUI底层:手把手教你用OnPopulateMesh和顶点偏移,实现Image的任意变形(不只是倾斜)
  • 大数据处理:Spark与分布式计算
  • 用 Nerfstudio 和手机照片,5分钟快速生成你的第一个 3D 数字手办(Nerfacto 模型实战)
  • 告别双系统安装噩梦:Intel RST模式下无损切换AHCI,保住Windows再装Ubuntu
  • 论文降AI率工具怎么选?2026年4款降AI软件实测一次选对
  • 从零开发游戏需要学习的c#模块,第二十九章(经验值与升级系统)
  • 从一次“幻觉”到一次“进化”:AI事实核查错误的深度剖析与系统改进启示
  • 从状态检查到数据备份:仓储PLC控制器保养周期与实操清单
  • 效率拉满!VS Code 安装 Qoder CN(原通义灵码)详细教程
  • MySQL—隔离级别和MVCC
  • Docker 网络进阶:容器间通信与 DNS 解析
  • 百度网盘提取码智能查询:3步告别资源获取烦恼的终极指南
  • 别再只关RST了!深入聊聊Intel快速存储技术(RAID)与Ubuntu/Linux的‘爱恨情仇’
  • Arduino旋转电位器应用:从模拟信号读取到Processing数据可视化
  • 不是所有 AI 产品都适合出海,真需求和全球化幻觉差在哪? | 嗨点小圆桌
  • 从压电传感器到示波器:手把手教你搭建电荷放大器与低通滤波器(含Multisim仿真与PCB焊接避坑指南)
  • Jetson Orin Nano + DeepStream 6.2 实战:将YOLOv5模型集成到生产级视觉流水线
  • Python爬虫实战:批量下载校园风光图
  • 10427条密码产品证书全部收集到,我发现几个数据跟认知完全对不上
  • 如何查物种的12S基因片段是否存在于NCBI公共数据库?
  • 别再傻傻用软件SPI了!实测STM32硬件SPI驱动GC9A01屏幕,速度提升10倍(附完整代码)
  • 打破大模型 KV Cache 魔咒:一种让跨模型 Agent 缓存 99% 命中的动态工具注入方案
  • 从音响制造到AI家庭娱乐生态:不见不散AI智能K歌音响亮相第二十届深圳国际金融博览会
  • 百年名校焕新光智底座,华为“领航”光智共融
  • Windows电脑也能玩转AI大模型!6G显存就能本地部署,免费无限用!
  • 北斗导航“指路”申通西安转运中心让特产寄递跑出“加速度”
  • 3D点云处理新思路:ParSeNet如何用“聚类+拟合”两阶段网络搞定复杂曲面重建?
  • Arduino电子钢琴DIY:从电路设计到C++编程的嵌入式音乐项目实践
  • 用鼠标单击我的电脑桌面图标或单击文件夹会自动变成重命名状态