Milvus 是一个开源的向量数据库,用于管理、搜索和分析高维向量数据。它特别适用于处理像图像、视频、音频和文本等非结构化数据。以下是关于 Milvus 向量数据库的详细介绍和入门教程。
### Milvus 简介
Milvus 的主要特性包括:
1. **高性能**:支持大规模向量数据的高效存储和快速检索。
2. **扩展性强**:能够处理 PB 级别的数据。
3. **多种索引类型**:支持多种向量索引算法,如 IVF, HNSW, 和 ANNOY 等。
4. **集成方便**:支持 Python、Java、Go 和 Node.js 等多种编程语言。
5. **云原生**:与 Kubernetes 集成,支持云部署。
### 安装 Milvus
Milvus 可以通过 Docker 快速安装和运行。以下是通过 Docker 安装和运行 Milvus 的步骤:
#### 1. 安装 Docker
首先,确保系统已经安装 Docker。如果没有安装,可以按照官方指南进行安装:[Docker 安装指南](https://docs.docker.com/get-docker/)
#### 2. 启动 Milvus
使用以下命令启动 Milvus:
```bash
docker run -d --name milvus-standalone \
-p 19530:19530 \
-p 9091:9091 \
milvusdb/milvus:v2.2.7
```
上述命令会拉取 Milvus 镜像并启动一个容器,Milvus 默认在 `19530` 端口上提供服务,`9091` 端口用于监控。
### 使用 Milvus
安装完成后,可以使用 Python 客户端与 Milvus 进行交互。以下是一个简单的 Python 示例:
#### 1. 安装 Milvus Python 客户端
使用 pip 安装 Milvus Python 客户端:
```bash
pip install pymilvus
```
#### 2. 连接到 Milvus
下面是一个简单的 Python 脚本,展示如何连接到 Milvus,创建集合,插入向量和搜索向量:
```python
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
# 连接到 Milvus
connections.connect("default", host="127.0.0.1", port="19530")
# 定义字段
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=128)
]
# 定义集合模式
schema = CollectionSchema(fields, "example_collection")
# 创建集合
collection = Collection("example_collection", schema)
# 插入向量数据
import numpy as np
vectors = np.random.random([10, 128]).astype(np.float32)
data = [
[i for i in range(10)], # id 列表
vectors # 向量列表
]
collection.insert(data)
# 创建索引
index_params = {
"index_type": "IVF_FLAT",
"params": {"nlist": 128},
"metric_type": "L2"
}
collection.create_index("vector", index_params)
# 加载集合到内存
collection.load()
# 搜索向量
search_vectors = np.random.random([1, 128]).astype(np.float32)
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search(search_vectors, "vector", search_params, limit=3, output_fields=["id"])
for result in results:
for hit in result:
print(hit.id, hit.distance)
```
### 其他功能
Milvus 还提供了很多高级功能,如时间旅行(时态数据管理)、数据持久化、动态加载和卸载集合等,用户可以根据具体需求进行探索。
### 文档和社区支持
Milvus 拥有详细的文档和活跃的社区支持,您可以通过以下资源获取更多信息:
- [Milvus 官方文档](https://milvus.io/docs/)
- [Milvus GitHub 仓库](https://github.com/milvus-io/milvus)
- [Milvus 社区论坛](https://discuss.milvus.io/)
### 总结
Milvus 是一个功能强大且易于使用的向量数据库,非常适合处理和分析高维向量数据。通过以上步骤,你可以快速上手并开始使用 Milvus 构建高效的向量检索应用。