2026年从0开始RAG项目搭建

从0开始RAG项目搭建最近在准备 AI 方向的实习 发现网上关于 RAG 检索增强生成 的项目教程虽然多 但大多是直接调用 API 的简单 Demo 真正从零开始 考虑工程落地并具备生产环境参考价值的完整项目记录 可谓少之又少 拒绝纸上谈兵 我决定自己动手 从环境搭建 数据库选型 检索优化到监控部署 完整地走一遍生产级 RAG 系统 的构建流程 这篇文章是本系列的第一篇 主要记录基础环境准备 和 Milvus

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



最近在准备 AI 方向的实习,发现网上关于 RAG(检索增强生成)的项目教程虽然多,但大多是直接调用 API 的简单 Demo。真正从零开始、考虑工程落地并具备生产环境参考价值的完整项目记录,可谓少之又少。

拒绝纸上谈兵,我决定自己动手。从环境搭建、数据库选型、检索优化到监控部署,完整地走一遍生产级 RAG 系统的构建流程。

这篇文章是本系列的第一篇,主要记录基础环境准备Milvus 向量数据库的部署。我的开发环境是一台 Windows 笔记本,配置为 RTX 3060 Laptop (6GB显存) + WSL2 Ubuntu 22.04。希望这篇记录能帮助到同样在准备项目、巩固知识点的同学。


本项目的目标是构建一个高准确率、高性能、具备工程化能力的企业级 RAG 知识库系统。整体技术栈如下:

层级 组件 作用 编排框架 LangChain 核心 RAG 流程编排与组件粘合 大语言模型 Qwen-2.5 (本地量化版) 最终答案的归纳与生成 Embedding 模型 BGE-M3 / BGE-Small 文本向量化 向量数据库 Milvus 核心向量存储与高维相似度检索 缓存层 Redis 缓存热点查询,降低大模型开销 对象存储 MinIO 原始文档(PDF/Word等)与冷数据存储 Web框架 FastAPI 提供高性能 RESTful API 系统监控 Prometheus + Grafana 系统状态与 API 调用的可观测性 容器化 Docker + Docker Compose 保证环境一致性与一键部署

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.123.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 穿透已配置成功!

🔥 踩坑提示(NVIDIA 驱动报错)

如果报错 could not select device driver,说明系统缺少 NVIDIA Container Toolkit,请执行以下命令补全:

Bash

distribution=\)
(. /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
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 部署

为了避免手动处理 etcdMinIO 这些底层依赖,我们直接使用官方提供的单机版 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


到此为止,我们已经完成了项目的基础环境搭建和向量数据库的成功部署,算是为万里长征迈出了坚实的第一步。

在下一篇文章中,我将记录以下内容的实战过程:

  1. 整合 Redis 与监控组件:部署 Redis 缓存池,并引入 Prometheus + Grafana 建立初步的监控面板。
  2. Embedding 模型的接入:下载并配置本地化的 BGE 模型。
  3. 数据入库实战:编写文档解析脚本,将切分后的文本向量化并灌入 Milvus 数据库中。

完整的项目代码后续我会同步更新到 GitHub,欢迎关注和 Star。


本文是【从0到1搭建企业级RAG系统】系列的第一篇,后续文章将陆续更新。如果有任何工程落地上的问题或建议,欢迎在评论区交流碰撞!

小讯
上一篇 2026-04-17 15:36
下一篇 2026-04-17 15:34

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/268719.html