Zilliz 采用 Milvus 作为其开源高性能、高扩展性向量数据库的名称,该数据库可在从笔记本电脑到大规模分布式系统等各种环境中高效运行。它既是开源软件,也是云服务。
Milvus 由 Zilliz 开发,并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会,现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布,大多数贡献者都是高性能计算(HPC)领域的专家,擅长构建大规模系统和优化硬件感知代码。核心贡献者包括来自 Zilliz、ARM、英伟达、AMD、英特尔、Meta、IBM、Salesforce、阿里巴巴和微软的专业人士。
有趣的是,Zilliz 的每个开源项目都以鸟命名,这种命名方式象征着自由、远见和技术的敏捷发展。
非结构化数据、Embeddings 和 Milvus
非结构化数据(如文本、图像和音频)格式各异,蕴含丰富的潜在语义,因此分析起来极具挑战性。为了处理这种复杂性,Embeddings 被用来将非结构化数据转换成能够捕捉其基本特征的数字向量。然后将这些向量存储在向量数据库中,从而实现快速、可扩展的搜索和分析。
Milvus 提供强大的数据建模功能,使您能够将非结构化或多模式数据组织成结构化的 Collections。它支持多种数据类型,适用于不同的属性模型,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON,为您节省了维护多个数据库系统的精力。
安装 Milvus
要使用 Docker Compose 安装支持 GPU 的 Milvus,请按照以下步骤操作。
1.下载并配置 YAML 文件
下载 milvus-standalone-docker-compose-gpu.yml并手动保存为 docker-compose.yml,或使用以下命令
mkdir milvus
cd milvus
wget https://github.com/milvus-io/milvus/releases/download/v2.5.10/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml
如果github超时,可以科学上网后,下载下来重命名, 再上传到目录里

接下来对 YAML 文件中单机服务的环境变量做如下修改,
分配GPU 设备
要为 Milvus 分配特定的 GPU 设备,请找到standalone 服务定义中的deploy.resources.reservations.devices[0].devices_ids 字段,并将其值替换为所需 GPU 的 ID
GPU信息查询使用 nvidia-smi 工具,来确定 GPU 设备的 ID

nvidia-smi 工具安装命令,需要根据自己linux系统选择合适版本安装
nvidia-smi
apt install nvidia-utils-570-server

GPU信息拿到后,我们修改yml文件,确保id一致,如果默认是0,和显卡索引0一样,那就不用修改,如果多个设备,可以逗号间隔配置

2.启动 Milvus
sudo docker compose up -d

启动 Milvus 后
名为milvus- standalone、milvus-minio 和milvus-etcd的容器启动。
milvus-etcd容器不向主机暴露任何端口,并将其数据映射到当前文件夹中的volumes/etcd。
milvus-minio容器使用默认身份验证凭据在本地为端口9010和9011提供服务,并将其数据映射到当前文件夹中的volumes/minio。
Milvus-standalone容器使用默认设置为本地19530端口提供服务,并将其数据映射到当前文件夹中的volumes/milvus
检查容器运行状态可用下面命令
sudo docker compose ps
如下说明启动成功
遇到下面错误,是minio端口占用,请修改2个端口再重试
Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint milvus-minio (52d317091f64cdd7669d2d7a0555637804c8183423aab487223eadf8c377be4c): Bind for 0.0.0.0:9000 failed: port is already allocated
如果遇到etcd权限问题,请加权限
chmod 777 /volumes/etcd/
3、使用
可以结合lightRAG,使用向量化存储

4、docker-compose.yml文件源码
这里贴出源码,供大家部署使用
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.18
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
ports:
- "9011:9001"
- "9010:9000"
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
command: minio server /minio_data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.5.10-gpu
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
ports:
- "19530:19530"
- "9091:9091"
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
device_ids: ["0"]
depends_on:
- "etcd"
- "minio"
networks:
default:
name: milvus
今天的大模型介绍就到这里了,感谢能看到这里的朋友😉
本次的分享就到这里,【终极量化数据】致力于为大家分享技术干货😎
如果以上过程中出现了任何的纰漏错误,烦请大佬们指正😅
受益的朋友或对技术感兴趣的伙伴记得点赞已关注支持一波🙏
也可以搜索已关注我的微信公众号【终极量化数据】,留言交流🙏

















暂无评论内容