LLMWare 使用 Docker 与 Docker Compose 快速搭建多数据库 RAG 实验环境
2026/9/14 19:26:32 网站建设 项目流程

LLMWare 使用 Docker 与 Docker Compose 快速搭建多数据库 RAG 实验环境

【免费下载链接】llmwareUnified framework for building enterprise RAG pipelines with small, specialized models项目地址: https://gitcode.com/GitHub_Trending/ll/llmware

本文基于 llmware 仓库中的 Docker 入门指南 展开,介绍如何在 Linux 环境下安装 Python/Docker/Docker Compose,并借助仓库内置的docker-compose-*.yaml文件快速拉起 Mongo、Postgres/PG Vector、Neo4j、Milvus、Qdrant、Redis 六种数据库容器,最后通过仓库示例脚本验证向量嵌入写入链路是否打通。读完后你可以独立完成容器化 RAG 环境的搭建、验证与清理。

1. 前置准备:Python 与 Pip

llmware 的 Python 运行环境通常随 Linux 发行版自带。安装并升级 Pip 的命令如下(以 Debian/Ubuntu 的 apt 为例):

sudo apt-get update sudo apt-get -y install python3-pip pip3 install --upgrade pip

如果系统尚未安装python3,需要先安装 Python 解释器。仓库的容器镜像基于 Python 3.11 构建(见下文 Dockerfile 中的python:3.11-bookworm基础镜像),因此宿主机使用 3.11 及以上版本最为贴合。

2. 安装 Docker 与 Docker Compose 并验证

要使用 llmware 仓库中的 Docker Compose 文件,需要安装最新版 Docker 与 Docker Compose。安装思路可概括为两步:

  1. 安装 Docker Engine(必需):添加 Docker 官方 apt 源,安装docker-ce及相关包,然后启用服务(sudo systemctl enable --now docker)。
  2. 安装 Docker Compose(可选但强烈建议):下载 Compose 二进制插件并放入/usr/local/lib/docker/cli-plugins/(或旧版docker-compose命令的下载方式,二进制下载地址以 Docker 官方 compose releases 页面为准)。

安装完成后验证 Docker 服务状态:

sudo systemctl status docker

看到active (running)即表示守护进程正常。若 Compose 是作为 CLI 插件安装的,可用docker compose version验证;若是独立二进制,则用docker-compose version

3. 仓库内置的 Compose 文件矩阵

文档指出 Compose 文件“当前支持 6 种数据库系统”。在仓库中,这些编排文件全部位于 scripts/docker/ 目录下,命名格式为docker-compose-数据库名.yaml。与文档所述六类数据库的对应关系如下:

数据库系统角色Compose 文件容器镜像(版本)暴露端口
Mongo活动数据库(文本集合)docker-compose.yaml、docker-compose_mongo_milvus.yaml、docker-compose-qdrant.yamlmongo:5.0.1027017
Postgres / PG Vector活动数据库 + 向量数据库docker-compose-pgvector.yamlankane/pgvector5432
Neo4j向量数据库docker-compose-neo4j.yamlneo4j:5.15.0-community7474、7687
Milvus向量数据库docker-compose.yaml、docker-compose_mongo_milvus.yamlmilvusdb/milvus:v2.3.0(standalone)19530、9091
Qdrant向量数据库docker-compose-qdrant.yamlqdrant/qdrant:latest6333、6334
Redis向量数据库docker-compose-redis-stack.yamlredis/redis-stack-server:latest6379

两点角色划分需要牢记(文档原话的展开):

  1. Mongo 和 Postgres 用作“活动数据库”(active database / collection db),存储 Library 的文本集合(chunks、文档元数据等);
  2. PG Vector、Neo4j、Milvus、Qdrant、Redis 用作“向量数据库”(vector db),存储向量嵌入。其中 PG Vector 是 Postgres 的别名,即同一个 Postgres 容器既可做活动数据库,也可通过 pgvector 扩展承担向量检索。

3.1 主 Compose 文件:一栈拉起 Mongo + Milvus + Neo4j

docker-compose.yaml 是最完整的开发栈,定义了以下服务:

  • llmware 开发容器:使用镜像provocoai/llmware:dev-01,通过network_mode: service:mongodb与 mongodb 容器共享网络命名空间(从源码结构看,这样容器内可直接以本地回环访问 Mongo),并以command: sleep infinity挂起等待人工进入调试;
  • mongodbmongo:5.0.10,数据卷llmware-mongodb:/data/db,端口27017:27017,注释中预留了MONGO_INITDB_ROOT_USERNAME/PASSWORD等环境变量用于开启认证;
  • Milvus standalone 三件套etcdquay.io/coreos/etcd:v3.5.5,负责元数据)、miniominio/minio:RELEASE.2023-03-20T20-16-18Z,负责对象存储)、milvusmilvusdb/milvus:v2.3.0milvus run standalone启动,depends_on声明了对 etcd 与 minio 的依赖,并对 9091 端口的/healthz做 90 秒起跳的健康检查);
  • dev-neo4jneo4j:5.15.0-communityNEO4J_AUTH=none关闭认证(仅限开发),数据目录挂载$HOME/neo4j/data

3.2 单库 Compose 文件的关键配置

各单库文件都刻意保持“最小可用”配置,值得注意的细节:

  • docker-compose-pgvector.yaml:镜像为ankane/pgvector(预装 pgvector 扩展的 Postgres 发行版),设置POSTGRES_DB=postgresPOSTGRES_USER=postgres、空密码与POSTGRES_HOST_AUTH_METHOD=trust,并挂载./init.sql/docker-entrypoint-initdb.d/供容器首次启动时初始化扩展。trust认证只适用于本地实验;
  • docker-compose-qdrant.yaml:同时编排了 mongodb + qdrant 两个服务——即“活动数据库 + 向量数据库”一次性拉起,qdrant 服务通过内联configs指定log_level: INFO,数据持久化在qdrant_data卷;
  • docker-compose-redis-stack.yaml:使用redis/redis-stack-server:latest,并通过REDIS_ARGS=--enable-debug-command yes --enable-module-command yes显式开启模块命令——这是 Redis 作为向量库(redis-stack 自带向量检索模块)可被 llmware 驱动使用的前提;
  • docker-compose_mongo_milvus.yaml:主文件的精简子集,仅含 mongodb + etcd + minio + milvus 四个服务,适合只测 Mongo/PG 活动库配 Milvus 向量库的场景。

3.3 附带的 Dockerfile

仓库还提供 scripts/docker/Dockerfile 用于构建 llmware 自身镜像,关键步骤包括:

  • 基于python:3.11-bookworm,安装gitbashpostgresqllibpq-devbuild-essentialmusl-dev等编译与数据库客户端依赖;
  • 将 llmware 仓库克隆到镜像内/llmware,并执行pip install --no-cache-dir -r requirements.txt
  • 创建非 root 用户llmware(UID/GID 1000)并切换USER,工作目录设为/llmware,默认命令为/bin/bash

这解释了主 Compose 文件为何能把sleep infinity容器当作开发环境直接使用——镜像内已含完整的 llmware 依赖。

4. 启动并检查容器

进入仓库目录,确认能看到docker-compose-*.yaml系列文件(位于scripts/docker/下)。启动任意一个 Compose 文件:

docker-compose -f docker-compose-pgvector.yaml up -d

-f参数换成目标文件名即可;Compose 插件语法docker compose -f ... up -d等效。)然后检查容器是否运行:

docker ps

注意:docker ps只列出当前运行中的容器;加-a标志(docker ps -a)可列出所有容器(包括已停止的)。对于多服务栈(如 Mongo+Milvus),建议用docker compose -f <file> ps查看带健康检查状态的完整拓扑,Milvus 的健康检查有 90 秒start_period,启动初期短暂非 healthy 属正常现象。

5. 用嵌入示例验证数据库连通性

文档推荐的验证方式是修改仓库中的嵌入示例。原文档引用fast_start/example-2-build_embeddings.py,在当前仓库中该文件位于 solutions/rag/example-2-build_embeddings.py。需要改动的三处(行号以当前仓库版本为准):

  1. 活动数据库:第 143 行LLMWareConfig().set_active_db("sqlite"),改为"mongo""postgres"(二选一,取决于你拉起的是哪个活动库容器);
  2. 向量数据库:第 153 行LLMWareConfig().set_vector_db("chromadb"),改为"pg_vector""neo4j""milvus""qdrant""redis"之一;
  3. 库名:第 162 行library = setup_library("example2_library")

配置层面对取值有白名单校验:从源码结构看,llmware/configs.py 中set_active_db()set_vector_db()都会把传入值与cls._supported["collection_db"]/cls._supported["vector_db"]支持的列表比对,不支持的名称会抛出LLMWareException(提示selected db is not supported),因此填错别名会在启动阶段立即报错,而不是静默写入错误数据库。

运行该示例后,终端会输出嵌入生成进度(示例内部调用library.install_new_embedding(embedding_model_name=..., vector_db=..., batch_size=100),完成后用Query(library).semantic_query(...)执行一次语义查询验证)。若出现如下错误:

llmware.exceptions.EmbeddingModelNotFoundException: Embedding model for 'example2_library' could not be located

说明该库名下已有残留的嵌入记录冲突,按文档建议,为第 162 行传入的库名换一个唯一名称即可。

另外注意:示例默认使用mini-lm-sbert(sentence-transformers 类)嵌入模型,需先pip3 install torch transformers;若改用 OpenAI 嵌入模型,则按示例注释改为text-embedding-ada-002并配置 API Key。

6. 停止与删除容器

停止容器:

docker stop container_ID_OR_container_name

删除容器(删除不会自动删除数据卷,如需彻底清理数据再执行docker volume rmdocker compose -f <file> down -v):

docker rm container_ID_OR_container_name

传入容器 ID 或名称均可。查找容器的 ID / 名称:

docker ps -a

7. 实践注意事项与适用边界

结合各 Compose 文件的实际配置,使用这些编排文件前需注意以下前提与限制:

  • 均为开发配置:PG Vector 使用trust空密码认证、Neo4j 设置NEO4J_AUTH=none、Mongo 默认未启用MONGO_INITDB_ROOT_*认证、MinIO 使用默认minioadmin/minioadmin凭据(见 docker-compose.yaml)。这些配置只适用于本地实验环境,不可直接用于生产;
  • 端口冲突:六个数据库的端口(27017 / 5432 / 7474、7687 / 19530、9091、9000、9001 / 6333、6334 / 6379)若与宿主机已有服务冲突,需修改对应 Compose 文件的ports映射;
  • 数据持久化:各文件均使用具名卷(llmware-mongodbllmware-etcdllmware-miniollmware-milvusqdrant_dataredis_data等)或绑定挂载($HOME/neo4j/data)保存数据,重复up -d不会丢数据;
  • 资源占用:Milvus 栈包含 etcd、MinIO、Milvus 三个服务且健康检查周期较长,建议在内存不低于 8GB 的机器上运行完整主栈,或使用单库文件做更轻量的验证;
  • 版本锁定:镜像版本以当前 Compose 文件为准(Mongo 5.0.10、Neo4j 5.15.0、Milvus v2.3.0 等),升级镜像版本时留意与 llmware 驱动的兼容性。

按以上步骤,你可以在一台干净的 Linux 机器上完成:环境准备 → 容器拉起 → 活动库/向量库配置 → 嵌入写入与语义查询验证 → 容器清理的完整闭环,为后续在 llmware 中开展 RAG 管道开发提供可复现的数据库底座。

【免费下载链接】llmwareUnified framework for building enterprise RAG pipelines with small, specialized models项目地址: https://gitcode.com/GitHub_Trending/ll/llmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询