【向量Milvus】---- Docker部署Milvus向量数据库 保姆级教程
文章目录一、前言 二、Milvus是什么 三、应用场景 四、下载安装 环境前提步骤1下载编排文件步骤2启动Milvus服务步骤3查看运行状态步骤4常用运维命令五、实战案例 1. 安装依赖2. Python完整示例代码小结 ✅一、前言 随着**RAG检索增强生成、大模型应用普及传统关系型数据库无法高效处理高维向量相似度检索。Milvus** 作为开源高性能向量数据库广泛用于存储Embedding向量。本文采用**Docker Compose**一键部署单机版Milvus全程命令可直接复制运行最后附带Python向量检索实战案例快速上手向量检索开发。生成向量查询文本相似向量召回业务应用Embedding模型Milvus向量数据库二、Milvus是什么 Milvus是由Zilliz开源、专为向量相似度搜索设计的分布式向量数据库。核心能力存储高维向量支持**L2距离、余弦相似度**等度量方式底层依赖etcd元数据存储、MinIO持久化对象存储部署形态单机Standalone、集群分布式本文使用单机模式适合开发测试Milvus单机架构milvus-standalonemilvus-etcd元数据管理milvus-minio数据持久化客户端/PyMilvus三、应用场景 RAG知识库问答文档向量化存储检索相关片段送入大模型多模态检索以图搜图、音频、视频相似度匹配个性化推荐用户/商品Embedding向量召回相似内容风控异常检测行为特征向量识别异常样本生物信息检索分子、基因高维特征比对四、下载安装 环境前提服务器已安装DockerDocker Compose步骤1下载编排文件新建目录存放配置文件F:\docker-service\milvusmkdirmilvuscdmilvus# 下载官方docker-compose配置 到指定目录 F:\docker-service\milvuswgethttps://github.com/milvus-io/milvus/releases/download/v2.6.20/milvus-standalone-docker-compose.yml-OF:\docker-service\milvus\docker-compose.yml国内下载缓慢可手动浏览器打开链接保存文件步骤2启动Milvus服务# 进入目录cdF:\docker-service\milvusdockercompose up-d启动后自动拉起3个容器milvus-standalone主服务默认端口19530milvus-etcd元数据服务milvus-minio持久化存储步骤3查看运行状态dockercomposeps步骤4常用运维命令# 查看实时日志dockercompose logs-fmilvus-standalone# 停止服务dockercompose down# 停止并清理数据谨慎dockercompose down-v访问地址curl http://127.0.0.1:9091/healthz 客户端通过该地址连接Milvus五、实战案例 使用pymilvus实现连接库→创建集合→插入向量→相似度检索1. 安装依赖#依赖1pipinstallpymilvus#依赖2pipinstallsentence-transformers2. Python完整示例代码importosimporttimefrompymilvusimportMilvusClient,DataType os.environ[HF_ENDPOINT]https://hf-mirror.comdefprint_cost(start,desc:str):costround(time.time()-start,3)print(f✅【{desc}】耗时:{cost}s)returntime.time()if__name____main__:total_starttime.time()step_starttime.time()print(*50)print(1. 开始连接Milvus服务)clientMilvusClient(urihttp://127.0.0.1:19530)step_startprint_cost(step_start,连接Milvus)coll_nameleave_applicationvec_dim384print(\n2. 清理旧集合)ifclient.has_collection(coll_name):client.drop_collection(coll_name)print(等待集合彻底销毁...)wait_times0whileclient.has_collection(coll_name)andwait_times10:time.sleep(0.5)wait_times1print(旧集合删除完毕)step_startprint_cost(step_start,删除旧集合)print(\n3. 使用自定义Schema创建集合 IP索引重点不再用dimension简易模式)# 手动定义结构schemaMilvusClient.create_schema(auto_idFalse,enable_dynamic_fieldTrue)schema.add_field(field_nameid,datatypeDataType.INT64,is_primaryTrue)schema.add_field(field_namevector,datatypeDataType.FLOAT_VECTOR,dimvec_dim)schema.add_field(field_namecontent,datatypeDataType.VARCHAR,max_length1000)# 索引参数IPindex_paramsMilvusClient.prepare_index_params()index_params.add_index(field_namevector,index_typeFLAT,metric_typeIP)client.create_collection(collection_namecoll_name,schemaschema,index_paramsindex_params)step_startprint_cost(step_start,创建集合与索引)# 加载模型fromsentence_transformersimportSentenceTransformerprint(\n4. 加载中文Embedding模型)modelSentenceTransformer(all-MiniLM-L6-v2)step_startprint_cost(step_start,加载SentenceTransformer模型)# 请假数据leave_data_text[{id:1,content:张三申请6月10日请事假1天家中需要处理房屋装修事宜},{id:2,content:李四6月12日申请病假2天感冒发烧需要居家休养附有医院诊断单},{id:3,content:王五申请6月10日休事假回老家办理证件请假时长一天},{id:4,content:赵六6月15日申请年假3天计划外出旅游散心},{id:5,content:孙七6月12日身体不适申请病假一天去医院就诊}]print(\n5. 文本向量化)insert_list[]foriteminleave_data_text:vecmodel.encode(item[content],normalize_embeddingsTrue)insert_list.append({id:item[id],vector:vec,content:item[content]})step_startprint_cost(step_start,全部文本向量化)print(\n6. 插入数据)resclient.insert(collection_namecoll_name,datainsert_list)print(插入结果,res)# 强制落盘保证数据立即可检索Windows Docker必加client.flush(collection_namecoll_name)step_startprint_cost(step_start,插入向量数据flush)defsearch_leave(query_text,top_k3):t0time.time()query_vecmodel.encode(query_text,normalize_embeddingsTrue)resultclient.search(collection_namecoll_name,data[query_vec],limittop_k,metric_typeIP,# 和建索引完全一致output_fields[content])costround(time.time()-t0,3)print(f\n【查询】{query_text}| 查询耗时{cost}s)print(匹配结果)hitsresult[0]ifnothits:print(无匹配记录)returnforhitinhits:print(f相似度:{round(hit[distance],4)}|{hit[entity][content]})# 查询测试search_leave(6月10日谁请了事假)search_leave(哪些员工申请病假)search_leave(谁请假出去旅游)print(\n*50)print(f程序全部执行完毕总耗时{round(time.time()-total_start,3)}s)测试结果F:\docker-service\milvuspy2.py1. 开始连接Milvus服务 ✅【连接Milvus】耗时:0.02s2. 清理旧集合 等待集合彻底销毁... 旧集合删除完毕 ✅【删除旧集合】耗时:1.178s3. 使用自定义Schema创建集合 IP索引重点不再用dimension简易模式 ✅【创建集合与索引】耗时:2.583s4. 加载中文Embedding模型 Loading weights:100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████|103/103[00:0000:00,5866.72it/s]✅【加载SentenceTransformer模型】耗时:12.811s5. 文本向量化 ✅【全部文本向量化】耗时:0.064s6. 插入数据 插入结果{insert_count:5,ids:[1,2,3,4,5]}✅【插入向量数据flush】耗时:2.074s 【查询】6月10日谁请了事假|查询耗时0.022s 匹配结果 相似度:0.773|张三申请6月10日请事假1天家中需要处理房屋装修事宜 相似度:0.7177|孙七6月12日身体不适申请病假一天去医院就诊 相似度:0.6625|王五申请6月10日休事假回老家办理证件请假时长一天 【查询】哪些员工申请病假|查询耗时0.014s 匹配结果 相似度:0.4099|孙七6月12日身体不适申请病假一天去医院就诊 相似度:0.4032|张三申请6月10日请事假1天家中需要处理房屋装修事宜 相似度:0.3717|赵六6月15日申请年假3天计划外出旅游散心 【查询】谁请假出去旅游|查询耗时0.015s 匹配结果 相似度:0.6229|赵六6月15日申请年假3天计划外出旅游散心 相似度:0.4957|张三申请6月10日请事假1天家中需要处理房屋装修事宜 相似度:0.4798|孙七6月12日身体不适申请病假一天去医院就诊程序全部执行完毕总耗时18.782s F:\docker-service\milvus小结 ✅本文完成**Docker Compose**部署Milvus单机版理清基础架构并提供可直接运行的向量检索Demo。开发环境推荐使用本方案生产环境建议采用Milvus集群模式增加资源限制、数据备份与账号鉴权。如果你需要我可以额外补充Attu可视化管理工具的docker-compose部署命令方便图形化管理Milvus。

相关新闻

AI 怎样改变我们的生活和职业?Anthropic 经济指数报告给出的真实数据

AI 怎样改变我们的生活和职业?Anthropic 经济指数报告给出的真实数据

查睡觉建议凌晨 3 点最火、报税截止日前一天咨询量暴涨 8 倍、把任务整包交给 AI 的人反而最乐观……这些不是段子,而是 Anthropic 最新一期《经济指数报告(Cadences)》里的真实发现。 2026 年 6 月 26 日,Anthropic 发布了新一期…

2026/11/9 14:47:09 阅读更多 →
RetinaNet在药盒日期识别中的优化与应用

RetinaNet在药盒日期识别中的优化与应用

1. 项目概述:当药盒遇上RetinaNet 上周整理家庭药箱时,我盯着十几个药盒上模糊的保质期数字发了愁。这种场景想必大家都不陌生——药品过期风险、用药安全隐患往往就藏在这些难以辨认的小字里。这正是我们开发"基于RetinaNet的智能药盒日期识别系统…

2026/11/8 22:08:30 阅读更多 →
2026在线视频图片去水印网站怎么用?不限次数免费无需下载教程

2026在线视频图片去水印网站怎么用?不限次数免费无需下载教程

日常整理个人素材、剪辑自用内容、留存平台优质图文视频时,水印往往会影响画面观感,很多用户都在寻找适配手机、电脑、鸿蒙等多端,无需安装软件、操作简单的免费去水印方案。2026年市面主流去水印工具分为在线网页工具和免安装小程序工具两类…

2026/11/6 9:00:19 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻