milvus 简介
Milvus 是一个开源的向量数据库,专门为处理和分析大规模向量数据而设计。它适用于需要高效存储、检索和管理向量数据的应用场景,如机器学习、人工智能、计算机视觉和自然语言处理等。以下是 Milvus 的一些关键特性和功能:
官方文档:https://milvus.io/docs/zh
主要特性
-
高效的向量检索:
- Milvus 支持多种高效的向量检索算法,包括基于内存的和基于磁盘的索引,能够快速处理大规模向量数据。
-
灵活的数据模型:
- Milvus 允许用户存储和管理不同类型的数据,包括结构化数据和非结构化数据,支持多种数据格式。
-
高并发处理:
- Milvus 能够支持高并发的查询请求,适合实时应用场景。
-
可扩展性:
- Milvus 支持水平扩展,可以根据需求增加节点,以处理更大的数据集和更多的查询请求。
-
多种编程语言支持:
- Milvus 提供多种语言的 SDK,包括 Python、Java、Go 和 C++,方便开发者在不同的应用程序中集成。
-
集成机器学习框架:
- Milvus 可以与主流的机器学习和深度学习框架(如 TensorFlow 和 PyTorch)集成,便于处理和分析向量数据。
-
支持多种索引类型:
- Milvus 提供多种索引类型(如 IVF、HNSW 和 ANNOY),用户可以根据具体需求选择合适的索引方式,以优化检索性能。
-
多种存储后端:
- 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-etcdimage: hub-nj.iwhalecloud.com/zcm_k8s/etcd:3.5.6-0environment:- ETCD_AUTO_COMPACTION_MODE=revision- ETCD_AUTO_COMPACTION_RETENTION=1000- ETCD_QUOTA_BACKEND_BYTES=4294967296- ETCD_SNAPSHOT_COUNT=50000volumes:- /zpaas/volumes/etcd:/etcdports:- "3379:3379"command: etcd -advertise-client-urls=http://127.0.0.1:3379 -listen-client-urls http://0.0.0.0:3379 --data-dir /etcdhealthcheck:test: ["CMD", "etcdctl", "endpoint", "health"]interval: 5stimeout: 3sretries: 10minio:container_name: milvus-minioimage: hub-nj.iwhalecloud.com/public/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminports:- "9001:9001"- "9000:9000"volumes:- /zpaas/volumes/minio:/minio_datacommand: minio server /minio_data --console-address ":9001"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 5stimeout: 3sretries: 10standalone:container_name: milvus-standaloneimage: hub-nj.iwhalecloud.com/public/milvus:v2.4.5command: ["milvus", "run", "standalone"]security_opt:- seccomp:unconfinedenvironment:ETCD_ENDPOINTS: etcd:3379MINIO_ADDRESS: minio:9000volumes:- /zpaas/volumes/milvus:/var/lib/milvushealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]interval: 30sstart_period: 90stimeout: 20sretries: 3ports:- "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