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]])