小易说IT 小易说IT

Ollama+OpenWebUI+RAG 一键部署 docker-compose 脚本

  • ollama(模型推理服务,11434)

  • open-webui(前端,自带内置 RAG,支持文档上传、检索问答)

  • 数据持久化:ollama 模型、webui 配置 / 知识库全部挂载到本地目录

  • 网络互通,容器内部自动连通,开箱即用,不需要额外配置

前置:装好 Docker + Docker Compose 说明:OpenWebUI 自带 RAG,底层直接调用 Ollama 的 embedding/LLM,不用额外搭 Chroma/Weaviate(如需独立向量库版本我后面也可以给)

docker-compose.yml

version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      # 模型持久化目录
      - ./ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            # NVIDIA GPU 直通,没有N卡就删掉这一段
            - driver: nvidia
              count: all
              capabilities: [gpu]
    environment:
      - OLLAMA_HOST=0.0.0.0
      - OLLAMA_NUM_PARALLEL=2
      - OLLAMA_MAX_LOADED_MODELS=2
    networks:
      - ollama-net

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      # webui配置、用户、知识库、向量库持久化
      - ./open-webui:/app/backend/data
    environment:
      # 重点:容器内访问ollama服务名
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_SECRET_KEY=changeme_your_secret_key_here
      - ENABLE_RAG=true
      - RAG_EMBEDDING_ENGINE=ollama
      # 默认embedding模型,后续webui里也可以改
      - RAG_EMBEDDING_MODEL=nomic-embed-text
    depends_on:
      - ollama
    networks:
      - ollama-net

networks:
  ollama-net:
    driver: bridge

操作步骤

  1. 新建文件夹,比如 ollama-webui,进入文件夹

  2. 新建 docker-compose.yml,粘贴上面内容

  3. 启动

docker compose up -d
  1. 拉取基础模型(进入 ollama 容器或者本机调用接口拉)

# 拉取对话大模型
docker exec -it ollama ollama pull qwen2.5:7b
# 拉取RAG向量嵌入模型(上面环境变量指定的)
docker exec -it ollama ollama pull nomic-embed-text

nomic-embed-text 是 RAG 非常通用的 embedding 模型;也可以用 bge-m3

  1. 访问地址:http://localhost:3000

    • 第一次打开注册管理员账号(第一个注册的自动是管理员)

  2. RAG 使用方式:

    • 左侧【知识库】→新建知识库,上传 PDF/TXT/DOCX/Markdown 等文档

    • 聊天时选择对应知识库,开启检索

重要注意事项

  1. NVIDIA GPU:没有 NVIDIA 显卡,直接删掉 deploy.reservations.devices 整块配置,否则启动报错。 AMD GPU、昇腾等不支持这个 nvidia 直通写法,需要单独配置。

  2. WEBUI_SECRET_KEY:生产环境务必改成一个长随机字符串,不要用默认值。

  3. 端口冲突:如果本机 11434/3000 被占用,修改左边端口映射,例如 3001:3000

  4. 升级:

docker compose pull
docker compose up -d
  1. 停止:

docker compose down
# 想连数据一起删掉(谨慎!模型和知识库都会丢)
# docker compose down -v

常见 RAG 调优提示(在 OpenWebUI 设置里)

  • 检索块大小:512~1024,重叠 100~200

  • 检索数量:top_k=3~5

  • 可以切换 embedding:bge-m3 /all-minilm


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/ollama-openwebui-rag-one-click-deployment-docker-compose-script

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/