🧠 为什么需要高级 RAG?

基础 RAG(检索增强生成)只是「向量检索 + LLM 生成」,遇到复杂查询时往往答非所问。高级 RAG 流水线引入了:

高级 RAG 流水线:
用户查询 → 查询改写 → 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

💡 最佳实践

  1. 向量 vs BM25 - 语义查询用向量,精确匹配用 BM25,混合效果最佳
  2. Rerank 必选 - 没有 Rerank 的 RAG 准确率下降 30%+
  3. Top-K 调优 - 召回 30-50 篇,精排到 8-10 篇,平衡质量与成本
  4. Embedding 选择 - 中文用 bge-large-zh,英文用 text-embedding-3-large
  5. 缓存策略 - 高频查询缓存 Embedding,降低 50%+ 向量检索成本

⚠️ 注意事项

性能陷阱:
  • 多路召回会增加延迟(约 200-500ms),对实时性要求高的场景谨慎使用
  • Rerank 模型需要额外 API 调用或 GPU 资源
  • 向量数据库需要定期更新索引,否则召回率下降
  • Agentic RAG 可能执行多次检索,需设置最大轮次上限

🔗 相关教程