Milvus

发布时间:2026/8/3 2:36:44

Milvus
概述Milvus是一个云原生向量数据库采用存算分离架构支持向量相似度与标量过滤的混合查询能在毫秒级完成十亿级向量检索并可按需选择强一致或最终一致等多种一致性等级。从业务角度milvus的数据模型层级是Database Collection Partition EntityDatabase数据库隔离不同业务数据Collection核心的逻辑容器类似mysql的tablePartition分区是collection的子集不是必须创建而且一个collection至少有默认partitionEntitycollection中的一条记录类似MySQL的一行数据1.部署和配置milvus部署方式很多支持大规模部署在k8s这里为了学习研究采用docker-compose安装Milvus以2.6.19版本为例docker-compose文件从官方github下载即可GitHub - milvus-io/milvus: Milvus is a high-performance, cloud-native vector database built for scalable vector ANN search · GitHub启动前先修改docker-compose文件启用认证否则就算重置了密码仍然能免密登录找到milvus-standalone新增common.security.authorizationEnabled: true这个是2.6.x版本的做法... ... standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.6.19 ... ... environment: ... ... common.security.authorizationEnabled: true ... ...然后docker compose启动即可启动后有三个容器还监听了不止一个端口[rootrocky102 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 47d071e552f2 milvusdb/milvus:v2.6.19 /tini -- milvus run… 25 minutes ago Up 25 minutes (healthy) 0.0.0.0:9091-9091/tcp, [::]:9091-9091/tcp, 0.0.0.0:19530-19530/tcp, [::]:19530-19530/tcp milvus-standalone a6e864be674d minio/minio:RELEASE.2024-12-18T13-15-44Z /usr/bin/docker-ent… 25 minutes ago Up 25 minutes (healthy) 0.0.0.0:9000-9001-9000-9001/tcp, [::]:9000-9001-9000-9001/tcp milvus-minio c4d5ee2d0bf6 quay.io/coreos/etcd:v3.5.25 etcd -advertise-cli… 25 minutes ago Up 25 minutes (healthy) 2379-2380/tcp milvus-etcd19530端口用于连接数据库9091端口还运行着webui9000-9001的minio也在运行以及etcd的2379为了安全建议除了19530端口外其余端口不要暴露然后修改用户名密码先用默认的用户名root密码Milvus登录进去然后马上修改密码连接milvus可以使用工具AttuGitHub - zilliztech/attu: The Best GUI for Milvus · GitHubattu应该也是使用某些web包壳工具开发而成每次数据库对象变动需要点击View-Reload按钮刷新才能实时展现2.Milvus Python API使用python操作milvus需安装pymilvus模块pip install pymilvus2.1 Database API2.1.1 连接还可通过MilvusClient的db_name参数指定一个库import os from dotenv import load_dotenv from pymilvus import MilvusClient, utility load_dotenv(encodingutf-8) MILVUS_HOST os.getenv(MILVUS_HOST) MILVUS_PORT os.getenv(MILVUS_PORT) MILVUS_KEY os.getenv(MILVUS_KEY) try: client MilvusClient( urifhttp://{MILVUS_HOST}:{MILVUS_PORT}, passwordMILVUS_KEY, userroot ) print(登录成功) except Exception as e: print(f{e})2.1.2 获取数据库dbs client.list_databases() for db in dbs: print(db)2.1.3 建库和删库创建dbs client.list_databases() name rag_demo if name not in dbs: client.create_database(name)删除如果下面有collection则无法删除需要先删除collectiondbs client.list_databases() name rag_demo if name in dbs: client.drop_database(db_namename)切换数据库name rag_demo client.use_database(name)2.2 Collection API2.2.1 获取Collectionuse_database执行后后续都默认在rag_demo下操作name rag_demo client.use_database(name) cols client.list_collections() print(cols)2.2.2 创建collection创建collection指定向量维度1024个采用余弦相似度name t_doc client.create_collection( collection_namename, dimension1024, metric_typeCOSINE )除此外还能设置auto_idTrue是否自增enable_dynamic_fieldFalse是否启用动态字段Collections 中的动态字段是一个保留的 JavaScript Object Notation (JSON) 字段名为$meta。启用该字段后Milvus 会将每个实体中携带的所有非 Schema 定义字段及其值作为键值对保存在保留字段中。2.2.3 删除collectionname t_doc client.drop_collection(collection_namename)2.2.4 描述信息元信息描述name t_doc metadata client.describe_collection(collection_namename) print(metadata){ collection_name: t_doc, auto_id: False, num_shards: 1, description: , fields: [ { field_id: 100, name: id, description: , type: DataType.INT64: 5, params: {}, is_primary: True }, { field_id: 101, name: vector, description: , type: DataType.FLOAT_VECTOR: 101, params: {dim: 1024} } ], functions: [], aliases: [], collection_id: 468082018063159696, consistency_level: 2, consistency_level_name: Bounded, properties: {timezone: UTC}, num_partitions: 1, enable_dynamic_field: True, enable_namespace: False, schema_version: 0, created_timestamp: 468092261983584273, update_timestamp: 468092261983584273 }2.2.5 判断存在name t_doc bmetadata client.has_collection(collection_namename) print(b)2.3 DML API关于数据的编辑2.3.1 添加数据通过维度同是1024的嵌入模型qwen3.7-text-embedding将一组文本转换为向量连同内容一起插入到milvus中并flush()落盘from dotenv import load_dotenv from openai import OpenAI import os from pymilvus import MilvusClient, utility load_dotenv(encodingutf-8) MILVUS_HOST os.getenv(MILVUS_HOST) MILVUS_PORT os.getenv(MILVUS_PORT) MILVUS_KEY os.getenv(MILVUS_KEY) client OpenAI( api_keyos.getenv(QWEN_KEY), base_urlhttps://llm-aryq90lbx0u4xri7.cn-beijing.maas.aliyuncs.com/compatible-mode/v1, ) texts [ 中国河北发生滦河第一号洪水, 菲律宾和中国就南海问题进行交涉, 武大靖被韩国人在ins上谩骂, 日本政府决定将核污染水进行排海, 中华人民共和国全运会在天津开幕, 在中国的调节下沙特和伊朗和解, 谷爱凌在2022北京冬奥会上获得滑雪冠军, 缅甸曼德勒发生8.0级地震, 无法忍受北约东扩俄罗斯进攻乌克兰, 湘潭大学周立人因投毒被判处死刑, 全红婵在东京奥运会获得跳水金牌 ] try: res client.embeddings.create( modelqwen3.7-text-embedding, inputtexts, ) data [ { id: i, vector: res.data[i].embedding, text: texts[i], source: demo } for i in range(len(texts)) ] client MilvusClient( urifhttp://{MILVUS_HOST}:{MILVUS_PORT}, passwordMILVUS_KEY, userroot, db_namerag_demo ) insert_res client.upsert( collection_namet_doc, datadata, ) print(insert result : , insert_res) client.flush(collection_namet_doc) except Exception as e: print(f{e})insert result : {upsert_count: 11, ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}2.3.2 状态name t_doc stats client.get_collection_stats(collection_namename) print(stats) #{row_count: 11}2.4 DQL API关于数据查询2.4.1 查询全部name t_doc iterator client.query_iterator( collection_namename, filter, output_fields[*] ) while True: rows iterator.next() if not rows: break for row in rows: print(fid : {row[id]},vector {row[vector][:5]}......,text {row[text]},source {row[source]}) iterator.close()id : 0,vector [0.023675184696912766, -0.005329845007508993, -0.010327795520424843, -0.007353754714131355, 0.03331966698169708]......,text 中国河北发生滦河第一号洪水,source demo id : 1,vector [0.03367263078689575, 0.0308539941906929, 0.0456014983355999, -0.05586938560009003, -0.04142387956380844]......,text 菲律宾和中国就南海问题进行交涉,source demo id : 2,vector [0.022217441350221634, 0.08715223520994186, 0.03312373906373978, 0.0017420633230358362, 0.014378155581653118]......,text 武大靖被韩国人在ins上谩骂,source demo id : 3,vector [0.026949338614940643, -0.025609316304326057, -0.011805844493210316, -0.06710037589073181, -0.01656416431069374]......,text 日本政府决定将核污染水进行排海,source demo id : 4,vector [0.023202229291200638, 0.03087700717151165, -0.040330708026885986, 9.698700159788132e-05, -0.03369786962866783]......,text 中华人民共和国全运会在天津开幕,source demo id : 5,vector [0.030343549326062202, 0.1002483069896698, -0.03368183597922325, -0.02625788189470768, -0.028873704373836517]......,text 在中国的调节下沙特和伊朗和解,source demo id : 6,vector [0.017193175852298737, 0.05799376219511032, -0.049061913043260574, 0.0675581768155098, -0.012638692744076252]......,text 谷爱凌在2022北京冬奥会上获得滑雪冠军,source demo id : 7,vector [0.03244605287909508, 0.015612950548529625, 0.04743647575378418, 0.00950597133487463, 0.023170415312051773]......,text 缅甸曼德勒发生8.0级地震,source demo id : 8,vector [0.02195076085627079, 0.07907696813344955, 0.034633148461580276, 0.00758601538836956, 0.020570363849401474]......,text 无法忍受北约东扩俄罗斯进攻乌克兰,source demo id : 9,vector [0.0225443746894598, -0.00823928415775299, -0.012978585436940193, -0.0132401492446661, 0.0005052244523540139]......,text 湘潭大学周立人因投毒被判处死刑,source demo id : 10,vector [0.023601844906806946, 0.0007014941074885428, 0.0010958664352074265, 0.06690911948680878, 0.03573780879378319]......,text 全红婵在东京奥运会获得跳水金牌,source demo2.4.2 根据IDname t_doc res client.get( collection_namename, ids[0,1] ) for i in range(len(res)): print(fid : {res[i][id]},vector {res[i][vector][:5]},text {res[i][text]},source {res[i][source]})2.4.3 相似度检索将待查关键字通过嵌入模型转化为向量传给milvus进行检索取出最匹配的前6个并指定返回字段:[text, source, id]from dotenv import load_dotenv from openai import OpenAI import os from pymilvus import MilvusClient, utility load_dotenv(encodingutf-8) MILVUS_HOST os.getenv(MILVUS_HOST) MILVUS_PORT os.getenv(MILVUS_PORT) MILVUS_KEY os.getenv(MILVUS_KEY) client OpenAI( api_keyos.getenv(QWEN_KEY), base_urlhttps://llm-aryq90lbx0u4xri7.cn-beijing.maas.aliyuncs.com/compatible-mode/v1, ) try: res client.embeddings.create( modelqwen3.7-text-embedding, input[体育赛事], ) vector res.data[0].embedding client MilvusClient( urifhttp://{MILVUS_HOST}:{MILVUS_PORT}, passwordMILVUS_KEY, userroot, db_namerag_demo ) results client.search( collection_namet_doc, data[vector], limit6, output_fields[text, source, id] ) for res in results[0]: print(res) except Exception as e: print(e){id: 4, distance: 0.4277065396308899, entity: {id: 4, text: 中华人民共和国全运会在天津开幕, source: demo}} {id: 2, distance: 0.2563920021057129, entity: {id: 2, text: 武大靖被韩国人在ins上谩骂, source: demo}} {id: 6, distance: 0.2262747436761856, entity: {id: 6, text: 谷爱凌在2022北京冬奥会上获得滑雪冠军, source: demo}} {id: 0, distance: 0.22332191467285156, entity: {id: 0, text: 中国河北发生滦河第一号洪水, source: demo}} {id: 5, distance: 0.18999835848808289, entity: {id: 5, text: 在中国的调节下沙特和伊朗和解, source: demo}} {id: 7, distance: 0.17732326686382294, entity: {id: 7, text: 缅甸曼德勒发生8.0级地震, source: demo}}

相关新闻

Unity模型导入变黑?FBX材质与渲染管线兼容性全解析

Unity模型导入变黑?FBX材质与渲染管线兼容性全解析

2026/8/3 2:36:44

1. 项目概述:当模型在Unity中“隐身”时 如果你也曾在Unity中满怀期待地导入一个精心制作的FBX模型,结果却发现它变成了一团漆黑、毫无细节的“煤球”,那么恭喜你,你遇到了3D美术与游戏引擎协作中最经典、也最令人头疼的“模型导入…

Android网络请求生命周期管理:LiveData与Retrofit请求取消的三种方案

Android网络请求生命周期管理:LiveData与Retrofit请求取消的三种方案

2026/8/3 2:36:44

1. 项目缘起:一个被忽视的“内存泄漏”问题那天下午,测试同事拿着手机跑过来,指着屏幕上那个加载了快一分钟还没刷出数据的列表页问我:“这个页面是不是有内存泄漏?我反复进出几次,感觉手机越来越卡&#x…

聚宽、米筐、优矿和掘金量化迁移实验:先保存六类元数据

聚宽、米筐、优矿和掘金量化迁移实验:先保存六类元数据

2026/8/3 2:36:44

聚宽、米筐、优矿和掘金量化之间迁移研究实验,代码能运行只完成了一半;数据日期、复权、成本、交易日历和平台环境少一项,回测就失去可比性。迅投QMT与恒生PTrade接近券商侧任务后,还会增加账户权限和订单状态。牛股王股票更适合普…

SpringBoot+Vue选课系统架构设计与性能优化

SpringBoot+Vue选课系统架构设计与性能优化

2026/8/3 6:06:53

1. 项目概述:前后端分离选课系统的技术架构这个学生选课系统采用了典型的前后端分离架构,后端使用SpringBoot框架提供RESTful API接口,前端通过Vue.js构建用户界面,数据持久层采用MyBatis操作MySQL数据库。这种架构模式在当前企业…

Scratch一级考试真题解析与备考策略

Scratch一级考试真题解析与备考策略

2026/8/3 6:06:53

1. Scratch一级考试概述与备考价值Scratch作为全球最受欢迎的少儿编程入门工具,其等级考试已成为衡量孩子计算思维能力的权威标准。2025年12月电子学会发布的Scratch一级真题,延续了"基础操作逻辑思维"的双重考查特点,特别适合8-12…

AAAI-26,用于扩散模型噪声优化的双种子进化算法

AAAI-26,用于扩散模型噪声优化的双种子进化算法

2026/8/3 6:06:53

目录1.摘要2.研究背景与相关工作3.扩散采样与条件引导基础3.双种子协同全局搜索4.基于引导反演的局部变异5.结果分析6.参考文献7.算法辅导应用定制读者交流1.摘要 扩散模型已成为条件生成,尤其是文本到图像(T2I)主流方法,但其输出…

OSPF协议:智能路由选择与动态路径优化

OSPF协议:智能路由选择与动态路径优化

2026/8/3 6:06:53

1. OSPF协议为何被称为"会思考"的路由协议?在网络工程师的日常工作中,OSPF(Open Shortest Path First)协议常常被戏称为"会思考"的路由协议。这个说法并非空穴来风,而是源于OSPF协议独特的运行机制…

Mtools桌面工具箱实战指南:一站式解决图片音视频处理与格式转换

Mtools桌面工具箱实战指南:一站式解决图片音视频处理与格式转换

2026/8/3 6:06:53

在日常开发或内容创作中,我们常常会遇到一些零散但高频的需求:快速裁剪一张图片、转换一段音频格式、为视频去除水印、提取语音中的文字……这些任务虽然不大,但若没有趁手的工具,要么需要辗转多个软件,要么得写脚本处…

UiPath定时任务全攻略:从Windows计划任务到Orchestrator专业调度

UiPath定时任务全攻略:从Windows计划任务到Orchestrator专业调度

2026/8/3 5:56:53

1. 从“手动触发”到“无人值守”:为什么我们需要定时任务在自动化流程开发的日常里,我们常常会陷入一个循环:开发、测试、本地运行、验证结果。一个流程跑通了,成就感满满,但很快就会发现,很多业务流程本身…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/3 4:49:52

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/2 0:04:43

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/2 0:04:43

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

从提示词小白到AI内容架构师(20年技术老兵的6阶能力跃迁图谱,仅剩最后87个免费解读名额)

从提示词小白到AI内容架构师(20年技术老兵的6阶能力跃迁图谱,仅剩最后87个免费解读名额)

2026/8/3 0:06:20

更多请点击: https://codechina.net 第一章:AI写作能力跃迁的认知革命 过去五年,AI写作已从“模板填充”迈入“语义共建”阶段——模型不再仅复述训练数据中的句式,而是基于跨文档推理、意图锚定与风格自适应,动态构建…

AU-48八米拾音的信噪比衰减与降噪门限耦合分析

AU-48八米拾音的信噪比衰减与降噪门限耦合分析

2026/8/3 0:06:20

一、"拾音 8 米"这个指标该怎么读AU-48 的规格里,麦克风拾取范围写的是 10cm-800cm,配合 T1/T2 参数切换可选四档:中距离 0.5-2m、近距离 0.1-0.2m、远距离 0.5-5m、超远距离 0.5-8m。"能拾音 8 米"这句话本身没错&#…

LangChain 从 Demo 到团队落地,真正卡壳的是哪一步?

LangChain 从 Demo 到团队落地,真正卡壳的是哪一步?

2026/8/3 0:06:20

聊《LangChain并不难,难的是知道什么时候不该用》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。 摘要 摘要:很多人学 LangChain 都是从调个 API 开始,跑通一个 Demo 觉得挺简单…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/2 17:06:42

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/2 5:08:03

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/3 2:41:27

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…