Install
openclaw skills install @wufulin/rag-knowledge-assistantopenclaw skills install @wufulin/rag-knowledge-assistant当用户需要以下功能时触发:
构建/管理本地知识库
查询知识库
优化检索性能
结合关键词精确匹配和语义理解,通过 RRF 融合排序:
查询文本
↓
┌─────────────────┐ ┌─────────────────┐
│ jieba 分词 │ │ BGE-M3 │
│ BM25Okapi │ │ Chroma │
│ 关键词检索 │ │ 向量检索 │
└─────────────────┘ └─────────────────┘
↓ ↓
└────────────┬────────────┘
↓
RRF 融合排序
↓
返回 Top-K 结果
三种检索模式:
| 模式 | 参数 | 适用场景 |
|---|---|---|
| 混合检索 | --hybrid (默认) | 通用场景,兼顾精确和语义 |
| BM25 仅 | --bm25-only | 精确术语、产品型号、代码 |
| 向量仅 | --vector-only | 概念查询、同义词、自然语言 |
预加载模型,实现 ~40ms 查询响应:
# 启动服务
cd scripts && source venv/bin/activate
uvicorn rag_api:app --host 0.0.0.0 --port 8000
# 查询
curl -X POST http://localhost:8000/query \
-H "Content-Type: application/json" \
-d '{"query": "问题", "top_k": 5}'
在 Hermes 对话中直接提问,自动调用 RAG API:
# scripts/rag_query_auto.py
if is_rag_query(user_question):
response = query_rag_api(user_question)
return format_results(response)
# 1. 准备文档 (支持 md/txt/pdf/docx/xlsx)
mkdir ~/test-knowledge
cp your_docs/*.md ~/test-knowledge/
# 2. 构建索引 (含混合检索)
cd scripts && source venv/bin/activate
python index_knowledge.py \
--knowledge-dir ~/test-knowledge \
--output-dir ~/test-vectorstore \
--rebuild --hybrid
# 启动 FastAPI 服务 (预加载模型)
uvicorn rag_api:app --host 0.0.0.0 --port 8000
# 或后台运行
nohup uvicorn rag_api:app --host 0.0.0.0 --port 8000 > rag_api.log 2>&1 &
方式 A:命令行
python rag_query.py "问题" --vectorstore ~/test-vectorstore --top-k 5
方式 B:API 调用
curl -X POST http://localhost:8000/query \
-d '{"query": "问题", "top_k": 5, "search_mode": "hybrid"}'
方式 C:对话中直接提问
用户: 香港专才计划的签证有效期是多久?
助手: [自动查询知识库] 根据知识库信息...
| 文件 | 说明 |
|---|---|
scripts/index_knowledge.py | 构建索引 (支持混合检索) |
scripts/rag_query.py | 命令行查询工具 |
scripts/rag_api.py | FastAPI 服务 |
scripts/rag_query_auto.py | 自动查询脚本 |
scripts/hybrid_retriever.py | 混合检索核心模块 |
references/hybrid_search.md | 混合检索实现细节 |
references/fastapi_service.md | FastAPI 服务部署指南 |
cd scripts && source venv/bin/activate
pip install rank-bm25 jieba fastapi uvicorn
uvicorn rag_api:app --host 0.0.0.0 --port 8000| 优化前 | 优化后 | 方法 |
|---|---|---|
| 3-4 秒/查询 | ~40ms/查询 | FastAPI + 模型预加载 |
| 首次查询慢 | 启动即预热 | lifespan 中执行 warmup query |
| 仅关键词匹配 | 语义理解 | BGE-M3 + jieba 分词 |
RAG 和 LLM Wiki 是互补的知识管理方式:
| RAG | LLM Wiki | |
|---|---|---|
| 用途 | 快速检索原始文档 | 持久化整理知识 |
| 查询速度 | ~40ms | 直接读取 |
| 交叉引用 | 无 | [[wikilinks]] |
| 矛盾处理 | 无法发现 | 显式标记 |
| 适合场景 | 日常问答、快速查找 | 深度整理、长期积累 |
推荐工作流:
llm-wiki 技能)示例:
用户问:优才和专才的区别?
→ RAG 查询 → 获得答案
→ 如果答案有价值 → 更新到 Wiki 的 [[香港移民FAQ]] 页面
→ 添加交叉引用 [[香港优才计划]]、[[香港专才计划]]