milvus 元数据存储在etcd中,文件存储在minio中,milvus是向量检索数据库,负责接收请求,做向量计算,调度各个组件。
安装docker:
apt update apt install docker.io
docker compose:
mkdir -p /usr/local/lib/docker/cli-plugins curl -SL https://github.com/docker/compose/releases/download/v5.5.0/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose chmod +x /usr/local/lib/docker/cli-plugins/docker-compose docker compose version wget https://github.com/milvus-io/milvus/releases/download/v3.0.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
启动服务:
docker compose up -d
预先拉取镜像:
docker pull gh-proxy.org/docker/docker.io/milvusdb/milvus:v3.0.0
管理milvus:
安装attu:这是一个桌面端,连接地址 IP:19530
github.com/zilliztech/attu/releases
milvus自带的可视化页面:
192.168.0.114:9091/webui/
minio:
http://192.168.0.114:9001 minioadmin minioadmin
防止一直抱内存监测不到的错误:
standalone: deploy: resources: limits: memory: 6G
python:
# Install: pip install pymilvus from pymilvus import connections # Connect to Milvus connections.connect( alias="default", uri="192.168.0.114:19530", db_name="default", user="root", password="<your_password>" )
插入数据示例:
from pymilvus import MilvusClient
import numpy as np
client = MilvusClient(uri='http://192.168.0.114:19530')
# 创建集合
client.create_collection(collection_name='test_collection', dimension=128, metric_type="L2")
# 插入1000条随机向量数据
data = [{"id": i, "vector": np.random.rand(128).tolist()} for i in range(1000)]
client.insert(collection_name='test_collection', data=data)
# 执行相似性搜索并打印结果
res = client.search(collection_name='test_collection', data=[np.random.rand(128).tolist()], limit=5)
print([(r.id, r.distance, 4) for r in res[0]])