无需GPU、无需网络,完全本地运行的AI文档助手
| 特性 | 说明 |
|---|---|
| 离线运行 | 100% 本地,无需网络 |
| 快速启动 | < 1秒 (规则模式) |
| 低内存 | ~500MB (规则) / ~1.5GB (ONNX模式) |
| 易部署 | 纯Python,依赖少 |
用户问题
│
▼
┌─────────────────┐
│ 检索模块 │ ← BM25 高召回检索
│ (纯Python) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 质量评估 │
└────────┬────────┘
│
┌────┴────┐
│ 高相关? │
└────┬────┘
Yes │ No
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ 规则抽取 │ │ Qwen3.5-2B│
│ (无LLM) │ │ ONNX Q4 │
└─────────────┘ └─────────────┘
pip install -r requirements.txt
pip install onnxruntime transformers使用 ModelScope 下载 Qwen3.5-2B-ONNX 模型:
pip install modelscope
# 下载完整模型(包含 embedding 和 decoder)
python -m modelscope.cli.cli download onnx-community/Qwen3.5-2B-ONNX \
onnx/embed_tokens_q4f16.onnx \
onnx/embed_tokens_q4f16.onnx_data \
onnx/decoder_model_merged_q4.onnx \
onnx/decoder_model_merged_q4.onnx_data \
--local_dir ./models/Qwen3.5-2B-ONNX所需文件:
| 文件 | 大小 | 说明 |
|---|---|---|
embed_tokens_q4f16.onnx |
1KB | Embedding 层 |
embed_tokens_q4f16.onnx_data |
294MB | Embedding 权重 |
decoder_model_merged_q4.onnx |
1MB | Decoder 骨架 |
decoder_model_merged_q4.onnx_data |
1.2GB | Decoder 权重 |
# 规则模式 (无需模型)
python main.py --add ./data --query "你的问题"
# LLM 模式 (更精准)
python main.py --add ./data --use-llm --query "你的问题"
# 交互模式
python main.py --interactivefrom core import SimpleRAG, RAGConfig
# 基础用法
rag = SimpleRAG()
rag.ingest("./data") # 摄入文档
result = rag.query("问题") # 问答
# 启用 LLM 模式
config = RAGConfig(use_llm=True)
rag = SimpleRAG(config)SmallRAG/
├── core/ # 核心模块
│ ├── config.py # 配置
│ ├── document_parser.py # 文档解析
│ ├── chunker.py # 文本分块
│ ├── indexer.py # Whoosh索引
│ ├── retriever.py # BM25检索
│ ├── answer_generator.py # 规则问答
│ ├── llm_generator.py # LLM问答 (ONNX)
│ ├── generator.py # 统一生成器
│ └── small_rag.py # 主入口
├── tests/ # 测试
├── data/ # 文档和索引
├── models/ # LLM模型 (需单独下载,见下方说明)
├── main.py # CLI入口
└── requirements.txt # 依赖
使用 Qwen3.5-2B-ONNX 模型,纯 CPU 推理:
| 指标 | 值 |
|---|---|
| 参数量 | 2B |
| 格式 | ONNX (Q4量化) |
| 内存占用 | ~1.5GB |
| 推理设备 | CPU |
| 包 | 用途 | 必须 |
|---|---|---|
| jieba | 中文分词 | ✅ |
| Whoosh | 全文索引 | ✅ |
| PyPDF2 | PDF解析 | ✅ |
| python-docx | Word解析 | ✅ |
| openpyxl | Excel解析 | ✅ |
| beautifulsoup4 | HTML解析 | ✅ |
| python-pptx | PPT解析 | ✅ |
| onnxruntime | ONNX推理 | ✅ |
| transformers | Tokenizer | ✅ |
python main.py --check # 检查环境
python main.py --add <文件> # 添加文档
python main.py --add-dir <目录> # 添加目录
python main.py --query <问题> # 查询
python main.py --interactive # 交互模式
python main.py --use-llm # 启用LLMadd <文件> - 添加文档
add-dir <目录> - 添加目录
query <问题> - 查询 (简写: q)
smart <问题> - 智能查询 (自动建库)
status - 查看状态
clear - 清空索引
exit - 退出