
目录前置知识1. 环境准备2. Python 连接代码一表结构操作建表/改表/删表1. 新建表创建集合2. 修改表添加字段3. 删除表删除集合二数据增删改操作1. 新增数据插入2. 修改数据更新3. 删除数据三数据查询核心向量查询1. 基础向量查询找最相似的数据2. 高级查询向量 WHERE 条件混合搜索四索引优化加速查询终极总结前置知识MySQL 表 → Milvus 集合(Collection)操作方式Python 代码开发用 SQL 语句手工/工具用SQL 执行工具AttuMilvus 官方可视化工具类似 NavicatMySQL 的概念Milvus 对应概念解释数据库服务localhost:3306Milvus 服务localhost:19530都是数据库连接地址表table集合Collection存数据的容器就是一张表列 / 字段id/title/content字段Field表里的列完全一样行数据实体Entity一行数据普通数字 / 文本字段标量字段存标题、内容、分类无MySQL 不支持向量字段唯一新东西存 AI 生成的数字数组WHERE 条件过滤过滤表达式筛选数据用法一样ORDER BY 排序相似度排序按向量相似程度排序LIMIT 分页LIMIT 取前 N 条拿最相似的几条数据1. 环境准备# 启动Milvusdockerrun-d--namemilvus-p19530:19530 milvusdb/milvus:latest# 安装Python依赖pipinstallpymilvus2. Python 连接代码frompymilvusimportMilvusClient,DataType clientMilvusClient(urihttp://localhost:19530,tokenroot:Milvus)一表结构操作建表/改表/删表1. 新建表创建集合Python 代码# 创建文章表 articleclient.create_collection(collection_namearticle,schema[{name:id,dtype:DataType.INT64,is_primary:True},{name:title,dtype:DataType.VARCHAR,max_length:255},{name:content,dtype:DataType.VARCHAR,max_length:1000},{name:content_vector,dtype:DataType.FLOAT_VECTOR,dim:1536}])SQL 写法和MySQL几乎一样-- Milvus SQL 建表CREATECOLLECTION article(idINTPRIMARYKEY,titleVARCHAR(255),contentVARCHAR(1000),content_vector FLOAT_VECTOR DIM1536);2. 修改表添加字段Python 代码# 给表添加一个分类字段 categoryclient.add_field(collection_namearticle,field{name:category,dtype:DataType.VARCHAR,max_length:50})SQL 写法-- MySQL: ALTER TABLE ADD COLUMN-- Milvus: ALTER COLLECTION ADD FIELDALTERCOLLECTION articleADDFIELD categoryVARCHAR(50);3. 删除表删除集合Python 代码# 删除整张表client.drop_collection(collection_namearticle)SQL 写法-- 和 MySQL DROP TABLE 完全一致DROPCOLLECTION article;二数据增删改操作1. 新增数据插入注意向量content_vector字段是 AI 生成的这里先用模拟向量测试Python 代码data[{id:1,title:猫咪介绍,content:猫会抓老鼠,content_vector:[0.1]*1536,category:宠物}]client.insert(collection_namearticle,datadata)SQL 写法和MySQL 100%相同INSERTINTOarticle(id,title,content,content_vector,category)VALUES(1,猫咪介绍,猫会抓老鼠,[0.1]*1536,宠物);2. 修改数据更新Python 代码# 根据id修改标题client.update(collection_namearticle,data{title:小猫介绍},ids[1])SQL 写法和MySQL 100%相同UPDATEarticleSETtitle小猫介绍WHEREid1;3. 删除数据Python 代码# 根据id删除数据client.delete(collection_namearticle,ids[1])SQL 写法和MySQL 100%相同DELETEFROMarticleWHEREid1;三数据查询核心向量查询1. 基础向量查询找最相似的数据Python 代码场景用户问什么小动物会抓老鼠把这句话转成向量AI 生成在表里找向量最相似的数据语义搜索MySQL 做不到代码# 4. 向量搜索对标 MySQL SELECT * FROM article ORDER BY 相似度 LIMIT 3# 第一步用户问题 → 生成查询向量AI生成这里用测试向量query_vector[0.11,0.22,0.33,...]# 第二步执行搜索核心代码resclient.search(collection_namearticle,# 表名data[query_vector],# 查询向量limit3,# 取前3条对标 LIMIT 3output_fields[id,title,content],# 要查的字段anns_fieldcontent_vector# 用哪个向量字段搜索)# 打印结果print(res)结果你会得到猫咪介绍 排在第一个因为语义最匹配SQL 写法SELECTid,title,content,distanceFROMarticleORDERBYANN(content_vector,[0.11, 0.22, 0.33, ...])LIMIT3;2. 高级查询向量 WHERE 条件混合搜索Python 代码# 先过滤分类宠物再向量搜索resclient.search(collection_namearticle,data[query_vec],anns_fieldcontent_vector,output_fields[id,title,content],filtercategory 宠物,limit3)SQL 写法和MySQL WHERE 完全一致SELECTid,title,content,distanceFROMarticleWHEREcategory宠物ORDERBYANN(content_vector,[0.1]*1536)LIMIT3;四索引优化加速查询Python 代码client.create_index(collection_namearticle,field_namecontent_vector)SQL 写法CREATEINDEXidx_content_vectorONarticle(content_vector);终极总结Milvus 有完整 SQL也可以使用 Python操作Milvus SQL 语法和 MySQL 95% 通用仅建表用CREATE COLLECTION唯一新功能ORDER BY ANN(向量字段, 查询向量)做语义搜索