引言:大模型的知识困境

大型语言模型(LLM)虽然具备强大的生成能力,但面临三个核心问题:知识截止(训练数据有时效性)、幻觉(编造不存在的事实)、私有知识盲区(无法访问企业内部文档)。RAG(Retrieval-Augmented Generation)通过将检索系统与生成模型结合,让 LLM 在回答问题时能够引用实时、准确的外部知识源。

1. RAG 核心架构


用户提问 → Query 改写/扩展
       ↓
    Embedding 编码
       ↓
   向量数据库检索 (Top-K)
       ↓
   重排序 (Reranker)
       ↓
   检索结果 + 原始提问 → LLM Prompt 构建
       ↓
   LLM 生成基础检索的答案
       ↓
   后处理(引用标注、事实校验)
       ↓
   返回给用户

2. 向量检索技术深度

2.1 Embedding 模型选择

Embedding 模型的质量直接决定检索效果。当前主流选择:

模型维度场景MTEB排名
text-embedding-3-small1536OpenAI 经济性场景Top-10
BGE-M31024多语言/多粒度检索Top-3
jina-embeddings-v31024长文本(8K token)特定场景 SOTA
Cohere Embed v31024企业级商用Top-5

2.2 向量数据库对比

  • Milvus:分布式架构、十亿级向量、支持 GPU 加速
  • Qdrant:Rust 实现、高性能、支持过滤性检索(Payload Filter)
  • Weaviate:内置向量化模块、GraphQL API、对象+向量混合存储
  • ChromaDB:轻量级、开发友好、适合原型开发
  • Pinecone:全托管、零运维、适合非技术团队

2.3 索引算法选择

  • HNSW(Hierarchical Navigable Small World):高召回率、构建慢、内存占用大
  • IVF-PQ(Inverted File with Product Quantization):内存高效、召回率略低
  • ScaNN(Google):各向异性量化,适合 Top-K 精确检索
  • Vamana(DiskANN):支持磁盘存储、超大规模检索

3. Chunk 策略:决定检索质量的关键

3.1 分块策略

文档分块是 RAG 的第一道工序,直接影响召回率:

  • 固定大小分块:简单高效,但可能切断语义段落(chunk_size=512, overlap=128)
  • 递归分块:按语义层级递归切割(段落 → 句子 → 词)
  • 语义分块:基于 Embedding 相似度突变检测进行切分
  • 文档结构分块:利用标题、列表等 Markdown 结构边界

3.2 分块优化技巧

  • 句子窗口检索:检索时只取句子,返回时还原为段落上下文
  • Auto-merging:小块检索、大块生成——先以小块检索提高精度,再合并相邻小块作为 LLM 上下文
  • Hypothetical Questions:预生成文档可能回答的问题,以问题为索引单位

4. Reranker:精度提升的利器

向量检索返回的 Top-K 结果可能存在排序不准确的问题。Reranker 通过交叉编码器(Cross-Encoder)对候选文档进行精确评分:


# 使用 Cohere Reranker 进行重排序
import cohere
co = cohere.Client(API_KEY)

results = co.rerank(
    model='rerank-english-v3.0',
    query='RAG系统中的Chunk策略',
    documents=retrieved_chunks,  # 从向量数据库检索的候选
    top_n=5  # 取重排序后的 Top-5
)

5. RAG 评估指标体系

5.1 检索质量指标

  • Recall@K:前 K 个结果中包含正确答案的比例
  • MAP(Mean Average Precision):正确结果在结果列表中的平均位置
  • nDCG@K:考虑位置加权的排序质量

5.2 生成质量指标

  • Faithfulness:生成的回答是否忠实于检索到的上下文(RASCE / ARES)
  • Relevance:回答是否直接回应了用户的问题
  • Correctness:回答的事实准确性(与 Ground Truth 对比)
  • RAGAS 框架:开源 RAG 自动化评估库,自动计算上述指标

6. 生产部署优化

6.1 Query 改写与扩展

用户提问往往不完整或模糊。通过 LLM 进行 Query 改写可以显著提升检索精度:

  • HyDE(Hypothetical Document Embedding):让 LLM 先生成假答案,再以其 Embedding 检索
  • Multi-Query:将原始问题改写为 3-5 个相似问题,检索后去重
  • Step-back Prompting:将具体问题抽象为更通用的大问题

6.2 缓存与会话管理

  • 语义缓存:对语义相近的查询直接返回缓存结果(GPT-Cache)
  • 会话内检索:结合对话历史进行上下文感知检索
  • 引用溯源:记录答案来自哪些文档,便于用户验证

总结

RAG 不是简单的"向量数据库 + LLM"拼接,而是一个需要精细调优的工程系统。从 Chunk 策略选择到 Reranker 部署,从 Query 改写到评估体系建立——每个环节都需要深入理解并反复迭代。掌握 RAG 系统工程,是构建企业级 AI 应用的关键能力。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部