RAG应用项目单机部署指南:基于Docker Compose的完整解决方案
2025-07-08 08:14:23作者:丁柯新Fawn
项目概述
RAG(检索增强生成)应用项目是一个结合了向量检索和大语言模型能力的智能系统。本文重点介绍如何使用Docker Compose在单机环境下部署该项目的完整技术栈,包括向量数据库、大模型服务和RAG应用本身。
核心组件架构
该部署方案包含四个关键服务组件:
- Qdrant向量数据库:负责存储和检索文档向量
- Ollama大模型服务:提供本地运行的LLM能力
- Setup初始化服务:完成系统初始配置
- 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"
初始化流程包括:
- 为脚本添加执行权限
- 在Qdrant中创建默认集合(使用余弦相似度,768维向量)
- 设置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:
创建专用网络确保服务间安全通信,同时隔离外部访问。
部署实践建议
- 模型选择:通过MODEL环境变量可更换Ollama模型,如llama3等
- 向量维度:如需更改向量维度,需同步修改VECTOR_SIZE和EMBEDDING_DIM
- 持久化存储:ollama和data目录应妥善备份
- 性能调优:可根据硬件调整Ollama的线程数等参数
- 安全考虑:生产环境应配置QDRANT_API_KEY
典型工作流程
- 用户查询到达RAG应用(8000端口)
- 应用使用nomic-embed-text生成查询向量
- 向Qdrant查询相似文档片段
- 将检索结果与原始查询组合发送给Ollama
- Ollama生成最终回答返回给用户
扩展可能性
该架构可轻松扩展为分布式部署:
- Qdrant可集群化提升检索性能
- Ollama可部署多实例实现负载均衡
- 添加Redis等缓存层优化响应速度
通过此Docker Compose方案,开发者可以快速搭建完整的RAG应用环境,专注于业务逻辑开发而非基础设施搭建。