Files
tg-spam-guard/KNOWLEDGE.md
T
2026-07-06 19:26:00 +08:00

1.7 KiB

知识库管理说明

当前方案

默认运行模式: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/向量索引(宿主机)

cd /vol3/1000/Code/tg-spam-guard
.venv/bin/python3 build_kb.py

build_kb.py 仍会生成 embeddings.npy,方便以后切回 vector 模式;运行镜像只使用 metadata.json

运行时轻量检索测试

cd /vol3/1000/Code/tg-spam-guard
KNOWLEDGE_SEARCH_MODE=lite .venv/bin/python3 -c "from knowledge import search; print(search('怎么安装收割机', top_k=3))"

可选:向量检索模式

仅建议宿主机/开发环境使用:

KNOWLEDGE_SEARCH_MODE=vector .venv/bin/python3 -c "from knowledge import search; print(search('怎么安装收割机', top_k=3))"

需要安装离线依赖:

pip install -r requirements-kb.txt

Docker 注意事项

docker-compose.yaml 显式设置:

KNOWLEDGE_SEARCH_MODE: lite

并挂载:

./knowledge/index:/app/knowledge/index
./knowledge/qa_cache.json:/app/knowledge/qa_cache.json

只要 knowledge/index/metadata.json 存在,轻量检索即可工作。