AI 智能体RAG向量数据库Embedding检索策略RerankingLLM

RAG 系统的核心设计决策

向量化、检索策略、融合生成——每一步都是取舍

RAG 解决的根本问题

LLM 的知识有两个根本局限:训练截止日期参数容量上限。RAG(Retrieval-Augmented Generation)不修改模型权重,而是在推理时动态注入相关知识。

Query → Embedding → 向量检索 → Top-K 文档 → Prompt 拼接 → LLM 生成

每个箭头都是设计决策点。

分块策略:被低估的关键决策

固定大小分块(Fixed-size chunking)最简单,按字数或 token 数切割。问题是可能切断语义单元——一句话被切成两块。

语义分块(Semantic chunking)按段落、章节切割,保留语义完整性。推荐用于结构化文档(技术文档、法律文本)。

分块大小的取舍

  • 块太小 → 上下文不足,LLM 难以生成完整答案
  • 块太大 → 噪声多,检索精度下降,且受 context window 限制

实践中常用 512 token,overlap 64 token

向量模型选型

不同 Embedding 模型的能力差异巨大。中文场景推荐:

  • text-embedding-3-large(OpenAI):综合效果强,有成本
  • bge-m3(BAAI):多语言,开源,支持稠密/稀疏/多向量
  • stella_en_1.5B:英文长文本效果优秀

维度选择:高维向量(3072d)精度更高,但存储和检索成本翻倍。可用 Matryoshka Representation Learning(MRL)动态截断维度。

检索策略

稠密检索(Dense retrieval):基于向量相似度(cosine/dot product)。语义匹配能力强,对措辞变化不敏感。

稀疏检索(Sparse / BM25):基于关键词匹配。对专有名词、代码、产品型号等精确词汇匹配更可靠。

混合检索(Hybrid)= 稠密 + 稀疏,用 RRF(Reciprocal Rank Fusion)合并排名:

rrf_score = Σ 1 / (k + rank_i)   # k 通常取 60

生产环境推荐混合检索,召回率比单一方式提升 15-30%。

重排序(Reranking)

Top-K 检索的结果送入 Cross-encoder 重排序,精度显著提升:

向量检索 Top-50 → Reranker → Top-5 → LLM

Cross-encoder 同时编码 query 和 document,比双塔模型精度高,但速度慢,只适合对 Top-K 小集合精排。

推荐模型:bge-reranker-v2-m3jina-reranker-v2

常见失败模式

| 问题 | 症状 | 解决方案 | |------|------|----------| | 文档切割不当 | 答案不完整 | 调整分块策略,增加 overlap | | 向量模型与业务不匹配 | 语义偏差大 | Fine-tune 或更换模型 | | Top-K 太小 | 召回率低 | 增大 K,配合 Reranker 精排 | | Prompt 过长 | 超出 context window | 压缩或分层检索 | | 幻觉仍然存在 | 答案与文档矛盾 | 添加引用来源,让 LLM 引用原文 |