AIstack RAG 实战:GTX 1080 跑 38K 邮件知识库
背景
一台二手 GTX 1080(8GB VRAM)+ Proxmox LXC 容器,能不能跑一套像样的本地 RAG?
答案是:能,但有几个坑。
硬件环境
| 项目 | 配置 |
|---|---|
| GPU | GTX 1080 8GB (Pascal 架构) |
| 宿主 | Proxmox LXC 容器 |
| 系统 | Debian 12 |
| 磁盘 | 40GB 根分区(偏小) |
| CPU | 8核 |
软件架构
用户问题
↓
嵌入模型 (bge-small-en-v1.5) → ChromaDB 检索
↓
LLM (gemma4:31b-cloud via Ollama) → 生成答案
| 组件 | 选择 | 备注 |
|---|---|---|
| 向量数据库 | ChromaDB | 38,230 封邮件已索引 |
| 嵌入模型 | bge-small-en-v1.5 | CPU 运行(PyTorch 兼容性) |
| LLM | gemma4:31b-cloud | Ollama Cloud 免费层 |
| LLM 本地备选 | qwen3.5:9b-q4_K_M | 可用但较慢 |
踩坑记录
坑1:PyTorch 2.x 不支持 GTX 1080
PyTorch 2.11+ 默认编译不支持 Pascal 架构(sm_61)。错误信息:
no kernel image is available for execution on the device
解决方案: 嵌入模型回退到 CPU 推理。速度慢一些但能跑。
# 强制 CPU
import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""
坑2:qwen3.5 思考模式太慢
qwen3.5 默认开启 CoT(链式推理),简单问题也要 22 秒。
# 测试:2+2 等于几
# 有思考:33.47 秒(22秒在推理)
# 无思考:1.5 秒
解决方案: API 加参数关闭思考模式
"think": False
坑3:Ollama Cloud 模型命名
Ollama Cloud 模型带 :cloud 后缀(如 gemma4:31b-cloud),但实际 API 响应中模型名被解析为 gemma4:31b。
如果脚本用 /api/chat 端点而非 /api/generate,需要额外加 think: False 参数。
坑4:删除本地模型后 404
不小心删除了 qwen3.5:9b-q4_K_M,结果 RAG 报 404。
教训: :cloud 后缀的模型是 Ollama Pro 订阅才能用,免费层只是试用额度。别删本地模型。
费用对比
| 方案 | 成本 |
|---|---|
| Ollama Pro 订阅 | $20/月,无限用量 |
| Ollama Cloud 免费层 | 0,按用量限速 |
| 自托管 qwen3.5:9b | 0,电费 |
对于每天几十次查询的场景,Ollama Cloud 免费层够用。
当前状态
- ✅ 38,230 封邮件已索引
- ✅ 嵌入检索在 CPU 运行
- ✅ LLM 用 gemma4:31b-cloud(Ollama 免费层)
- ⚠️ 嵌入速度较慢(GTX 1080 不支持)
- 💡 如果要更快:换一张 Ampere 架构显卡(RTX 30xx+)
核心脚本
rag_query.py — 查询入口:
MODEL = "gemma4:31b-cloud"
response = requests.post(
"http://localhost:11434/api/chat",
json={
"model": MODEL,
"messages": [{"role": "user", "content": prompt}],
"stream": False,
"think": False,
"options": {"temperature": 0.3, "num_ctx": 8192}
},
timeout=120
)
下一步
- 测试 MiniMax M2.5 API($0.30/1M 输入,便宜)
- 给 embedding 换个支持 CUDA 的卡
- 加入 ollama pull 定时更新模型