RAG 知识库工程化实践

Retrieval-Augmented Generation(RAG)是当前最主流的大模型应用模式之一。本文从工程实践出发,梳理 RAG 系统的完整搭建流程。

为什么需要 RAG

大模型虽然能力强大,但存在三个核心局限:

  1. 知识时效:训练数据有截止日期
  2. 幻觉问题:会”编造”看似合理但实际错误的内容
  3. 私域知识:无法回答企业内部文档相关的问题

RAG 通过在生成前先检索相关文档,把外部知识注入到大模型的上下文窗口,能有效缓解这些问题。

RAG 的核心流程

1
2
3
4
5
6
7
8
9
10
11
12
13
用户提问
↓
Query 改写(可选)
↓
向量检索 + 关键词检索(混合检索)
↓
重排序(Rerank)
↓
Prompt 构造(拼接检索结果)
↓
LLM 生成答案
↓
引用溯源(可选)

文档处理流水线

1
2
3
4
5
6
7
8
9
原始文档(PDF / Word / Markdown / HTML)
↓
格式解析(unstructured / docx / pypdf)
↓
切片(chunking)
↓
Embedding(向量化)
↓
向量库索引(Milvus / Qdrant / pgvector)

切片策略

切片粒度直接决定检索质量。常见策略:

  • 按段落切片:保留语义完整,但长度不可控
  • 按固定长度切片:可控,但可能切断语义
  • 按结构切片:根据标题层级切分
  • 滑动窗口:相邻切片有重叠,提升召回率

工程实践推荐:结构优先 + 滑动窗口兜底。

检索增强

单一向量检索容易召回噪声。生产环境通常采用混合检索:

  • BM25(关键词)
  • 向量检索(语义)
  • 重排序(Cross-Encoder)

三种方式按权重融合后送入 LLM。

工程化重点

维度 关键点
增量更新 文档变动触发局部索引刷新
权限隔离 不同用户检索范围受控
引用溯源 回答必须可点击跳转到源文档
评估体系 准确率 / 召回率 / 延迟监控
成本控制 Embedding / LLM 调用成本优化

小结

RAG 不是简单的”塞文档给大模型”,而是一套需要持续打磨的检索增强工程体系。本站后续会持续更新 RAG 相关的工程实战文章。