milvus 向量数据库安装

milvus 简介

Milvus 是一个开源的向量数据库,专门为处理和分析大规模向量数据而设计。它适用于需要高效存储、检索和管理向量数据的应用场景,如机器学习、人工智能、计算机视觉和自然语言处理等。以下是 Milvus 的一些关键特性和功能:
官方文档:https://milvus.io/docs/zh

主要特性

  1. 高效的向量检索

    • Milvus 支持多种高效的向量检索算法,包括基于内存的和基于磁盘的索引,能够快速处理大规模向量数据。
  2. 灵活的数据模型

    • Milvus 允许用户存储和管理不同类型的数据,包括结构化数据和非结构化数据,支持多种数据格式。
  3. 高并发处理

    • Milvus 能够支持高并发的查询请求,适合实时应用场景。
  4. 可扩展性

    • Milvus 支持水平扩展,可以根据需求增加节点,以处理更大的数据集和更多的查询请求。
  5. 多种编程语言支持

    • Milvus 提供多种语言的 SDK,包括 Python、Java、Go 和 C++,方便开发者在不同的应用程序中集成。
  6. 集成机器学习框架

    • Milvus 可以与主流的机器学习和深度学习框架(如 TensorFlow 和 PyTorch)集成,便于处理和分析向量数据。
  7. 支持多种索引类型

    • Milvus 提供多种索引类型(如 IVF、HNSW 和 ANNOY),用户可以根据具体需求选择合适的索引方式,以优化检索性能。
  8. 多种存储后端

    • Milvus 支持多种存储后端,包括本地存储和云存储,用户可以根据需要选择合适的存储方案。

应用场景

  • 图像和视频检索:在计算机视觉应用中,Milvus 可以用于图像和视频的相似性检索。
  • 自然语言处理:在 NLP 应用中,Milvus 可以用于文本向量的检索和分析。
  • 推荐系统:Milvus 可以帮助构建个性化推荐系统,通过用户行为数据进行向量检索。
  • 生物信息学:在生物信息学领域,Milvus 可以用于基因数据和蛋白质数据的分析和检索。

总结

Milvus 是一个强大的向量数据库,适合需要高性能向量检索和分析的各种应用场景。它的设计使得数据存储和检索变得高效且灵活,能够满足现代数据驱动应用的需求。

milvus 安装

初始化主机挂载目录

mkdir -p /zpaas/volumes/etcd
mkdir -p /zpaas/volumes/milvus
mkdir -p /zpaas/volumes/minio
chmod 700 /zpaas/volumes/etcd

docker-compose-milvus.yml

version: '3.5'
services:
  etcd:
    container_name: milvus-etcd
    image: hub-nj.iwhalecloud.com/zcm_k8s/etcd:3.5.6-0
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - /zpaas/volumes/etcd:/etcd
    ports:
      - "3379:3379"
    command: etcd -advertise-client-urls=http://127.0.0.1:3379 -listen-client-urls http://0.0.0.0:3379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 5s
      timeout: 3s
      retries: 10
 
  minio:
    container_name: milvus-minio
    image: hub-nj.iwhalecloud.com/public/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - /zpaas/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 5s
      timeout: 3s
      retries: 10
 
  standalone:
    container_name: milvus-standalone
    image: hub-nj.iwhalecloud.com/public/milvus:v2.4.5
    command: ["milvus", "run", "standalone"]
    security_opt:
      - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:3379
      MINIO_ADDRESS: minio:9000
    volumes:
      - /zpaas/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"
 
networks:
  default:
    name: milvus

启动

docker-compose -f docker-compose-milvus.yml up -d

查看

root@10.10.194.210[/zpaas/volumes]# docker ps -a  | grep milvus
df9f6e31a2f6   hub-nj.iwhalecloud.com/public/milvus:v2.4.5                        "/tini -- milvus run…"   33 minutes ago       Up 33 minutes (healthy)     0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp   milvus-standalone
3e4c32da554c   hub-nj.iwhalecloud.com/public/minio:RELEASE.2023-03-20T20-16-18Z   "/usr/bin/docker-ent…"   33 minutes ago       Up 33 minutes (healthy)     0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp                              milvus-minio
be224b2f19d7   hub-nj.iwhalecloud.com/zcm_k8s/etcd:3.5.6-0                        "etcd -advertise-cli…"   33 minutes ago       Up 33 minutes (unhealthy)   2379-2380/tcp, 4001/tcp, 7001/tcp, 0.0.0.0:3379->3379/tcp, :::3379->3379/tcp               milvus-etcd
root@10.10.194.210[/zpaas/volumes]# docker exec -it milvus-etcd etcdctl --endpoints=http://127.0.0.1:3379 endpoint health
http://127.0.0.1:3379 is healthy: successfully committed proposal: took = 9.597225ms

attu 安装

attu 为 milvus 的一款图形化管理工具,非常方便对 milvus 的一些管理

docker run -d \
--name=attu \
-p 8000:3000 \
-e MILVUS_URL=10.10.194.210:19530 \
hub-nj.iwhalecloud.com/public/attu:v2.3.9

访问
http://x.x.x.x:8000

minio 访问

minioadmin / minioadmin
http://x.x.x.x:9001

### Milvus 向量数据库安装教程 #### 准备工作 为了顺利安装Milvus向量数据库,需提前准备好Docker环境。确保本地计算机已成功安装并配置好Docker服务[^3]。 #### 获取Milvus安装文件 访问GitHub上的官方发布页面获取最新版的Milvus安装包。对于此次安装而言,选择了版本号为2.3.2的记忆体优化版本,并将其命名为`docker-compose.yml`放置于指定路径下以便后续部署操作。 ```bash wget https://github.com/milvus-io/milvus/releases/download/v2.3.2/milvus-standalone-docker-compose.yml -O docker-compose.yml ``` #### 执行安装命令 进入存放`docker-compose.yml`文件所在的目录,在终端输入如下指令启动容器化后的Milvus实例: ```bash docker-compose up -d ``` 此过程将会自动拉取所需镜像并初始化运行环境,完成后即表示Milvus已经成功部署至本机环境中。 --- ### 使用方法概述 #### 创建集合(Collection) 在正式存储数据之前,需要定义一个或多个用于容纳实体记录的数据集——也就是所谓的“集合”。这一步骤可以通过Python SDK来实现自动化处理流程[^4]。 ```python from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection connections.connect("default", host="localhost", port="19530") fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128) ] schema = CollectionSchema(fields) collection_name = "example_collection" collection = Collection(name=collection_name, schema=schema) print(f"Successfully created collection: {collection.name}") ``` 上述脚本展示了怎样利用PyMilvus库连接远程服务器端口以及构建一个新的带有两个字段结构化的表单对象;其中一个是主键类型而另一个则是用来保存特征向量数组的空间维度设置为128维浮点数形式[^1]。 #### 插入数据项 有了预先设定好的表格框架之后就可以往里面填充实际观测得到的信息条目了。这里同样借助pymilvus提供的API接口完成批量写入动作。 ```python import numpy as np data_to_insert = [ [i for i in range(10)], # 主键列 [[np.random.rand() * 2 - 1 for _ in range(128)] for _ in range(10)] # 特征向量列表 ] mr = collection.insert(data_to_insert) print(mr) ``` 这段代码片段说明了如何生成随机数值作为测试样本加入到先前建立起来的那个名为`example_collection`的对象里去。每次调用insert函数都会返回有关这次事务的结果报告给开发者查看确认。 #### 查询相似度匹配结果 最后介绍一种非常实用的功能就是基于内容检索机制寻找最接近查询条件的目标元素。下面的例子演示了当给出某个特定模式时系统能够快速定位与其相仿的一系列候选者出来供进一步分析研究之用。 ```python search_params = {"metric_type": "L2", "params": {"nprobe": 10}} results = collection.search( data=[[0.5]*128], param=search_params, limit=3 ) for result in results: print(result.id, result.distance) ``` 以上便是针对初次接触Milvus用户的简易入门指导手册,涵盖了从零起步直至掌握基本功能应用在内的全过程讲解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值