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  # 先过滤,再搜索
)

 

posted @ 2025-09-18 13:20  wangssd  阅读(66)  评论(0)    收藏  举报