# 知识库管理说明 ## 当前方案 默认运行模式:`KNOWLEDGE_SEARCH_MODE=lite` - Bot 运行镜像不安装 `torch` / `sentence-transformers` / `numpy` - 运行时只读取 `knowledge/index/metadata.json` - 使用轻量关键词 + 领域词表 + BM25-like 加权检索 - 命中后仍调用 Ollama 生成最终中文回答 ## 为什么这样设计 原方案运行时需要给用户问题生成 embedding,因此 Docker 镜像必须包含 `sentence-transformers -> torch/CUDA`,镜像约 6GB。 当前轻量方案把运行镜像降到约 175MB,常见问答命中仍然准确,性价比最高。 ## 常用命令 ### 重建轻量 metadata/向量索引(宿主机) ```bash cd /vol3/1000/Code/tg-spam-guard .venv/bin/python3 build_kb.py ``` > `build_kb.py` 仍会生成 `embeddings.npy`,方便以后切回 vector 模式;运行镜像只使用 `metadata.json`。 ### 运行时轻量检索测试 ```bash cd /vol3/1000/Code/tg-spam-guard KNOWLEDGE_SEARCH_MODE=lite .venv/bin/python3 -c "from knowledge import search; print(search('怎么安装收割机', top_k=3))" ``` ### 可选:向量检索模式 仅建议宿主机/开发环境使用: ```bash KNOWLEDGE_SEARCH_MODE=vector .venv/bin/python3 -c "from knowledge import search; print(search('怎么安装收割机', top_k=3))" ``` 需要安装离线依赖: ```bash pip install -r requirements-kb.txt ``` ## Docker 注意事项 `docker-compose.yaml` 显式设置: ```yaml KNOWLEDGE_SEARCH_MODE: lite ``` 并挂载: ```yaml ./knowledge/index:/app/knowledge/index ./knowledge/qa_cache.json:/app/knowledge/qa_cache.json ``` 只要 `knowledge/index/metadata.json` 存在,轻量检索即可工作。