新手如何使用 Milvus

发布于:2025-03-23 ⋅ 阅读:(32) ⋅ 点赞:(0)

新手如何使用 Milvus:详细指南

一、Milvus 简介

Milvus 是高性能、高度可扩展的开源向量数据库,支持 TB 级向量的增删改和近实时查询。它集成了多个向量索引库,具有数据分区分片、持久化等功能,应用场景广泛。
官网:官网链接
文档:官方文档
仓库:GITHUB

主要特点

  • 集成了 Faiss、NMSLIB、Annoy 等广泛应用的向量索引库。
  • 支持数据分区分片、数据持久化、增量数据摄取、标量向量混合查询、time travel 等功能。
  • 大幅优化了向量检索的性能,可满足任何向量检索场景的应用需求。
  • 提供了一整套简单直观的 API,可针对不同场景选择不同的索引类型,还能对标量数据进行过滤,提高召回率和搜索灵活性。

应用领域

应用领域 描述
图像相似性搜索 使图像可搜索,并即时返回来自大型数据库中最相似的图像。
视频相似性搜索 通过将关键帧转换为向量,然后将结果输入 Milvus,可以在几乎实时的时间内搜索和推荐数十亿个视频。
音频相似性搜索 快速查询大量音频数据,如语音、音乐、音效和表面相似的声音。
分子相似性搜索 针对指定分子进行极快的相似性搜索、子结构搜索或超结构搜索。
推荐系统 根据用户行为和需求推荐信息或产品。
问答系统 交互式数字问答聊天机器人,自动回答用户的问题。
DNA 序列分类 通过比较相似的 DNA 序列,在毫秒级别准确地分类一个基因。
文本搜索引擎 通过将关键字与文本数据库进行比较,帮助用户找到他们正在寻找的信息。

二、安装 Milvus

目前 Milvus 运行的环境都是在 Docker 上,因此在安装 Milvus 之前,需要先确认 Docker 和 Docker Compose 已经安装到本地机子上。

安装 Docker Compose

如果本地机子没有安装 Docker Compose,可以按以下命令安装:

# 这个命令必须保证自己的机子已经安装了docker和python3.8+
pip install docker-compose

注意:默认情况下,如果安装的 Docker 是 Docker Desktop,默认会顺便已经安装了 Docker Compose,则不需要再继续安装,否则会报错,这时候需要卸载掉 Python 安装的。

基于 Docker Compose 安装 Milvus 服务端

  1. 下载 Milvus 镜像服务配置文件:
    https://github.com/milvus-io/milvus/releases/download/v2.4.12/milvus-standalone-docker-compose.yml
  2. 下载完成以后,执行如下命令即可启动 Milvus 数据库:
docker-compose -f milvus-standalone-docker-compose.yml up -d
  1. 关闭数据库服务镜像,命令如下:
docker-compose -f milvus-standalone-docker-compose.yml down
  1. 如果使用 Docker 无法拉取镜像,执行上面安装命令一直报网络错误,则可能是因为 Docker 封锁了国内 IP 的问题导致的,解决方法是在 Docker 配置文件中添加国内镜像源:
{
   
  "builder": {
   
    "gc": {
   
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  // 以下就是新增的国内镜像源
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://hub.rat.dev",
    "https://docker.1panel.live"
  ]
}

安装 attu - 可视化界面工具

下载地址:https://github.com/zilliztech/attu/releases

三、快速入门

除了使用可视化工具连接 Milvus 数据库以外,通常会使用编程语言客户端操作 Milvus 数据库,这里以 Python SDK 为例。

安装 Python SDK

pip install pymilvus[model]

连接数据库

方式 1
from pymilvus import connections, db

# 连接数据库服务器
connections.connect(
    host="127.0.0.1",  # 连接服务端地址,
    port=19530,        # 连接端口,milvus默认监听19530
    alias='default',   # 连接别名,如果不设置,默认为default,
    db_name='default'  # 连接数据库,默认是default
)

# 判断是否连接成功
res = db.connections.has_connection('default')
print(res)

# 断开数据库连接
# 此处必须填写断开的连接别名
connections.disconnect('default')
方式 2(方式 1 的封装)
from pymilvus import MilvusClient

# 如果没有开启用户身份认证,直接通过uri连接即可。
client = MilvusClient("http://localhost:19530")
# client = MilvusClient()  # 上面的内容可以简写

# 开启用户身份认证 并使用root用户的情况
client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus",
    db_name="default"
)

# 开启用户身份认证 并使用非root用户的情况
client = MilvusClient(
    uri="http://localhost:19530",
    token="user:password",
    db_name="default"
)

# 断开连接
client.close()

数据库操作

操作 代码示例 说明
列出数据库 client.list_collections() 列出所有集合
创建数据库 client.create_database('my_database') 数据库名必须唯一,重复创建会报错:database already exist
使用数据库 client.using_database('my_database')
print(client