AIstack RAG 实战:GTX 1080 跑 38K 邮件知识库

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 定时更新模型