跳到主要内容

RAG 系统设计与优化

RAG 深入解析

1. RAG 完整架构

【离线阶段 - 知识库构建】
原始文档 → 预处理(清洗/去重)→ 分块(Chunking)
Embedding 模型向量化 → 存入向量数据库

【在线阶段 - 检索生成】
用户问题 → Query 改写/增强 → 向量化
→ 向量检索(Top-K)→ 可选:Re-ranking
→ 拼接 PromptLLM 生成 → 后处理 → 输出

2. Chunking 策略

策略特点适用场景
固定大小简单,可能截断语义通用场景
递归字符分割按段落/句子/词分割结构化文本
语义分割按语义边界分块质量要求高
文档结构感知利用 Markdown/HTML 标题有结构的文档
Small-to-Big存小块,检索后返回大块平衡精度和上下文

关键参数

  • chunk_size:通常 512-1024 tokens
  • chunk_overlap:通常 50-200 tokens,避免边界信息丢失

3. 检索优化

混合检索

稠密检索(向量相似度)
+
稀疏检索(BM25 关键词)
RRF(倒数排名融合)合并结果

Query 增强

  • HyDE(假设文档嵌入):让 LLM 先生成假设答案,用假设答案检索
  • Multi-Query:生成多个角度的查询并集检索
  • Step-Back Prompting:将具体问题泛化为更高层次的问题

Re-ranking

  • Cross-Encoder 模型(如 BGE-Reranker)对 query+doc 联合编码评分
  • 比双塔 Embedding 更准确,但速度慢(仅用于 Top-K 精排)

4. 向量数据库选型

数据库特点适用场景
Pinecone全托管,简单快速原型
Qdrant开源,Rust 实现,高性能自托管生产
Weaviate内置混合检索需混合搜索
Chroma轻量,本地优先开发调试
Milvus大规模,功能全企业级
pgvectorPostgreSQL 扩展已有 PG 的项目

5. 评估体系

RAGAS 评估框架:
- Faithfulness(忠实性):答案是否基于检索到的上下文
- Answer Relevancy(相关性):答案是否回答了问题
- Context Recall(上下文召回):检索的文档是否包含答案所需信息
- Context Precision(上下文精确):检索的文档是否都有用

6. 常见问题与优化

问题原因解决方案
检索不到相关内容Chunk 太大/太小,Embedding 弱调整分块,换更好的 Embedding 模型
检索到但答错LLM 忽略上下文优化 Prompt,强调「只根据以下内容回答」
多跳推理失败信息分散在多个文档Graph RAG,建立实体关系图
长文档理解差超出上下文窗口层次化索引(先摘要,再详细)

7. 高频面试题

  • RAG 和 Fine-tuning 如何选择? 知识需要实时更新用 RAG;需要改变模型风格/能力用 Fine-tuning;两者可结合
  • 如何提升 RAG 的准确率? 改善 Chunking 策略、升级 Embedding 模型、加 Re-ranking、优化 Prompt
  • 向量相似度搜索原理? 计算 Query 向量与文档向量的余弦相似度或内积,用 HNSW/IVF 近似最近邻加速
  • Graph RAG 是什么? 将文档解析为知识图谱,结合图遍历和向量检索,适合复杂推理