RAG 系统设计:从原型到生产
RAG 架构概览#
┌─────────────────────────────────────────────────────────┐
│ RAG Pipeline │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────┐ │
│ │ Query │───▶│ Embed │───▶│ Retrieve│───▶│ LLM │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────┐ │
│ │ Vector Database │ │
│ │ (Milvus / Qdrant) │ │
│ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Step 1: 文档处理#
文本分块策略#
|
|
分块建议:
- 技术文档:500-1000 tokens
- 对话记录:200-500 tokens
- 代码:按函数/类分块
Step 2: Embedding 选择#
模型对比#
Model Dim 性能 中文支持
────────────────────────────────────────────────
OpenAI text-ada-002 1536 ★★★★ ★★★
BGE-large-zh 1024 ★★★★ ★★★★★
M3E-base 768 ★★★ ★★★★
Cohere embed-v3 1024 ★★★★ ★★★
使用示例#
|
|
Step 3: 向量数据库#
Milvus 配置#
|
|
Step 4: 检索优化#
混合检索#
|
|
Reranker#
|
|
Step 5: Prompt 工程#
|
|
生产环境考虑#
性能优化#
|
|
监控指标#
|
|
常见问题#
1. 检索质量差#
|
|
2. 响应延迟高#
|
|
总结#
构建生产级 RAG 系统的关键:
- 分块策略:针对内容类型调整
- Embedding:选择适合领域的模型
- 混合检索:向量 + 关键词 + Reranker
- 可观测性:监控延迟和检索质量
- 持续优化:基于用户反馈迭代
|
|