一、前置条件检查
-
版本兼容性
RAGFlow版本 Milvus版本 Python SDK版本 ≥v1.2.0 2.4.x pymilvus≥2.4.0 ≥v1.3.5 2.5.x pymilvus≥2.5.1 -
网络连通性测试
# 在 RAGFlow 容器内执行 docker exec -it ragflow_container bash curl -v telnet://milvus-host:19530 nc -zv milvus-host 19530
二、配置变更全流程
-
修改 docker-compose.yaml
services: ragflow: environment: + VECTOR_DB_TYPE: "milvus" + MILVUS_HOST: "milvus-prod" + MILVUS_PORT: "19530" + MILVUS_USER: "admin" + MILVUS_PASSWORD: "SecureP@ss123!" depends_on: + - milvus + milvus: + image: milvusdb/milvus:v2.5.3 + ports: + - "19530:19530" + volumes: + - milvus_data:/var/lib/milvus + - milvus_conf:/etc/milvus
-
创建 Milvus 专用账户
docker exec -it milvus-prod bash milvus-cli --user root --password milvusroot CREATE USER 'admin' IDENTIFIED BY 'SecureP@ss123!'; GRANT ALL ON *.* TO admin;
三、向量库迁移实操
-
从 Chroma 导出数据
from chromadb.api import ClientAPI client = ClientAPI() collections = client.list_collections() for col in collections: data = col.get(include=["embeddings", "metadatas"]) with open(f"/backup/{col.name}.json", "w") as f: json.dump(data, f)
-
向 Milvus 导入数据
from pymilvus import utility, Collection collection = Collection("rag_docs") for file in os.listdir("/backup"): with open(file) as f: data = json.load(f) entities = [ { "id": hash(item["metadata"]["source"]), "text": item["document"], "vector": item["embedding"], "source": item["metadata"]["source"] } for item in data ] collection.insert(entities) utility.wait_for_loading_complete("rag_docs")
四、检索适配层改造
-
修改检索器实现
# 原 Chroma 实现 from chromadb import QueryResult class ChromaRetriever: def search(self, query): return self.collection.query(query_texts=[query]) # 改为 Milvus 实现 from pymilvus import SearchRequest, AnnsField class MilvusRetriever: def __init__(self): self.collection = Collection("rag_docs") def search(self, query, top_k=5): req = SearchRequest( data=[self._encode(query)], anns_field=AnnsField("vector"), param={"metric_type": "IP", "params": {"nprobe": 32}}, limit=top_k ) return self.collection.search(req)
-
混合检索增强
def hybrid_search(query): # 向量检索 vector_results = milvus_retriever.search(query) # 关键词检索 keyword_results = self._keyword_search(query) # 结果融合 (Weighted Reciprocal Rank Fusion) fused = [] for res in [vector_results, keyword_results]: for i, item in enumerate(res): score = item.score * (1 / (i + 1)) fused.append((item.id, score)) return sorted(fused, key=lambda x: -x[1])[:10]
五、性能优化配置
-
索引参数优化
index_params = { "index_type": "GPU_IVF_PQ", "params": { "nlist": 4096, # 平衡查询速度和内存 "m": 32, # PQ 子量化器数量 "nbits": 8 # 每个向量的存储位数 }, "metric_type": "IP" }
-
缓存策略
# milvus.yaml 配置 cache: cache_size: 16GB # 分配内存缓存 insert_buffer_size: 2GB # 写入缓冲区 preload_collection: rag_docs # 启动时预加载
六、验证与监控
-
集成验证脚本
# 测试向量插入 python -c "from pymilvus import Collection; c=Collection('rag_docs'); print(c.num_entities)" # 测试检索时延 ab -n 1000 -c 10 -p query.json http://ragflow:9380/api/search
-
监控看板配置
# Prometheus 配置 - job_name: 'milvus' static_configs: - targets: ['milvus-prod:9090'] # Grafana 导入看板 Dashboard ID: 13613 # 官方监控模板
故障排查指南:
- 连接失败 → 检查防火墙规则和SELinux状态
- 检索超时 → 增加
search.params.nprobe
值 - 内存不足 → 启用
GPU_IVF_PQ
索引减少内存占用 - 数据不一致 → 使用
utility.flush(['rag_docs'])
强制同步
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。