主题
RAG检索增强生成
RAG(Retrieval-Augmented Generation)是一种让大模型基于你的私有知识回答问题的技术。这一章,我们来学习如何配置RAG。
什么是RAG
问题背景:
大模型有两个固有限制:
- 知识截止:训练数据有时间截止点,不知道最新信息
- 私有知识缺失:不知道你的公司文档、个人笔记等私有信息
RAG解决方案:
用户提问
↓
┌─────────────────────────────────────┐
│ 1. 检索:从知识库中找到相关文档 │
│ 2. 增强:将相关文档作为上下文 │
│ 3. 生成:基于上下文生成回答 │
└─────────────────────────────────────┘
↓
准确回答(基于你的私有知识)RAG vs 微调:
| 对比项 | RAG | 微调 |
|---|---|---|
| 成本 | 低 | 高 |
| 时效性 | 实时更新 | 需要重新训练 |
| 适用场景 | 知识密集型 | 行为风格调整 |
| 可解释性 | 高(可追溯来源) | 低 |
配置向量知识库
OpenClaw支持多种向量数据库。
支持的向量数据库:
| 数据库 | 特点 | 适用场景 |
|---|---|---|
| Chroma | 轻量级,易部署 | 个人使用,小规模 |
| Milvus | 高性能,可扩展 | 企业级,大规模 |
| Pinecone | 云服务,免维护 | 不想自己部署 |
| Qdrant | 开源,功能丰富 | 中等规模 |
安装向量数据库:
bash
# 使用Chroma(推荐入门)
pip install chromadb
# 或使用Docker部署Milvus
docker run -d --name milvus \
-p 19530:19530 \
-p 9091:9091 \
milvusdb/milvus:latest配置RAG:
yaml
# ~/.openclaw/config.yaml
rag:
enabled: true
# 向量数据库配置
vector_db:
type: chroma # chroma, milvus, pinecone, qdrant
path: ~/.openclaw/vectordb/
# 嵌入模型配置
embedding:
provider: alibaba
model: text-embedding-v2
dimension: 1536
# 检索配置
retrieval:
# 返回的文档数量
top_k: 5
# 相似度阈值
similarity_threshold: 0.7
# 检索策略
strategy: hybrid # semantic, keyword, hybrid文档上传与索引构建
上传文档:
bash
# 上传单个文件
openclaw rag upload ~/Documents/report.pdf
# 上传目录
openclaw rag upload ~/Documents/knowledge/ --recursive
# 从URL上传
openclaw rag upload --url https://example.com/article文档处理流程:
上传文档
↓
┌─────────────────────────────────────┐
│ 1. 文档解析:提取文本内容 │
│ 2. 文本分块:切分成合适大小的块 │
│ 3. 向量化:将文本块转换为向量 │
│ 4. 存储:保存到向量数据库 │
└─────────────────────────────────────┘
↓
索引构建完成配置分块策略:
yaml
# ~/.openclaw/config.yaml
rag:
chunking:
# 分块大小(字符数)
chunk_size: 500
# 重叠大小(字符数)
chunk_overlap: 50
# 分块策略
strategy: semantic # fixed, semantic, recursive
# 分隔符(fixed策略)
separators:
- "\n\n" # 段落
- "\n" # 行
- "。" # 句子
- " " # 词查看索引状态:
bash
openclaw rag status输出示例:
RAG 知识库状态
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
向量数据库:Chroma
存储路径:~/.openclaw/vectordb/
文档统计:
总文档数:156
总文本块:2,345
总向量数:2,345
存储大小:234MB
索引更新时间:2026-03-28 10:30:00
嵌入模型:text-embedding-v2
向量维度:1536基于知识库的回答
启用RAG的对话:
bash
# 启用RAG模式
openclaw chat --rag
# 或在配置中默认启用
# ~/.openclaw/config.yaml
rag:
enabled: true
auto_search: true对话示例:
用户:公司的报销流程是什么?
OpenClaw:[RAG检索]
→ 检索知识库...
→ 找到3个相关文档
→ 生成回答
根据《公司财务管理制度》第5章,报销流程如下:
1. **提交申请**
- 登录OA系统,填写报销申请单
- 上传发票原件照片
- 选择报销类型和项目
2. **审批流程**
- 直属领导审批(1-2个工作日)
- 财务部门审核(1个工作日)
- 超过5000元需总经理审批
3. **款项发放**
- 审批通过后3个工作日内打款
- 款项打入工资卡
**参考来源:**
- 《公司财务管理制度》第5章
- 《报销流程指南》
需要我详细解释某个环节吗?RAG回答的特点:
- 有据可查:回答基于你的文档,可追溯来源
- 准确可靠:不会编造不存在的信息
- 实时更新:文档更新后,回答自动更新
配置检索参数:
yaml
# ~/.openclaw/config.yaml
rag:
retrieval:
# 检索模式
mode: auto # auto, always, never
# 检索触发条件
trigger:
# 关键词触发
keywords:
- "公司"
- "流程"
- "规定"
- "制度"
# 问题类型触发
question_types:
- "what" # 是什么
- "how" # 怎么做
- "where" # 在哪里
# 返回结果配置
result:
# 是否显示来源
show_sources: true
# 最大来源数量
max_sources: 3
# 来源格式
source_format: citation # citation, footnote, inline知识库管理
查看知识库内容:
bash
# 列出所有文档
openclaw rag list
# 搜索文档内容
openclaw rag search "报销"
# 查看文档详情
openclaw rag show doc_123更新知识库:
bash
# 更新单个文档
openclaw rag update doc_123 --file ~/Documents/report_v2.pdf
# 重新索引所有文档
openclaw rag reindex
# 删除文档
openclaw rag delete doc_123知识库分类:
yaml
# ~/.openclaw/config.yaml
rag:
collections:
- name: company_docs
description: 公司文档
path: ~/Documents/company/
- name: personal_notes
description: 个人笔记
path: ~/Notes/
- name: tech_docs
description: 技术文档
path: ~/Projects/docs/按分类检索:
bash
# 指定分类检索
openclaw rag search "报销" --collection company_docs
# 对话时指定分类
用户:@company_docs 公司的请假制度是什么?RAG效果优化
优化检索质量:
yaml
# ~/.openclaw/config.yaml
rag:
optimization:
# 查询重写
query_rewrite: true
# 重排序
rerank: true
rerank_model: bge-reranker
# 混合检索权重
hybrid_weights:
semantic: 0.7 # 语义检索权重
keyword: 0.3 # 关键词检索权重
# 上下文窗口
context_window:
max_tokens: 4000
include_neighbors: true # 包含相邻文本块评估RAG效果:
bash
# 运行评估
openclaw rag evaluate --test-set ~/test_questions.json
# 输出评估报告
openclaw rag report输出示例:
RAG 效果评估报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
测试集:100个问题
检索质量:
召回率@5:92.3%
精确率@5:78.5%
MRR:0.85
回答质量:
准确性:89.2%
相关性:91.5%
完整性:85.7%
常见问题:
1. 部分文档分块过大,导致检索不精确
2. 专业术语的语义理解有待提升
优化建议:
1. 减小chunk_size到300
2. 添加专业术语词典通过RAG,OpenClaw可以基于你的私有知识回答问题,成为真正懂你业务的AI助手。下一章,我们来学习上下文记忆配置。