Hotdry.
ai-systems

Docker 容器化 Llama3 完全离线 RAG 管道:本地嵌入、检索与推理全栈部署

使用 Docker Compose 部署 Ollama Llama3、ChromaDB 和 Streamlit 的离线 RAG 系统,给出硬件要求、部署参数与性能优化清单。

在隐私敏感的企业场景中,完全离线的 RAG(Retrieval-Augmented Generation)管道已成为构建私有 AI 应用的核心方案。传统云端 RAG 依赖 OpenAI 或其他 API,不仅引入数据泄露风险,还受网络延迟和费用制约。Docker 容器化 Llama3 的离线 RAG 系统,通过 Ollama 运行本地 LLM、mxbai-embed-large 生成嵌入、ChromaDB 持久化向量存储,以及 Streamlit 前端,实现一键部署的端到端管道。该方案零云依赖,支持 NVIDIA GPU 加速,确保敏感文档(如 PDF、技术手册)在本地安全处理。

系统架构采用微服务设计,四大组件通过 Docker Compose 隔离运行:Ollama 服务托管 Llama3 8B 模型(推理引擎);嵌入服务使用 mxbai-embed-large(1344 维向量,检索精度高);ChromaDB 作为向量数据库,支持持久化索引;Streamlit 后端处理文档摄入(自动分块、向量化)和聊天查询(RAG 检索 + 生成)。文档上传后,系统自动解析 PDF/TXT/MD,chunk 大小默认 512 token、重叠 50 token,确保语义完整性。检索时,top-k=5 片段注入提示,提升生成准确率达 30% 以上。

部署过程极简:克隆仓库后,编辑 docker-compose.yml 配置 GPU(若有 NVIDIA Docker),执行 docker-compose up -d。首次启动需拉取模型(~5GB),后续离线运行。关键参数清单如下:

硬件要求与资源分配:

  • RAM:16GB+ 系统内存(Ollama 独占 10GB)。
  • GPU:RTX 3060(8GB VRAM)推荐;CPU 模式下响应延迟 5-10s / 查询。
  • 存储:50GB+ SSD(模型 + 向量索引)。

docker-compose.yml 核心配置(可落地模板):

services:
  ollama:
    image: ollama/ollama:latest
    ports: ["11434:11434"]
    volumes: ['./ollama:/root/.ollama']
    environment:
      - OLLAMA_HOST=0.0.0.0
      - NVIDIA_VISIBLE_DEVICES=all  # GPU 支持
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
  streamlit:
    build: .
    ports: ["8501:8501"]
    depends_on: [ollama, chromadb]
    environment:
      - OLLAMA_URL=http://ollama:11434
      - CHROMA_URL=http://chromadb:8000

拉取模型:docker exec -it <ollama-container> ollama pull llama3:8bollama pull mxbai-embed-large

RAG 管道参数调优清单:

  1. 文档分块:chunk_size=512, chunk_overlap=50(平衡召回与噪声)。
  2. 嵌入生成:normalize_embeddings=True,batch_size=32(GPU 加速下)。
  3. 检索阈值:similarity_top_k=5, score_threshold=0.7(过滤低相关片段)。
  4. 生成参数:temperature=0.1(确定性输出),max_tokens=1024,top_p=0.9。
  5. 会话管理:history_length=10(上下文窗口控制内存)。

监控要点:使用 nvidia-smi 观察 GPU 利用率(目标 80%+);Docker stats 检查容器 CPU/RAM(Ollama <80%);日志中检索命中率(>0.8 为优)。性能瓶颈常见于嵌入生成(大文档时并行化)和检索(索引重建用 chroma.delete_collection)。

风险与缓解:

  • 内存溢出:Llama3 8B VRAM 峰值 12GB,超限 fallback 到 CPU(环境变量 OLLAMA_NUM_GPU=0)。
  • 检索漂移:定期重索引(脚本 cron 每周),或 hybrid 搜索(BM25 + 向量)。
  • 回滚策略:纯 LLM 模式(禁用 RAG),或切换轻量模型如 Phi-3。

实际落地案例:在工业 IoT 场景,上传 Modbus 协议手册后,系统准确回答调试参数,避免云端泄露。该管道扩展性强,可集成 MQTT 日志实时摄入。

资料来源

(本文约 950 字)

查看归档