新手如何使用 Milvus

新手如何使用 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._using)
数据库不存在则报错:database not found
删除数据库 db.drop_datab
<think>好的,用户现在想了解如何使用Kubernetes(K8s)部署Milvus。之前他们问过Milvus能否部署在Windows上,现在转向生产环境的部署方案,可能他们正在考虑将Milvus应用到实际项目中,或者从开发测试转向正式部署。 首先,我需要确认用户对Kubernetes的熟悉程度。他们可能已经有一定的K8s基础,但也不排除是新手,所以步骤需要详细但不过于复杂。之前的回答里提到了K8s部署的优势,现在需要展开具体步骤。 用户可能的需求是明确的步骤指南,包括安装前的准备、安装过程、验证方法以及后续的运维注意事项。他们可能还关心如何配置持久化存储、监控和升级等高级功能,但作为基础教程,需要先覆盖核心内容,再提及进阶部分。 接下来,我需要参考Milvus的官方文档,确保提供的信息准确。Milvus官方推荐使用Helm进行部署,所以重点放在Helm的安装和使用上。同时,需要提醒用户安装前的依赖,如Kubernetes集群、Helm、存储类和Ingress控制器(如果需要外部访问)。 可能需要分步骤讲解,包括添加Milvus的Helm仓库、配置values.yaml文件,以及安装命令。特别是配置部分,用户可能需要自定义组件、资源限制、持久化存储等,需要给出常见配置示例,并说明如何根据需求调整。 验证部署是否成功部分,需要指导用户如何检查Pod状态、测试连接,可能还需要使用Milvus的客户端工具或Python SDK进行简单操作,比如创建集合和插入数据,这样用户能确认服务正常运行。 最后,运维注意事项部分要包括监控、日志管理、备份和升级策略。这些内容对生产环境尤为重要,用户可能希望确保系统的可靠性和可维护性。 需要注意的是,用户可能没有提到监控或持久化存储的具体配置,但在实际部署中这些是关键点,所以需要主动包含这些信息。另外,可能存在的误区是认为K8s部署复杂,所以步骤要尽量简化,提供清晰的命令和配置示例,减少用户的困惑。 总结来说,回答需要结构清晰,分步骤讲解,涵盖从准备到验证的全过程,并提供必要的注意事项和进阶指引,确保用户能够顺利部署Milvus到K8s环境中。</think>以下是使用 **Kubernetes (K8s)** 部署 Milvus 的详细步骤,涵盖单机版和分布式集群的部署方法: --- ### **1. 部署前提条件** - **Kubernetes 集群**:确保已有一个正常运行的 K8s 集群(版本 ≥ 1.19)。 - **Helm 工具**:安装 Helm 3.x([安装指南](https://helm.sh/docs/intro/install/))。 - **存储类 (StorageClass)**:配置持久化存储(如 AWS EBS、NFS、Ceph 等)。 - **Ingress 控制器**(可选):如果需要外部访问,提前部署 Ingress(如 Nginx Ingress)。 --- ### **2. 部署单机版 Milvus(Standalone)** 单机版适合轻量级场景,所有组件运行在单个 Pod 中。 #### **步骤 1:添加 Milvus Helm 仓库** ```bash helm repo add milvus https://milvus-io.github.io/milvus-helm/ helm repo update ``` #### **步骤 2:安装 Milvus** ```bash helm install my-milvus milvus/milvus --set cluster.enabled=false ``` - `my-milvus`:自定义的部署名称。 - `cluster.enabled=false`:明确指定单机模式。 #### **步骤 3:验证部署** ```bash kubectl get pods -l app.kubernetes.io/instance=my-milvus ``` 正常情况应看到 `my-milvus` 的 Pod 状态为 `Running`。 --- ### **3. 部署分布式集群版 Milvus(Cluster)** 分布式模式支持水平扩展和高可用,适合生产环境。 #### **步骤 1:自定义配置文件(`values.yaml`)** 创建自定义配置文件以覆盖默认参数(例如资源配置、持久化存储): ```yaml # values.yaml cluster: enabled: true # 启用分布式模式 mode: cluster # 配置组件资源限制 components: dataNode: resources: limits: cpu: "2" memory: "4Gi" queryNode: resources: limits: cpu: "2" memory: "4Gi" # 配置持久化存储 persistence: enabled: true storageClass: "nfs-client" # 替换为你的 StorageClass size: 50Gi # 暴露服务(可选) service: type: LoadBalancer ports: milvus: 19530 ``` #### **步骤 2:安装分布式集群** ```bash helm install my-milvus-cluster milvus/milvus -f values.yaml ``` #### **步骤 3:检查组件状态** ```bash kubectl get pods -l app.kubernetes.io/instance=my-milvus-cluster ``` 应看到多个 Pod(如 `data-node`、`query-node`、`index-node` 等)运行。 --- ### **4. 连接 Milvus 服务** #### **内部访问** 获取服务 IP 和端口: ```bash kubectl get svc my-milvus-cluster-milvus ``` #### **外部访问** 如果配置了 `service.type=LoadBalancer` 或 Ingress,通过外部 IP 或域名连接(默认端口 `19530`)。 #### **Python 客户端测试** ```python from pymilvus import connections, CollectionSchema, FieldSchema, DataType # 连接集群 connections.connect(host="<EXTERNAL_IP>", port=19530) # 创建集合 schema = CollectionSchema( fields=[FieldSchema("id", DataType.INT64, is_primary=True)] ) collection = Collection("test_collection", schema) print("Milvus 连接成功!") ``` --- ### **5. 运维与监控** #### **监控** - **Prometheus + Grafana**:Milvus 提供内置的监控指标,通过 Helm 安装时可启用: ```yaml # values.yaml metrics: enabled: true prometheus: enabled: true serviceMonitor: enabled: true ``` #### **日志管理** 查看组件日志: ```bash kubectl logs <pod-name> - 使用 Milvus 的 [`backup` 工具](https://milvus.io/docs/backup.md) 结合持久化存储快照功能。 #### **升级** ```bash helm upgrade my-milvus-cluster milvus/milvus -f values.yaml ``` --- ### **6. 常见问题** - **存储配置失败**:检查 StorageClass 是否支持动态卷供应(PVC 状态是否为 `Bound`)。 - **资源不足**:调整 `values.yaml` 中的 CPU/内存限制。 - **网络不通**:确保防火墙放行端口 `19530`(默认)和 `9091`(监控)。 --- ### **总结** - **单机模式**:快速测试或开发环境,一键部署。 - **分布式模式**:生产环境必备,需定制资源配置和存储。 - **扩展性**:通过 Helm 灵活调整组件副本数(如 `queryNode.replicas=3`)。 详细配置参考 [Milvus Helm Chart 文档](https://milvus.io/docs/install_cluster-helm.md)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值