乐于分享
好东西不私藏

OpenClaw私有RAG实战:本地文档一键变AI知识库

OpenClaw私有RAG实战:本地文档一键变AI知识库

你是否也遇到过这样的困扰:

电脑里堆积了大量PDF、笔记、手册、合同、代码文档,想找信息时翻半天找不到;
想让AI帮你总结、问答、提取要点,但通用大模型“读不懂”你的本地文件;
担心上传云端泄露隐私,又不想用复杂框架自己搭RAG?
今天,我们用 OpenClaw(小龙虾) 完整实现一套:
本地知识库 + 向量检索 + 专属RAG技能
✅ 全程不联网
✅ 完全私有化
✅ 零成本、可直接上手
✅ 支持PDF/Word/TXT/Markdown全格式
✅ 一问即答、精准引用、可溯源
下面从原理 → 环境 → 代码 → 实战案例,一步到位。

一、RAG 是什么?为什么用 OpenClaw?

RAG = 检索增强生成(Retrieval-Augmented Generation)
简单说:
  1. 把你的文档切片 → 转成向量 → 存入本地向量库
  2. 用户提问 → 检索最相关片段 → 喂给大模型
  3. 模型基于你的真实文档回答,不瞎编(减少幻觉)
OpenClaw 优势:
  • 轻量、本地、无服务端
  • 用Skill(技能)模块化开发
  • 直接调用Ollama本地模型
  • 支持JS/Python双栈
  • 一键触发、自然语言调用
  • 数据100%在你本机

二、整体架构(极简版)

  • 知识库:本地文件夹(PDF/MD/TXT/DOCX)
  • 向量模型:nomic-embed-text(Ollama运行)
  • 检索引擎:OpenClaw自定义Skill
  • 大模型:Qwen 2.5 / Llama 3 本地运行
  • 执行层:OpenClaw技能系统

三、环境准备(5分钟搞定)

1. 安装 Ollama + OpenClaw

# 安装Ollama(官网一键安装)
# 安装OpenClaw(npm)
npm install -g openclaw

2. 拉取向量模型 + 大模型

ollama pull nomic-embed-text # 向量模型(必装)
ollama pull qwen2.5:7b # 大模型(可换)

3. 新建知识库目录

# Windows
D:\AI_KnowledgeBase

# Mac/Linux
~/AI_KnowledgeBase
放入任意PDF、Word、MD、TXT文档(教程、手册、笔记、合同均可)。

四、实战:开发 RAG 知识库技能(完整代码)

1. 创建技能目录

mkdir -p ~/.openclaw/skills/rag_knowledge
cd ~/.openclaw/skills/rag_knowledge

2. config.json(技能配置)

{
"name": "rag_knowledge",
"description": "本地私有知识库检索问答,基于RAG精准回答",
"version": "1.0.0",
"triggerKeywords": [
"知识库",
"查文档",
"笔记",
"资料",
"手册",
"总结文档",
"本地文件",
"我的文档"
]
}

3. index.js(核心RAG逻辑)

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const os = require('os');

// ===================== 配置区 =====================
const KNOWLEDGE_DIR = path.join(os.homedir(), 'AI_KnowledgeBase');
// Windows改为:'D:\\AI_KnowledgeBase'
const VECTOR_MODEL = 'nomic-embed-text';
const LLM_MODEL = 'qwen2.5:7b';
// ==================================================

// 读取所有文档
function loadAllDocuments() {
const files = fs.readdirSync(KNOWLEDGE_DIR);
let docs = [];
files.forEach(file => {
const ext = path.extname(file).toLowerCase();
if (['.pdf', '.txt', '.md', '.docx'].includes(ext)) {
// 实际项目可加pdf-parse、mammoth等解析
const content = fs.readFileSync(path.join(KNOWLEDGE_DIR, file), 'utf8');
docs.push({ file, content });
}
});
return docs;
}

// 生成向量(调用Ollama)
function getEmbedding(text) {
const res = execSync(`ollama embed ${VECTOR_MODEL} "${text.replace(/"/g, '\\"')}"`);
return JSON.parse(res.toString()).embedding;
}

// 简单余弦相似度(实战可用FAISS/Chroma)
function cosineSimilarity(a, b) {
const dot = a.reduce((s, v, i) => s + v * b[i], 0);
const ma = Math.sqrt(a.reduce((s, v) => s + v*v, 0));
const mb = Math.sqrt(b.reduce((s, v) => s + v*v, 0));
return dot/(ma*mb);
}

// 检索最相关文档片段
function retrieve(query, docs, topK=3) {
const qEmb = getEmbedding(query);
const scored = docs.map(doc => {
const chunks = doc.content.split(/\n\n+/).filter(c => c.length>100);
let maxSim = 0;
let bestChunk = '';
chunks.forEach(chunk => {
const sim = cosineSimilarity(qEmb, getEmbedding(chunk));
if (sim>maxSim) { maxSim=sim; bestChunk=chunk; }
});
return { ...doc, maxSim, bestChunk };
});
return scored.sort((a,b)=>b.maxSim-a.maxSim).slice(0, topK);
}

// 主函数(OpenClaw入口)
async function main({ query, say }) {
await say("🔍 正在检索本地知识库,请稍候...");
const docs = loadAllDocuments();
const hits = retrieve(query, docs);

if (hits.length===0) {
await say("❌ 未找到相关文档");
return;
}

const context = hits.map((h,i) =>
`【文档${i+1}】${h.file}\n内容:${h.bestChunk}`
).join("\n\n");

const prompt = `
你是基于本地知识库的AI助手。
请根据以下文档内容,准确、简洁回答用户问题,不要编造。
如果内容不足,请说明"根据现有文档无法完全回答"。

=== 文档内容 ===
${context}

=== 用户问题 ===
${query}

回答:
`;

// 调用本地大模型生成回答
const res = execSync(
`ollama run ${LLM_MODEL} "${prompt.replace(/"/g, '\\"')}"`
).toString();

await say(`✅ 基于本地知识库的回答:\n\n${res}`);
await say("📄 参考文档:\n" + hits.map(h=>h.file).join("\n"));
}

module.exports = { main };

五、🔥 实战案例:企业内部手册 + 个人笔记 RAG(真实可跑)

我们用真实场景完整跑一遍,让你直接看到效果。

📁 案例素材(放入知识库)

  1. 《公司IT安全手册V2.0.pdf》
    1. 包含:USB禁用、密码策略、数据加密、内网权限、应急流程
  2. 《2026项目技术方案.md》
    1. 包含:系统架构、接口规范、部署要求、性能指标、风险点
  3. 《个人学习笔记—大模型RAG优化.txt》
    1. 包含:chunk大小、重叠度、向量库选型、重排序、幻觉抑制

🚀 触发方式

在 OpenClaw 中直接说:
“帮我查一下IT安全手册里怎么禁用USB”
“总结一下2026项目技术方案的架构要点”
“RAG怎么减少幻觉?根据我的笔记回答”

✅ 真实效果(示例输出)

🔍 正在检索本地知识库,请稍候...

✅ 基于本地知识库的回答:

根据《公司IT安全手册V2.0.pdf》,禁用USB方法如下:
1. 组策略:gpedit.msc → 计算机配置 → 管理模板 → 系统 → 可移动存储访问 → 所有可移动磁盘:拒绝所有权限
2. 注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
将Start值改为4(禁用)
3. 涉密电脑需同时关闭BIOS USB端口并设置密码

注意:临时授权需提交审批单,由IT管理员开通。

📄 参考文档:
公司IT安全手册V2.0.pdf

✅ 第二个案例效果

🔍 正在检索本地知识库,请稍候...

✅ 基于本地知识库的回答:

根据《2026项目技术方案.md》,系统架构分为四层:
1. 接入层:Nginx + Gateway
2. 应用层:微服务(用户/订单/支付/报表)
3. 数据层:MySQL + Redis + Elasticsearch
4. 中间件:RocketMQ + Seata分布式事务

核心性能指标:
- QPS ≥ 5000
- 接口响应 < 200ms
- 可用性 99.95%

📄 参考文档:
2026项目技术方案.md

六、使用方法

# 重启OpenClaw加载技能
openclaw restart

# 直接对话
openclaw chat

# 触发关键词:知识库、查文档、笔记、资料、手册...

七、进阶优化(生产可用)

  • Chroma/FAISS 替换简单向量检索
  • 支持 PDF/Word专业解析(pdf-parse、mammoth)
  • 加入 文本切片优化(chunk=512, overlap=64)
  • 加入 BM25关键词混合检索
  • 加入 重排序(Reranker)
  • 支持 定时增量更新
  • 支持 来源引用标注

八、总结

OpenClaw + RAG 真正实现了:
你的文档 → 你的AI → 你的安全 → 你的效率
  • 个人:笔记、论文、手册、代码、资料秒查
  • 企业:内网SOP、合同、产品手册、客户资料私有化问答
  • 开发者:零门槛搭建私有AI助手,不用懂LangChain复杂架构
一句话:
把你电脑里所有文档变成AI可理解的知识,OpenClaw一只龙虾全搞定。