RAG流水线部署指南:从本地原型到生产环境
RAG原型在笔记本上跑通了。但部署到生产环境面临延迟、扩展、文档更新和监控的挑战。
💡 你将学到
RAG原型在笔记本上跑通了。但部署到生产环境面临延迟、扩展、文档更新和监控的挑战。
📜 目录
RAG 流水线部署指南:从本地原型到向量数据库生产环境
RAG(检索增强生成)是将 LLM 与自有数据结合的最流行模式。以下是完整的部署指南。
架构概览
用户查询 → 嵌入模型 → 向量搜索 → 上下文检索 → 提示词组装 → LLM 生成 → 最终响应
第一步:选择你的向量数据库
| 数据库 | GitHub Stars | 模式 | 最佳适用场景 |
|---|---|---|---|
| ChromaDB | 18K | 嵌入式/本地 | 原型开发、小型文档 |
| Qdrant | 25K | 客户端-服务器 | 生产环境、中等规模 |
| Weaviate | 14K | 客户端-服务器 | 混合搜索 |
| Milvus | 33K | 分布式 | 企业级、大规模 |
建议:从 ChromaDB 开始,生产环境迁移到 Qdrant。
第二步:使用 ChromaDB 搭建本地原型
import chromadb
from chromadb.utils import embedding_functions
client = chromadb.Client()
collection = client.create_collection(
name="my_docs",
embedding_function=embedding_functions.SentenceTransformerEmbeddingFunction(
model_name="all-MiniLM-L6-v2"
)
)
collection.add(documents=["你的文档内容..."], ids=["doc1"])
results = collection.query(query_texts=["你的问题"], n_results=3)
第三步:使用 Qdrant 进行生产部署
from qdrant_client import QdrantClient
from qdrant_client.models import VectorParams, Distance
client = QdrantClient(host="localhost", port=6333)
client.create_collection(
collection_name="production_docs",
vectors_config=VectorParams(size=384, distance=Distance.COSINE)
)
第四步:生产环境 Docker Compose 配置
services:
qdrant:
image: qdrant/qdrant:latest
ports: ["6333:6333"]
llm-service:
image: vllm/vllm-openai:latest
command: --model Qwen/Qwen2.5-7B-Instruct
ports: ["8000:8000"]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
性能基准测试
| 组件 | 本地(CPU) | 生产环境(GPU) | 提升幅度 |
|---|---|---|---|
| 嵌入 | 200ms/文档 | 15ms/文档 | 13倍 |
| 向量搜索 | 50ms | 5ms | 10倍 |
| LLM 生成 | 15s | 2s | 7.5倍 |
监控检查清单
- 嵌入延迟 — 超过 100ms 时告警
- 向量搜索召回率 — 每月使用黄金查询集测试
- LLM 响应时间 — 超过 5s 时告警
- 用户反馈 — 每个回答提供点赞/点踩
常见问题
问:向量数据库多久更新一次? 答:动态数据实时更新,静态文档每晚批量更新。
问:最佳嵌入模型是什么? 答:BGE-small-en-v1.5(追求速度)或 BGE-base-en-v1.5(追求质量)。
问:如何处理大型文档? 答:将文档切分为 512 token 的片段,重叠 50 token。
相关文章
❓ 常见问题
How often to update vector DB?
Real-time for dynamic data, batch nightly for static docs.
Best embedding model?
BGE-small-en-v1.5 (speed) or BGE-base-en-v1.5 (quality).
How to handle large documents?
Chunk into 512-token segments with 50-token overlap.
相关文章
2026-08-01
PGVector教程:30分钟给PostgreSQL加AI搜索
2026-08-02
FastAPI for LLM 2026:一个下午搭好生产级AI后端
2026-07-17
AI Agent用户意图识别:先搞清楚用户想干嘛
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
