Appearance
模型工程与 RAG (Model Engineering)
本文档将探讨如何在 OpenClaw 中使用多个 LLM 进行协同工作,以及如何通过 RAG (Retrieval-Augmented Generation) 增强其知识库。
1. 路由策略 (Routing Strategy)
OpenClaw 支持同时加载多个模型,并根据任务复杂度动态路由。
1.1 主模型与备用模型 (Primary & Fallback)
在 openclaw.json 中配置:
json
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-3-5-sonnet", // 主力模型:写代码强
"fallback": "google/gemini-pro" // 备用模型:长窗口,便宜
}
}
}
}1.2 任务分发 (Router Model)
你可以配置一个轻量级的 Router Agent(比如 llama-3-8b),负责将复杂的请求拆解,分发给专业的 Worker Agent。
mermaid
graph TD
Request[用户提问] -->|API| Router[Router Agent (Llama3)]
Router -->|复杂编程| Coding[Coding Agent (Claude)]
Router -->|简单问答| QnA[Q&A Agent (Gemini)]
Router -->|创意写作| Creative[Creative Agent (GPT-4)]OpenClaw 的 sessions_spawn 机制天然支持这种模式:
- Main Session: 接收指令,分析意图。
- Child Session: 带着特定的
system_prompt和tools被唤起。 - Result: 子 Agent 完成任务后,将结果汇总给主 Agent。
2. 上下文增强 (RAG Pipeline)
RAG 是解决 LLM 幻觉和知识过期的关键。OpenClaw 内置了一套轻量级的 RAG 系统。
2.1 向量化 (Embedding)
OpenClaw 使用 text-embedding-3-small (OpenAI) 或本地 nomic-embed-text 生成向量。
当你把 PDF、Markdown 文件放入 workspace/docs/ 目录时,OpenClaw 会自动:
- Chunking: 按语义切分文本块 (Chunk Size: 512 Tokens)。
- Embedding: 调用 Embedding API 生成向量。
- Indexing: 存入内置的向量索引 (基于 SQLite/HNSW)。
2.2 检索增强 (Retrieval)
当用户提问时:
- Query Expansion: LLM 将用户的问题改写为更适合检索的形式。
- Vector Search: 在索引中查找 Top-K 最相关的文本块。
- Re-ranking: 使用 Cross-Encoder 对检索结果进行精排 (可选)。
- Context Injection: 将最相关的文本块插入到 System Prompt 中。
2.3 记忆融合 (Memory Fusion)
OpenClaw 的 RAG 不仅仅查文档,还会查 Memory Files。
MEMORY.md: 长期记忆,存储用户偏好、重要事实。memory/YYYY-MM-DD.md: 短期记忆,存储最近的对话摘要。
检索时,OpenClaw 会同时检索文档库和记忆库,确保回答既有知识深度,又有用户个性化。
3. 微调与定制 (Fine-tuning)
如果你需要让 OpenClaw 极其擅长某个特定领域(比如法律咨询),可以考虑微调。
OpenClaw 产生的 Session Logs (JSONL 格式) 是天然的高质量微调数据集。
- Export: 导出
workspace/sessions/*.jsonl。 - Filter: 筛选出高质量的对话 (User Rating > 4)。
- Format: 转换为 OpenAI / Llama 格式。
- Train: 使用 LoRA / QLoRA 进行微调。