💡

文章摘要

RAG 已从「向量搜索 + LLM」的简单模式演进为七阶段企业级管线。本文系统讲解 RAG 架构演进(Naive → Modular → Agentic)、嵌入模型选型(MTEB 基准与 2026 排行榜)、向量检索算法(HNSW/IVF/DiskANN)、重排序技术(Cross-Encoder/ColBERT)、文档分块策略(语义分块与上下文悬崖)、以及 RAG 评估体系(RAGAS 五大指标)。一篇讲透 RAG 全链路核心知识。

一、RAG 架构演进:从 Naive RAG 到 Agentic RAG

核心论点:RAG 不再是单一模式,而是一个架构家族。2026 年的 RAG 系统已经从「检索一次 → 生成一次」的线性管线,演进为具备自主推理能力的智能检索系统。

Naive RAG(2023) 是最初的形态:用户查询 → 向量检索 Top-K → 拼接上下文 → LLM 生成。这种模式的问题在于「检索一次」——如果第一次检索没有命中正确答案,后续生成必然失败。研究表明,Naive RAG 在需要多步推理的复杂问题上,准确率不超过 45%。

Advanced RAG(2024-2025) 引入了多项优化:

  • 查询改写(Query Rewriting):用 LLM 将用户模糊查询改写为多个精确检索查询
  • HyDE(Hypothetical Document Embedding):先让 LLM 生成一个「假想答案」,用假想答案的嵌入向量去检索,比直接用问题检索效果更好
  • Self-RAG:模型自己判断是否需要检索、检索结果是否有用、生成结果是否被上下文支持
  • Corrective RAG(CRAG):检索后自动评估结果质量,不合格则触发二次检索或外部知识源

Modular RAG(2025-2026) 是当前生产系统的主流架构。每个组件(分块嵌入、检索、重排序、生成)都是独立可替换的模块,可以根据场景灵活组合。Spring AI 1.x、LangChain 1.x、LlamaIndex 都按这个理念设计。

Agentic RAG(2026) 是最前沿的范式:RAG 系统与 Agent 循环深度融合。系统不再「检索一次就生成」,而是推理是否需要检索、检索什么、何时停止。一个典型的 Agentic RAG 工作流:

  1. 分析用户问题 → 判断需要哪些知识
  2. 制定检索策略 → 选择数据源和检索方式
  3. 执行检索 → 评估结果质量
  4. 如果信息不足 → 改写查询,再次检索
  5. 如果信息充分 → 综合所有检索结果,生成回答
  6. 自我检查 → 确认回答被上下文支持

这种「检索-推理-反思」循环使 RAG 系统在复杂多跳问题上的准确率从 45% 提升到 78%。

图表加载中…

💡 一句话理解

选择 RAG 架构的决策树:简单 FAQ → Naive RAG;企业知识库 → Modular RAG + 重排序;复杂多跳推理 → Agentic RAG。不要过度设计——80% 的场景用 Advanced RAG 就够了。

⚠️ 常见踩坑

Agentic RAG 的代价是延迟和成本。每次「再检索」都意味着额外的 LLM 调用和向量检索。在生产环境中,设置最大检索轮数(通常 2-3 轮)防止无限循环。

二、嵌入模型:RAG 的语义基石

核心论点:嵌入模型是 RAG 系统中最容易被忽视、却对最终效果影响最大的组件。一个好的嵌入模型选择可以将检索精度提升 20-30%。

嵌入模型的本质是将文本映射到高维向量空间中的点。语义相似的文本在向量空间中距离更近。RAG 系统的质量上限,很大程度上取决于嵌入模型能否准确捕捉文档的语义。

MTEB(Massive Text Embedding Benchmark 是评估嵌入模型的标准基准,覆盖 56 个数据集、8 类任务(检索、聚类、分类、重排序、语义相似度等)。关键陷阱MTEB 总分是所有任务的平均值。如果你的场景是 RAG/语义搜索,只看 Retrieval 子榜——一个总分 65 但检索分 55 的模型,会输给总分 62 但检索分 60 的模型。

2026 年嵌入模型 Top 10(MTEB 排行榜):

排名 模型 MTEB 维度 类型 特点
1 Qwen3-Embedding-8B 70.6 4096 开源 Apache 2.0 多语言,MTEB 多语言榜首
2 Gemini Embedding 68.3 768 API 超低价格 $0.008/1M token
3 gte-Qwen3-8B 68.1 4096 开源 Apache 2.0 阿里 GTE 系列
4 NVIDIA NV-Embed 67.5 4096 开源 基于 Llama-3.1-8B
5 Cohere Embed v4 65.2 1536 API 首个生产级多模态嵌入
6 OpenAI text-embedding-3-large 64.6 3072 API 生态完善
7 Voyage-3 63.8 1024 API 领域特化(法律/金融/代码)
8 BGE-M3 63.2 1024 开源 MIT 100+ 语言,568M 参数
9 Jina Embeddings v3 62.8 8192 API/开源 最大 8192 维
10 Nomic-embed-v2 61.4 768 开源 轻量 137M 参数

关键趋势:

  • 开源追平闭源:Qwen3-Embedding-8B 在 MTEB 上超越 OpenAI 和 Cohere 的商业 API
  • 多模态嵌入崛起:Gemini Embedding 2 支持文本/图像/视频/音频/PDF 统一嵌入空间
  • Matryoshka 训练:模型支持动态维度压缩(如 4096→1024→256),用更少存储换取可接受的精度损失
  • 领域特化模型:Voyage 的法律/金融/代码特化模型在垂直领域超越通用模型 10-15%

选型建议:

  • 追求极致性能 + 多语言 → Qwen3-Embedding-8B(自部署)
  • 成本敏感 + 大规模 → Gemini Embedding($0.008/1M token)或 BGE-M3(自部署)
  • 多模态需求 → Gemini Embedding 2 或 Cohere Embed v4
  • 边缘/低延迟 → Qwen3-Embedding-0.6B(600M 参数,64-128 维)
场景推荐模型理由

通用 RAG(多语言)

Qwen3-Embedding-8B

MTEB 多语言检索第一,Apache 2.0

成本敏感大规模

Gemini Embedding

$0.008/1M token,质量接近顶级

多模态 RAG

Gemini Embedding 2

文本/图像/视频/音频统一空间

领域特化(法律/金融)

Voyage-3 Legal/Finance

垂直领域超越通用模型 10-15%

边缘/低延迟

Qwen3-Embedding-0.6B

600M 参数,64 维即可工作

开源自部署

BGE-M3

MIT 许可,100+ 语言,成熟稳定

💡 一句话理解

选择嵌入模型时,永远在你的真实数据和真实查询上做基准测试。公共排行榜分数不等于你的场景表现。一个在 MTEB 上排第 5 的模型,在你的特定领域数据上可能排第 1。

⚠️ 常见踩坑

不要只看 MTEB 总分。RAG 场景只看 Retrieval 子榜分数。另外,维度越高 ≠ 效果越好——高维度意味着更多存储和更慢检索,关注「每参数性能比」。

三、向量检索算法:HNSW、IVF、DiskANN 的原理与选型

核心论点:向量检索算法决定了 RAG 系统的速度和可扩展性。 brute-force 精确搜索在百万级数据上不可行,近似最近邻(ANN)算法是生产系统的唯一选择。

为什么需要 ANN? 精确 KNN 搜索需要计算查询向量与所有候选向量的距离,时间复杂度 O(n)。当向量库有 1000 万条文档时,每次查询需要计算 1000 万次距离——这在实时系统中不可接受。ANN 算法通过牺牲少量精度(通常 recall 从 100% 降到 90-98%),换取 100-10000 倍的速度提升。

三大主流 ANN 算法:

1. HNSWHierarchical Navigable Small World

HNSW 是目前最广泛使用的 ANN 算法。它构建一个多层图结构:

  • 底层包含所有数据点,点之间按邻近关系连接
  • 上层是稀疏的「快捷方式」层,允许搜索快速跳到远距离区域
  • 搜索从最高层开始,逐层向下,每层贪心地走向最近的邻居

类比:想象你要找一个城市里的某家店。底层是步行(逐条街搜索),上层是地铁(快速跨区),最顶层是飞机(跨城市)。你坐飞机到目标城市,坐地铁到目标区域,最后步行到目标店铺。

优势:高 recall(95%+)、低延迟(1-2ms/查询@百万级)、无需训练阶段
劣势:内存占用大(需存储图结构)、构建时间较长
适用:中等规模数据集(百万级)、对 recall 要求高、内存充足

2. IVF(Inverted File Index

IVF 借鉴了文本检索中倒排索引的思想:

  • 用 K-Means 将向量空间划分为 L 个 Voronoi 单元(聚类)
  • 每个向量分配到最近的聚类中心
  • 搜索时只检查查询向量最近的 nprobe 个聚类

优势:内存效率高(不需存储图边)、天然支持过滤查询(先按聚类粗筛)
劣势:需要训练阶段(K-Means)、数据更新需重新聚类、recall 通常略低于 HNSW
适用:大规模数据集(千万-亿级)、内存受限、需要过滤查询

3. DiskANN(Vamana)

DiskANN 是微软研究院提出的基于 SSD 的图索引算法:

  • 图结构存储在 SSD 上,而非内存
  • 通过精心设计的 I/O 模式,使 SSD 随机读取延迟可接受
  • 在内存中保留导航图的「骨架」

优势:支持超大规模数据集(十亿级)、内存占用极低
劣势:延迟高于纯内存方案(P99 延迟 10-100ms)
适用:超大规模、内存放不下全部数据、可接受稍高延迟

辅助技术:

  • PQ(Product Quantization:将向量切分为子向量,每个子向量用码本压缩。可将内存降低 8-32 倍,但 recall 下降 5-15%
  • SQ(Scalar Quantization:将 FP32 量化为 INT8/INT4,内存降低 4-8 倍

生产选型决策:

  • 数据集 < 1000 万 + 内存充足 → HNSW
  • 数据集 > 1000 万 + 内存受限 → IVF-PQ
  • 数据集 > 1 亿 + 需要 SSD 存储 → DiskANN
  • 需要高过滤率查询 → IVF(IVF 天然支持先按聚类过滤,HNSW 在高过滤率下性能退化)
算法Recall@10延迟(百万级)内存占用可扩展性最佳场景

HNSW

95-99%

1-2ms

高(图结构)

百万级

高 recall 优先

IVF-PQ

85-95%

2-5ms

低(量化压缩)

千万-亿级

内存受限

DiskANN

93-98%

10-50ms

极低(SSD)

十亿级

超大规模

ScaNN

90-96%

1-3ms

百万级

Google 生态

LSH

80-90%

<1ms

高维稀疏

极端高维

💡 一句话理解

HNSW 的两个关键参数:M(每层最大连接数,通常 16-64)和 efConstruction(构建时搜索宽度,通常 100-500)。M 越大 recall 越高但内存越大。efConstruction 越大索引质量越好但构建越慢。

⚠️ 常见踩坑

IVF 的 nprobe 参数是 recall 与速度的核心权衡。nprobe 太小 → recall 低;nprobe 太大 → 退化为暴力搜索。通常从 sqrt(L) 开始调优(L 为聚类数)。

四、重排序(Reranking):从 Bi-Encoder 到 Cross-Encoder

核心论点:重排序是 RAG 管线中 ROI 最高的单一优化。在检索 Top-50 之后加一个 Cross-Encoder 重排序,可以将最终精度提升 5-15 个 NDCG 点。

为什么需要重排序 向量检索(Bi-Encoder)为速度而设计——查询和文档独立编码,通过 ANN 快速找到近似最近邻。这种架构的代价是:查询和文档之间没有细粒度的交互。Bi-Encoder 能确保正确答案出现在 Top-50 中,但无法确保它排在 Top-1。

三种重排序架构:

1. Cross-Encoder(交叉编码器)

Cross-Encoder 将查询和文档拼接在一起,作为一个整体输入 Transformer 模型,输出一个相关性分数。典型形式为:输入 [CLS] 查询文本 [SEP] 文档文本 [SEP],输出一个相关性标量分数。

优势:最高精度——查询和文档在每个 Transformer 层都有完整的注意力交互
劣势:计算成本高——每对 (查询, 文档) 需要一次完整的 Transformer 前向传播
适用:对 Top-50 到 Top-100 候选做精排,不适用于百万级初筛

2. ColBERT(延迟交互)

ColBERT 是 Bi-Encoder 和 Cross-Encoder 之间的折中方案:

  • 为查询和文档的每个 token 分别生成嵌入向量(而非整个文本一个向量)
  • 相关性评分通过 MaxSim 操作计算:每个查询 token 找到文档中最匹配的 token,取余弦相似度,然后求和

公式:Score(q,d) = Σ_i max_j cos(q_i, d_j)

优势:比 Cross-Encoder 快 2-5 倍(无需联合前向传播),精度接近
劣势:存储成本高 10-100 倍(每个 token 一个向量)
适用:中等规模语料(1K-10K 文档)的高精度检索

3. LLM-as-Reranker

用 LLM 直接评估查询和文档的相关性。2025-2026 年出现了一批专门的重排序 LLM。

优势:最强语义理解能力,可以处理复杂的多约束查询
劣势:最慢(100-2000ms/对)、最贵
适用:仅对 Top-10 到 Top-20 做最终精排

生产管线的标准模式:Bi-Encoder 检索 Top-100 → Cross-Encoder 重排序 Top-10 → LLM 生成。

这个三阶段管线在精度和成本之间取得了最佳平衡。Bi-Encoder 负责「大海捞针」,Cross-Encoder 负责「优中选优」,LLM 负责「理解生成」。

2026 年重排序模型推荐:

  • 开源自部署:BGE-Reranker-v2-M3、Cohere Rerank 3.5(有免费额度)
  • API 服务:Voyage Rerank 2.5、Cohere Rerank 3.5、Jina Reranker v3
  • 极致性能:ColBERTv2(MIT 许可)
架构延迟(每查询)存储精度提升适用场景

Bi-Encoder

<1ms

1 向量/文档 ~3KB

基线

百万级初筛

Cross-Encoder

50-500ms (Top-100)

无(实时计算)

+5-15 NDCG

Top-100 精排

ColBERT

5-50ms

1 向量/token ~30KB

+3-8 NDCG

中等语料高精度

LLM-Reranker

100-2000ms

+6-10 NDCG

Top-20 最终精排

💡 一句话理解

重排序的 K 值选择(从多少候选中重排)需要实验。太少(K=10)可能遗漏正确答案;太多(K=200)增加延迟且引入噪声。典型值是 K=50-100。

⚠️ 常见踩坑

Cross-Encoder 的许可证要注意:很多模型使用 CC-BY-NC-4.0(非商业)。如果你的产品是商业的,务必确认模型许可证,或使用 API 服务。

五、文档分块策略:语义分块的艺术

核心论点:当检索失败时,问题通常不在检索算法,而在分块Chunking)。错误的分块策略将相关概念切断、引入噪声,使再好的嵌入模型也无能为力。

分块为什么重要? RAG 系统的检索单元是「块」,不是「文档」。如果分块太大,一个块包含多个不相关主题,嵌入向量被「稀释」,检索精度下降;如果分块太小,一个块缺少足够上下文,即使检索命中也无法提供完整信息。

六大分块策略对比:

1. 固定长度分块(Fixed-Size)
按固定字符数或 Token 数切分。最简单,也是最常用的基线。

  • 推荐配置:400-512 tokens,10-20% 重叠
  • 优势:速度快、可预测
  • 劣势:无视语义边界,可能在段落中间切断

2. 句子级分块(Sentence-Based)
按句子边界切分,确保每个块以完整句子结束。

  • 优势:不会在句子中间切断
  • 劣势:块大小不均匀(有些句子很长)

3. 递归字符分块(RecursiveCharacterTextSplitter)
LangChain 的默认策略。按优先级依次尝试多种分隔符(


→ 空格 → 字符),直到块大小满足要求。

  • 2026 年基准测试中,递归 512-token 分块在综合评测中排名第一(69% 准确率)
  • 优势:兼顾结构感知和可控块大小
  • 推荐作为默认选择

4. 语义分块(Semantic Chunking
嵌入模型计算相邻句子的语义相似度,在相似度骤降处切分。

  • 相似度阈值通常设为 0.5-0.8
  • 优势:块内语义连贯
  • 劣势:计算成本高(索引时需要嵌入计算)、块大小不均匀
  • 2025 年临床研究:自适应语义分块在临床决策支持中达到 87% 准确率,固定大小只有 13%

5. 层级分块(Hierarchical Chunking
同时维护多个粒度的分块(段落级、章节级、文档级),检索时根据查询复杂度选择合适粒度。

  • 简单事实查询 → 段落级块
  • 概念解释查询 → 章节级块
  • 优势:适应不同查询需求
  • 劣势:索引存储倍增

6. Agentic 分块(LLM-Suggested)
用 LLM 分析文档内容,智能决定分块边界。

  • 优势:最高质量的分块
  • 劣势:成本最高(每个文档需要 LLM 推理),比固定大小慢 10-50 倍
  • 适用:高价值文档(法律合同、医疗指南)

关键发现:「上下文悬崖」

2026 年 1 月的系统分析发现了一个关键现象:当块大小超过 2500 tokens 时,RAG 回答质量显著下降——即使上下文窗口足够大。这被称为「上下文悬崖」(Context Cliff)。

原因:块越大,块内噪声越多,嵌入向量的语义信号被稀释。即使检索命中了正确的大块,LLM 从大块中提取关键信息的效率也会下降(「Lost in the Middle」效应的变体)。

最佳实践工作区间:512-1024 tokens,以递归字符分块为默认选择。

策略速度准确率成本最佳场景

递归字符(512 token)

69%

默认选择

语义分块

54-87%

长叙事文档

句子级分块

中等

对话/访谈记录

层级分块

复杂技术文档

Agentic(LLM)

极慢

最高

极高

高价值文档

固定大小

最快

基线

最低

快速原型

💡 一句话理解

分块策略没有银弹。最佳实践是:先用 RecursiveCharacterTextSplitter(512 tokens, 10% overlap)作为基线,然后根据你的检索指标决定是否切换到语义分块。如果准确率不够,先调嵌入模型,再调分块策略。

⚠️ 常见踩坑

语义分块不是万能的。Vecta 2026 年基准测试发现,在某些场景下语义分块(54% 准确率)反而不如递归字符分块(69%),原因是语义分块产生的块太小(平均仅 43 tokens),缺少足够上下文。

六、RAG 评估体系:RAGAS 框架与核心指标

核心论点:没有评估的 RAG 系统是黑箱。RAG 评估需要分别衡量检索质量和生成质量,五个核心指标覆盖了 RAG 管线的全链路。

为什么 RAG 评估特殊? 传统 QA 系统只需评估最终答案的正确性。RAG 系统有两个独立组件(检索器 + 生成器),需要分别评估:

  • 检索器:是否找到了正确的文档?排序是否合理?
  • 生成器:回答是否被检索到的上下文支持?是否回答了用户的问题?

RAGAS(Retrieval Augmented Generation Assessment) 是最广泛使用的 RAG 评估框架,定义了五大核心指标:

检索质量指标:

1. Context Precision(上下文精确度)
检索到的文档中,有多少是真正相关的?

  • 高精确度 → 检索器没有引入太多噪声
  • 低精确度 → 检索器拉回了大量无关文档,浪费 LLM 的上下文窗口

2. Context Recall(上下文召回率)
回答所需的所有信息,有多少被检索到了?

  • 高召回率 → 关键信息没有遗漏
  • 低召回率 → 检索器遗漏了回答问题所需的关键文档

生成质量指标:

3. Faithfulness(忠实度) ⭐ 最重要
生成的回答中,每一个声明(claim)是否都被检索到的上下文支持?

  • 高忠实度 → 回答有据可依
  • 低忠实度 → 幻觉Hallucination——LLM 编造了上下文中不存在的信息
  • 这是防止幻觉的第一道防线。如果你只能跟踪一个指标,选这个。

4. Answer Relevancy(回答相关性)
生成的回答是否真正回答了用户的问题?

  • 一个回答可以忠实于上下文但完全答非所问
  • 低相关性通常意味着检索到了相关文档,但 LLM 没有正确使用

5. Answer Correctness(回答正确性)
与标注的标准答案对比,回答的事实正确程度。

  • 需要人工标注的 golden dataset
  • 最昂贵但最可靠的指标

评估工具生态(2026):

工具 定位 特点
RAGAS 离线评估 开源,五大指标全覆盖,社区标准
DeepEval CI 集成 开源,可在 CI/CD 中自动运行评估
TruLens 生产监控 实时监控线上 RAG 系统质量
Arize Phoenix 可观测性 全链路追踪,可视化检索质量
LangSmith 一体化 LangChain 生态,追踪 + 评估 + 调试

评估最佳实践:

  1. 检索和生成分开评估——端到端指标低时,你需要知道是哪个组件出了问题
  2. 用 Faithfulness 作为首要告警指标——幻觉造成的实际损害最大
  3. 用合成数据扩展评估覆盖面,但保留 20% 人工抽检
  4. 评估数据集要版本化——不版本化就无法对比不同迭代的效果
  5. 在线评估(采样 5-10% 线上流量)+ 离线评估(nightly batch)双管齐下
图表加载中…

💡 一句话理解

RAGAS 的 Faithfulness 实现原理:将回答分解为原子声明(atomic claims),逐一验证每个声明是否被上下文支持。例如回答「A 公司营收 100 亿」会被分解为「A 公司有营收」+「营收金额为 100 亿」,分别验证。

⚠️ 常见踩坑

RAGAS 依赖 LLM 作为评判者(LLM-as-Judge)。评判模型的选择影响结果——弱模型会漏检矛盾。2026 年的最佳实践是用 GPT-5 或 Claude Opus 4.7 作为评判模型,不要用便宜的小模型。

七、生产级 RAG 系统设计清单

核心论点:生产级 RAG 系统不是「调通 demo」就够了。从 demo 到生产,需要解决延迟、成本、可观测性、数据安全四大挑战。

七阶段标准管线(2026 Enterprise Standard)

  1. 多模态摄入 → 2. 语义分块 → 3. 嵌入 + 索引 → 4. 混合检索 → 5. 重排序 → 6. 上下文优化 → 7. LLM 生成

设计清单

✅ 数据摄入层

  • 多格式解析:PDF(含表格)、Word、HTML、Markdown、代码文件
  • 深度文档理解(DDU):保留结构、层级、关系,不只是提取纯文本
  • 去重和清洗:防止噪声数据污染检索

分块与索引层

  • 默认递归字符分块(512 tokens, 10% overlap)
  • 为每个块附加元数据(来源文档、页码、章节、时间戳)
  • 嵌入模型选择:基于你的领域数据做基准测试,不要盲信排行榜

✅ 检索层

  • 混合检索Hybrid Search):BM25(关键词)+ 向量检索(语义)+ RRF 融合
  • 纯向量检索会遗漏精确关键词匹配(如产品编号、人名)
  • 向量索引选择:百万级用 HNSW,千万级以上用 IVF-PQ 或 DiskANN

重排序

  • Bi-Encoder Top-100 → Cross-Encoder Top-10 → LLM 生成
  • 这是 ROI 最高的单一优化
  • 注意重排序模型的许可证(很多是非商业的)

✅ 上下文优化层

  • 上下文压缩:去除检索块中与查询无关的部分
  • 上下文排序:最相关的块放在最前面(对抗 Lost in the Middle)
  • 上下文窗口管理:控制在 2500 tokens 以内(上下文悬崖)

✅ 生成层

  • System Prompt 明确指示:「仅基于提供的上下文回答,如果上下文中没有答案,明确说明」
  • 引用溯源:要求模型标注每个声明来自哪个文档块
  • 流式输出:降低用户感知延迟

✅ 评估与可观测性层

  • 离线评估:RAGAS 五大指标 + golden dataset
  • 在线监控:采样 5-10% 流量实时评估
  • 块归因追踪:记录每个回答引用了哪些块,便于调试
  • 告警阈值:Faithfulness < 0.8 触发告警

成本优化策略:

  • 语义缓存(Semantic Cache):对相似查询复用之前的回答
  • 嵌入维度压缩:使用 Matryoshka 表示,在可接受的精度损失下降低存储
  • 分级模型策略:简单查询用小模型,复杂查询用大模型
  • 批量处理:非实时场景使用批量 API 降低成本
  • 📋 生产 RAG 系统自检清单:

  • 混合检索(BM25 + 向量)是否已启用?

  • 重排序层是否已添加?(ROI 最高的优化)

  • □ Faithfulness 评估是否已上线?

  • □ 块归因追踪是否已实现?

  • □ 语义缓存是否已配置?

  • □ 权限控制是否已到位?

  • □ 在线评估采样率是否 ≥ 5%?

  • □ 上下文窗口是否控制在 2500 tokens 以内?

  • 分块策略是否基于基准测试而非直觉?

  • 嵌入模型是否在你的数据上做过 benchmark

💡 一句话理解

生产 RAG 系统的第一个优化不是换更好的嵌入模型,而是加混合检索(BM25 + 向量)。纯向量检索在精确匹配场景(产品编号、专有名词)上的失败率高达 30%,加 BM25 后降到 5% 以下。

⚠️ 常见踩坑

不要忽视数据安全。RAG 系统天然会暴露内部文档给 LLM。确保:1)LLM 提供商不会用你的数据训练;2)检索层有权限控制(不同用户看到不同文档);3)审计日志记录每次检索和生成。

🎯 相关面试题

巩固本篇知识点,备战 AI 岗位面试。