📖 Knowledge RAG
用自然语言搜索你的笔记和文档,像问 ChatGPT 一样问你的私人知识库。
🚀 安装启动
# 1. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 2. 拉取推荐模型(千问3 Embedding,中文最优)
ollama pull qwen3-embedding:8b
# 3. 创建虚拟环境并安装依赖
python3 -m venv .venv
.venv/bin/pip install numpy requests fastapi pydantic uvicorn PyPDF2 pdfplumber python-docx
# 4. 启动
.venv/bin/python3 start.py
打开 http://localhost:5777 → 文件丢到 ~/workspace/knowledge/ → 管理页点「重新索引」→ 搜索页开搜。
可选:开启自动索引
新增文件后不用每次都手动点重新索引,设个定时任务每30分钟自动扫描:
openclaw cron add \
--name "knowledge-rag 自动索引" \
--every 1800000 \
--message "运行索引检查:cd ~/.openclaw/workspace/skills/knowledge-rag && .venv/bin/python3 scripts/index_knowledge.py" \
--silent
📂 知识库目录
~/workspace/knowledge/
├── notes/ ← 技术笔记、读书笔记
├── bilibili/ ← B站转录
├── wechat-articles/ ← 公众号文章
├── other/ ← 其他文档
└── (可建任意子目录,去设置页添加)
支持 .txt / .md / .pdf(文字版)/ .docx 文件。
🔍 搜索方式
直接问我
"帮我搜笔记里关于 Docker 的部分"
"知识库里有没有讲 Transformer 的文章?"
我会自动调搜索,带原文回答。
命令行
.venv/bin/python3 scripts/query_knowledge.py "你的问题"
.venv/bin/python3 scripts/query_knowledge.py "微服务" --source bilibili --top 5
.venv/bin/python3 scripts/query_knowledge.py --stats
新增文件后运行索引即可:
.venv/bin/python3 scripts/index_knowledge.py # 增量
.venv/bin/python3 scripts/index_knowledge.py --force # 全量重建
📝 Agent 存知识规范
当用户说"把这段存到知识库",按以下规则操作:
| 内容类型 | 存放目录 | 文件名 |
|---------|---------|--------|
| 技术笔记、概念解释 | notes/ | 中文描述.md |
| B站视频转录 | bilibili/ | 自动处理 |
| 公众号、网页文章 | wechat-articles/ | 文章标题.md |
| 其他 | other/ | 内容摘要.md |
保存后运行 .venv/bin/python3 scripts/index_knowledge.py 更新索引。
🔧 切换模型
在设置页修改 embed_model 字段:
| 场景 | 模型 | 大小 |
|------|------|------|
| ✅ 推荐(质量最高) | qwen3-embedding:8b | 4.7GB | 中文优秀,检索质量最高 |
| 轻量(CPU友好) | qwen3-embedding:0.6b | 640MB | 对 CPU 友好,中文不错 |
| 多语言 | bge-m3 | 1.2GB |
| 最小体积 | nomic-embed-text | 274MB |
改完后点「重新索引」,系统自动检测并全量重建。
🧑💻 环境检测(给 AI 助手的指引)
用户首次使用或出问题时,按顺序排查:
- Ollama 是否安装? →
ollama --version,否则引导去 https://ollama.com/download - 千问3 模型是否下载? →
ollama list | grep qwen3-embedding,否则ollama pull qwen3-embedding:8b - 索引模型是否匹配? → 读
~/workspace/knowledge/.rag_data/model_meta.json,不匹配则提示重建
快速诊断:
curl -s http://localhost:8768/api/stats | .venv/bin/python3 -c "
import sys,json; d=json.load(sys.stdin)
em = d.get('embed_model',{})
print(f'配置: {em.get(\"current\",\"?\")} | 索引: {em.get(\"stored\",\"?\")} ({em.get(\"stored_dim\",\"?\")}维)')
print(f'状态: {\"✅ 正常\" if not em.get(\"mismatch\") else \"❌ 不匹配\"}')"
⚠️ 注意事项
- 依赖 Ollama,首次下载模型约 640MB 需联网
- PDF 支持文字版 PDF(PyPDF2 优先提取,失败自动降级到 pdfplumber),纯图像版 PDF 暂不支持
- DOCX 支持通过 python-docx 提取段落文字和表格内容
- PDF/DOCX 解析需先创建虚拟环境:
python3 -m venv .venv && .venv/bin/pip install PyPDF2 pdfplumber python-docx - 仅支持纯文本内容,不支持图片和 PDF 中的图像
- 删除文件后运行「重新索引」即可从搜索结果移除(增量索引自动清理已删除文件,无需 --force)
- 数据全部在
~/workspace/knowledge/,卸载不丢
🎯 推荐搭配
Bilibili Auto Transcript — 装了这个 skill 后,B站视频转录完自动存到知识库,不用手动操作:
clawhub install bilibili-auto-transcript
转录的文件自动进 ~/workspace/knowledge/bilibili/,转完即搜。
📦 开源 & 交流
- GitHub:github.com/54Lynnn/knowledge-rag(⭐️ Star 支持)
- ClawHub:clawhub.ai/54lynnn/knowledge-rag
- QQ 群:120363664(欢迎扫码加入交流)
Scan to join WeChat group