Milvus Lite
Milvus (标准版):就像一个部署在专业机房、由多台服务器组成的大型数据中心。它性能强大、稳定可靠、支持高并发,是生产环境的不二之选。部署它,通常需要使用Docker或在Linux服务器上进行。
Milvus Lite (轻量版):就像一台功能强大、开箱即用的个人开发笔记本。它把数据中心的核心功能都集成在了这台“笔记本”里,无需复杂的部署,非常适合学习、开发、原型验证和中小型项目。它可以在你的Windows或macOS上直接运行。
Milvus Lite。它能让你在个人电脑上,以最快速度、最低成本体验到Milvus几乎所有的核心功能。当你完成了学习和开发,准备将应用部署到正式的生产环境时,再将代码无缝迁移到标准版的Milvus服务上即可。
Milvus Lite 直接通过 pip 安装,无需单独下载:
pip install milvus
安装完成后会自带轻量版服务(无需额外启动 Docker)。
验证安装
from milvus import default_server from pymilvus import connections, utility # 启动内置服务(自动运行) default_server.start() # 连接到 Milvus connections.connect(host="127.0.0.1", port=default_server.listen_port) # 检查服务状态 print(utility.get_server_version()) # 应输出版本号如 "2.3.0" # 停止服务(完成操作后调用) default_server.stop()
持久化启动
在conda命令行先运行:
milvus-server --data home\server\milvus_lite
然后在jupyter notebook运行代码,检查milvus是否已经启动 from milvus import default_server from pymilvus import connections, utility
# 连接到 Milvus connections.connect(host="127.0.0.1", port=default_server.listen_port) # 检查服务状态 print(utility.get_server_version()) # 应输出版本号如 "2.3.0"
常见问题
- 端口占用:默认端口为 
19530,可通过default_server.set_port(新端口)调整。 - 数据持久化:Milvus Lite 默认内存存储,重启后数据消失。如需持久化:
 
default_server.init(path="/path/to/storage") # 指定数据目录
Collection、Fields、Schema 的关系:
- 
Collection = 表(包含多个字段)
 - 
Fields = 列定义(每个字段的类型和属性)
 - 
Schema = 表结构(所有字段的集合)
 
collection.search() 方法中的各个参数。是 Milvus 中最核心的搜索方法,参数配置直接影响搜索性能和结果质量。
collection.search( data, # 查询向量 anns_field, # 要搜索的向量字段名 param, # 搜索参数(索引相关) limit, # 返回结果数量 expr=None, # 过滤表达式 output_fields=None, # 返回的字段 partition_names=None, # 分区名称 timeout=None, # 超时时间 round_decimal=-1, # 距离值小数位数 **kwargs # 其他参数 )
# 单个查询向量 query_vector = [0.1, 0.2, 0.3, ..., 0.128] # 128维向量 # 批量查询(多个向量同时搜索) batch_queries = [ [0.1, 0.2, 0.3, ..., 0.128], [0.4, 0.5, 0.6, ..., 0.128], [0.7, 0.8, 0.9, ..., 0.128] ] results = collection.search( data=batch_queries, # 批量搜索3个向量 anns_field="embedding", param=search_params, limit=5 ) # 返回3组结果,每组5个最相似项
expr - 过滤表达式
类型: str
说明: 布尔表达式,用于在向量搜索前过滤数据
# 基本比较 expr = 'age > 25 and gender == "male"' # 字符串操作 expr = 'title like "%python%"' # 数组包含 expr = 'array_contains(tags, "AI")' # JSON字段查询 expr = 'json_contains(metadata, "\"premium\"", "$.type")' # 时间范围 expr = 'created_time > 1700000000 and created_time < 1701000000' # 组合条件 complex_expr = ''' (category == "technology" or category == "science") and rating >= 4.0 and is_published == true and array_contains(tags, "machine_learning") ''' results = collection.search( data=query_vector, anns_field="embedding", param=search_params, limit=5, expr=complex_expr # 先过滤,再搜索 )

                
            
        
浙公网安备 33010602011771号