📖 定义
RAG (Retrieval-Augmented Generation,检索增强生成) 是一种结合信息检索和文本生成的AI技术。它让LLM在回答问题前,先从外部知识库中检索相关信息,然后基于这些真实数据生成回答。
简单来说,RAG就像给AI配了一个"图书馆"——每次回答问题前,AI会先去图书馆查资料,然后基于查到的资料来回答,而不是凭空编造。
🧠 核心原理
用户提问
→
查询向量化
→
向量检索
→
获取相关文档
→
注入上下文
→
LLM生成回答
技术架构
RAG系统包含三个核心组件:
- Indexing (索引) - 将文档切分、向量化并存储到向量数据库
- Retrieval (检索) - 根据查询检索最相关的文档片段
- Generation (生成) - 将检索结果注入LLM上下文,生成回答
向量检索原理
# 向量检索流程
1. 文档切分 (Chunking)
- 按段落/句子/固定长度切分
- 保留上下文重叠
2. 向量化 (Embedding)
- 使用Embedding模型将文本转为向量
- 常用模型:text-embedding-3-small, BGE-M3
3. 向量存储 (Vector Store)
- 存储到向量数据库
- 常用:Pinecone, Weaviate, ChromaDB, Milvus
4. 相似度检索
- 用户查询向量化
- 计算余弦相似度
- 返回Top-K最相关文档
💻 OpenClaw中的RAG应用
OpenClaw提供了多种RAG集成方式:
1. 使用MCP集成向量数据库
# 通过MCP集成向量数据库
mcp:
servers:
- name: "chromadb"
command: "npx"
args: ["@anthropic/server-chromadb"]
env:
CHROMA_HOST: "localhost"
CHROMA_PORT: "8000"
# Agent可以使用以下工具:
# - mcp_chromadb_query(query, n_results)
# - mcp_chromadb_add(documents, metadatas)
# - mcp_chromadb_delete(ids)
2. 使用web_fetch进行实时检索
# OpenClaw Agent可以实时检索网页内容
# 这是一种轻量级RAG方案
# Agent处理流程:
user: "OpenClaw最新版本有什么新功能?"
# Agent会:
1. web_search("OpenClaw latest version features 2026")
2. web_fetch(top_results)
3. 基于检索结果生成回答
3. 使用SKILL.md构建知识库
# SKILL.md 可以作为Agent的知识库
# Agent会在执行任务前加载相关SKILL.md
# 示例:SEO优化技能
## 知识库
- SEO最佳实践文档
- 关键词研究方法
- 页面优化清单
- 内链策略指南
🎯 实战案例:智能客服知识库
构建基于RAG的智能客服系统:
- 收集产品文档、FAQ、历史工单
- 切分文档并存储到向量数据库
- 用户提问时检索相关文档
- LLM基于检索结果生成准确回答
- 持续更新知识库保持时效性
📊 RAG vs Fine-tuning
| 对比维度 | RAG | Fine-tuning |
|---|---|---|
| 知识更新 | 实时更新 | 需要重新训练 |
| 成本 | 低(仅检索) | 高(训练资源) |
| 准确性 | 依赖检索质量 | 依赖训练数据 |
| 可解释性 | 高(可追溯来源) | 低 |
| 适用场景 | 知识密集型任务 | 特定风格/格式任务 |
✅ 优势
- 减少幻觉,基于真实数据
- 知识实时更新
- 可追溯来源
- 成本低,无需训练
⚠️ 挑战
- 检索质量影响回答质量
- 文档切分策略很重要
- 向量数据库维护成本
- 长文档处理仍有挑战
🔗 相关术语
- Agent Memory - RAG的内存形式
- Tool Calling - RAG工具调用机制
- Context Engineering - RAG上下文设计
- MCP - RAG集成协议