🧠 为什么需要高级 RAG?
基础 RAG(检索增强生成)只是「向量检索 + LLM 生成」,遇到复杂查询时往往答非所问。高级 RAG 流水线引入了:
- 混合检索 - BM25 关键词 + 向量语义,双路召回
- 重排序(Rerank) - 用专门模型对候选结果重新打分
- 查询改写 - Agent 自动优化用户查询,提升召回率
- 多路合并 - 多个数据源的结果智能融合
高级 RAG 流水线:
用户查询 → 查询改写 → BM25检索 ─┐
→ 向量检索 ─┤→ 合并去重 → Rerank → Top-K → LLM 生成
→ 知识图谱 ─┘
用户查询 → 查询改写 → BM25检索 ─┐
→ 向量检索 ─┤→ 合并去重 → Rerank → Top-K → LLM 生成
→ 知识图谱 ─┘
🚀 配置混合检索
1. 配置向量数据库 + BM25
# gateway.yaml
rag:
# 向量检索(语义)
vector_store:
provider: "qdrant"
url: "http://localhost:6333"
collection: "knowledge-base"
embedding_model: "text-embedding-3-large"
top_k: 20
# BM25 检索(关键词)
sparse_store:
provider: "elasticsearch"
url: "http://localhost:9200"
index: "docs"
top_k: 20
# 混合策略
fusion:
method: "rrf" # Reciprocal Rank Fusion
weights:
vector: 0.7
sparse: 0.3
2. 配置 Rerank 模型
# 重排序(精排)
rerank:
provider: "cohere"
model: "rerank-multilingual-v3.0"
top_k: 8 # 精排后只保留 Top 8
api_key: "${COHERE_API_KEY}"
# 或使用本地 rerank 模型
rerank:
provider: "local"
model: "BAAI/bge-reranker-v2-m3"
device: "cuda:0"
top_k: 8
💡 Agentic RAG:让 Agent 参与检索
Agentic RAG 不同于传统 RAG:Agent 可以多轮检索、自反思、主动补充查询。
Agentic RAG 工作流
# OpenClaw Agent 执行 Agentic RAG
任务:"分析我们竞品的定价策略,给出应对建议"
Agent 执行流程:
1. [检索] 查询 "竞品A 定价" → 召回 8 篇文档
2. [反思] "缺少竞品B的信息" → 主动补充查询
3. [检索] 查询 "竞品B 定价" → 召回 5 篇文档
4. [判断] "需要了解行业基准" → 再次补充查询
5. [检索] 查询 "AI SaaS 定价基准" → 召回 3 篇
6. [生成] 综合 16 篇文档,生成分析报告
📝 代码示例
使用 OpenClaw RAG 工具
# 在 Agent 对话中
"在我们的知识库中搜索:OpenClaw MCP 集成的最佳实践"
# Agent 自动执行 RAG 流水线:
# 1. 查询改写:"OpenClaw MCP 集成 配置 最佳实践"
# 2. 混合检索:BM25(20) + Vector(20)
# 3. Rerank:合并结果 → 精排 → Top 8
# 4. 生成:基于 Top 8 文档生成回答
# 5. 引用:标注每个观点的来源文档
自定义 RAG Pipeline
# 高级:自定义完整流水线
rag_pipeline:
query_rewrite:
enabled: true
model: "gpt-4o-mini" # 用便宜模型改写
max_rewrites: 3
retrieval:
- type: "vector"
top_k: 30
- type: "bm25"
top_k: 30
- type: "knowledge_graph"
top_k: 10
fusion:
method: "weighted_sum"
weights: [0.5, 0.3, 0.2]
rerank:
model: "bge-reranker-v2-m3"
top_k: 10
generation:
model: "gpt-4o"
max_tokens: 2000
cite_sources: true
💡 最佳实践
- 向量 vs BM25 - 语义查询用向量,精确匹配用 BM25,混合效果最佳
- Rerank 必选 - 没有 Rerank 的 RAG 准确率下降 30%+
- Top-K 调优 - 召回 30-50 篇,精排到 8-10 篇,平衡质量与成本
- Embedding 选择 - 中文用 bge-large-zh,英文用 text-embedding-3-large
- 缓存策略 - 高频查询缓存 Embedding,降低 50%+ 向量检索成本
⚠️ 注意事项
性能陷阱:
- 多路召回会增加延迟(约 200-500ms),对实时性要求高的场景谨慎使用
- Rerank 模型需要额外 API 调用或 GPU 资源
- 向量数据库需要定期更新索引,否则召回率下降
- Agentic RAG 可能执行多次检索,需设置最大轮次上限