首页
/ RAG应用项目单机部署指南:基于Docker Compose的完整解决方案

RAG应用项目单机部署指南:基于Docker Compose的完整解决方案

2025-07-08 08:14:23作者:丁柯新Fawn

项目概述

RAG(检索增强生成)应用项目是一个结合了向量检索和大语言模型能力的智能系统。本文重点介绍如何使用Docker Compose在单机环境下部署该项目的完整技术栈,包括向量数据库、大模型服务和RAG应用本身。

核心组件架构

该部署方案包含四个关键服务组件:

  1. Qdrant向量数据库:负责存储和检索文档向量
  2. Ollama大模型服务:提供本地运行的LLM能力
  3. Setup初始化服务:完成系统初始配置
  4. RAG应用服务:核心业务逻辑实现

详细部署解析

1. Qdrant向量数据库配置

qdrant:
  image: qdrant/qdrant:latest
  ports:
    - 6333:6333  # 管理端口
    - 6334:6334  # gRPC端口
  networks:
    - ragapp-network

Qdrant作为高性能向量搜索引擎,提供了:

  • 6333端口用于HTTP API交互
  • 6334端口用于gRPC高性能通信
  • 使用最新官方镜像确保功能完整性

2. Ollama大模型服务配置

ollama:
  image: ollama/ollama:latest 
  ports:
    - 11434:11434
  volumes:
    - ./ollama:/root/.ollama
  networks:
    - ragapp-network

Ollama服务特点:

  • 11434端口提供模型API
  • 挂载本地目录持久化模型数据
  • 支持多种开源大模型(通过MODEL环境变量指定)

3. 系统初始化服务

setup:
  image: curlimages/curl:latest
  volumes:
    - ./scripts:/ragapp
  environment:
    - MODEL=${MODEL:-phi3:latest}
    - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://ollama:11434}
    - QDRANT_URL=http://qdrant:6333
    - COLLECTION_NAMES=default
    - DISTANCE_METRIC=Cosine
    - VECTOR_SIZE=768
  command: >
    /bin/sh -c 
    "chmod +x /ragapp/create_qdrant_collection.sh /ragapp/setup_ollama.sh &&
    /ragapp/create_qdrant_collection.sh &&
    /ragapp/setup_ollama.sh"

初始化流程包括:

  1. 为脚本添加执行权限
  2. 在Qdrant中创建默认集合(使用余弦相似度,768维向量)
  3. 设置Ollama模型(默认使用phi3最新版)

4. RAG应用服务

ragapp:
  build: ../../src/ragapp
  ports:
    - "8000:8000"
  volumes:
    - ./config:/app/config
    - ./data:/app/data
  environment:
    - VECTOR_STORE_PROVIDER=qdrant
    - QDRANT_URL=http://qdrant:6333
    - QDRANT_COLLECTION=default
    - MODEL_PROVIDER=ollama
    - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://ollama:11434}
    - EMBEDDING_MODEL=nomic-embed-text
    - EMBEDDING_DIM=768
    - MODEL=${MODEL:-phi3:latest}

RAG应用核心配置:

  • 8000端口提供Web服务
  • 挂载配置和数据目录实现持久化
  • 使用nomic-embed-text模型生成嵌入向量
  • 与Qdrant和Ollama服务集成

网络配置

networks:
  ragapp-network:

创建专用网络确保服务间安全通信,同时隔离外部访问。

部署实践建议

  1. 模型选择:通过MODEL环境变量可更换Ollama模型,如llama3等
  2. 向量维度:如需更改向量维度,需同步修改VECTOR_SIZE和EMBEDDING_DIM
  3. 持久化存储:ollama和data目录应妥善备份
  4. 性能调优:可根据硬件调整Ollama的线程数等参数
  5. 安全考虑:生产环境应配置QDRANT_API_KEY

典型工作流程

  1. 用户查询到达RAG应用(8000端口)
  2. 应用使用nomic-embed-text生成查询向量
  3. 向Qdrant查询相似文档片段
  4. 将检索结果与原始查询组合发送给Ollama
  5. Ollama生成最终回答返回给用户

扩展可能性

该架构可轻松扩展为分布式部署:

  • Qdrant可集群化提升检索性能
  • Ollama可部署多实例实现负载均衡
  • 添加Redis等缓存层优化响应速度

通过此Docker Compose方案,开发者可以快速搭建完整的RAG应用环境,专注于业务逻辑开发而非基础设施搭建。