最近在准备 AI 方向的实习,发现网上关于 RAG(检索增强生成)的项目教程虽然多,但大多是直接调用 API 的简单 Demo。真正从零开始、考虑工程落地并具备生产环境参考价值的完整项目记录,可谓少之又少。
拒绝纸上谈兵,我决定自己动手。从环境搭建、数据库选型、检索优化到监控部署,完整地走一遍生产级 RAG 系统的构建流程。
这篇文章是本系列的第一篇,主要记录基础环境准备和Milvus 向量数据库的部署。我的开发环境是一台 Windows 笔记本,配置为 RTX 3060 Laptop (6GB显存) + WSL2 Ubuntu 22.04。希望这篇记录能帮助到同样在准备项目、巩固知识点的同学。
本项目的目标是构建一个高准确率、高性能、具备工程化能力的企业级 RAG 知识库系统。整体技术栈如下:
2.1 硬件与系统环境
- 主机系统:Windows 11
- 显卡:NVIDIA GeForce RTX 3060 Laptop (6GB)
- 子系统:WSL2 Ubuntu 22.04
- Python 版本:3.10 或 3.11
💡 避坑提示(Python版本):
强烈建议使用 Python 3.10 或 3.11。AI 生态圈(如 PyTorch、LangChain 以及各种底层的 C++ 绑定库)对最新的 Python 版本兼容往往有延迟,追求过新的版本(如 3.12⁄3.13)容易在编译依赖时遇到令人头疼的报错。
2.2 安装 WSL2
如果你的 Windows 还没有安装 WSL2,请在 PowerShell(以管理员身份运行)中执行以下命令:
PowerShell
wsl –install -d Ubuntu-22.04
安装完成后重启电脑,进入 Ubuntu 子系统设置用户名和密码即可。
2.3 安装 Docker 并配置 GPU 支持
在 WSL2 Ubuntu 终端中执行以下命令,一键安装 Docker 并配置用户权限:
Bash
# 1. 下载并运行官方安装脚本 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
2. 将当前用户加入 docker 组(免 sudo 执行 docker 命令)
sudo usermod -aG docker \(USER newgrp docker
验证 Docker 是否能成功调用 GPU:
Bash
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
如果能正常打印出 RTX 3060 的显存和驱动信息,说明 GPU 穿透已配置成功!
(. /etc/os-release;echo \(ID\)VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker🔥 踩坑提示(NVIDIA 驱动报错):
如果报错
Bashcould not select device driver,说明系统缺少 NVIDIA Container Toolkit,请执行以下命令补全:distribution=\)
2.4 Python 虚拟环境准备
为了保持全局环境干净,我们为项目单独创建虚拟环境:
Bash
mkdir -p ~/projects/LiteRAG cd ~/projects/LiteRAG python3 -m venv venv source venv/bin/activate
在国内网络环境下,直接从 Docker Hub 拉取动辄几个 G 的大模型或数据库镜像非常容易超时。我们需要配置国内的镜像加速器。
编辑 Docker 配置文件:
Bash
sudo nano /etc/docker/daemon.json
写入以下内容(以下为目前相对稳定的镜像源,如果失效可自行在 GitHub 寻找最新源):
JSON
{ “registry-mirrors”: [
"https://docker.xuanyuan.me", "https://docker.1ms.run", "https://docker.m.daocloud.io"
] }
重启 Docker 使配置生效:
Bash
sudo systemctl restart docker
Milvus 是目前工业界最成熟的开源向量数据库之一,支持分布式、多种索引类型和高并发混合检索。
4.1 使用官方 docker-compose 部署
为了避免手动处理 etcd 和 MinIO 这些底层依赖,我们直接使用官方提供的单机版 docker-compose.yml。
Bash
cd ~/projects/LiteRAG
下载官方 docker-compose.yml(以 v2.4.23 为例)
wget https://github.com/milvus-io/milvus/releases/download/v2.4.23/milvus-standalone-docker-compose.yml -O docker-compose.yml
🔥 踩坑提示(镜像标签):
某些老教程会让你使用
milvusdb/milvus:v2.4.0-cpu这类标签。注意,官方镜像现在的正确标签格式是不带-cpu后缀的,带后缀会直接报manifest not found错误。
4.2 启动服务
Bash
docker compose up -d
首次启动会拉取三个核心镜像:
milvusdb/milvus:v2.4.23(主服务,约 1.2GB)quay.io/coreos/etcd:v3.5.18(元数据存储,约几十MB)minio/minio:RELEASE…(对象存储,约 200MB)
耐心等待下载完成,容器会自动启动。
4.3 验证服务状态
运行命令查看容器状态:
Bash
docker compose ps
如果三个组件的 STATUS 列都显示 Up (healthy),则说明部署成功。
4.4 使用 Python 客户端验证连接
不仅容器要跑起来,代码能连上才是真理。安装 Milvus 的 Python SDK:
Bash
pip install pymilvus
进入 Python 交互环境(终端输入 python)进行连通性测试:
Python
from pymilvus import connections, utility
连接本地 Milvus 默认端口
connections.connect(host=‘localhost’, port=‘19530’)
print(f”✅ 连接成功!Milvus 版本: “) print(f”📦 当前所有的集合: {utility.list_collections()}“)
预期输出:
Plaintext
✅ 连接成功!Milvus 版本: v2.4.23 📦 当前所有的集合: []
💡 避坑提示(健康检查端点):
网上很多老旧教程教大家用
curl localhost:19530/health来验证 Milvus 状态,但在 Milvus 2.4.x 版本中,该端点已经变更,强行请求会返回 404。最可靠的验证方式就是直接用 Python 客户端连一下,或者查看 Docker 的(healthy)标识。
为了后续开发的规范性,我们在这里提前把工程目录的骨架搭好。一个好的目录结构是项目成功的一半。
预期目录树概览:
Plaintext
LiteRAG/ ├── app/ │ ├── api/v1/endpoints/ # 路由控制器 (Chat, Admin等) │ ├── core/ # 核心业务逻辑 (LLM, RAG组件等) │ ├── models/ # 数据库 ORM 模型 │ └── schemas/ # Pydantic 数据验证体 ├── scripts/ # 独立执行脚本 (数据注入、评测等) ├── monitoring/ # 监控配置 (Grafana Dashboards等) ├── tests/ # 单元测试 ├── docs/ # 项目文档 ├── docker-compose.yml # 刚刚下载的 Milvus 编排文件 └── requirements.txt # 依赖清单
一键创建脚本:
在终端中执行以下命令,快速生成上述目录与空文件:
Bash
# 创建文件夹 mkdir -p app/{api/v1/endpoints,core/retrieval,models,schemas} mkdir -p scripts tests monitoring/grafana_dashboards docs reports
创建核心 Python 文件
touch app/{init.py,main.py,config.py} touch app/api/{init.py,deps.py} touch app/api/v1/{init.py} touch app/api/v1/endpoints/{init.py,chat.py,admin.py} touch app/core/{init.py,embedding.py,reranker.py,llm.py,splitter.py} touch app/core/retrieval/{init.py,milvus_client.py,hybrid_search.py,redis_cache.py} touch app/schemas/{init.py,chat.py,admin.py} touch scripts/{ingest.py,benchmark.py,cold_hot_demo.py}
创建项目配置文件
touch .env.example .gitignore requirements.txt README.md LICENSE
到此为止,我们已经完成了项目的基础环境搭建和向量数据库的成功部署,算是为万里长征迈出了坚实的第一步。
在下一篇文章中,我将记录以下内容的实战过程:
- 整合 Redis 与监控组件:部署 Redis 缓存池,并引入 Prometheus + Grafana 建立初步的监控面板。
- Embedding 模型的接入:下载并配置本地化的 BGE 模型。
- 数据入库实战:编写文档解析脚本,将切分后的文本向量化并灌入 Milvus 数据库中。
完整的项目代码后续我会同步更新到 GitHub,欢迎关注和 Star。
本文是【从0到1搭建企业级RAG系统】系列的第一篇,后续文章将陆续更新。如果有任何工程落地上的问题或建议,欢迎在评论区交流碰撞!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/268719.html