向量库Milvus
时间: 2025-05-25 15:05:09 浏览: 60
### Milvus 向量库的使用教程
Milvus 是一款专为大规模相似性搜索设计的开源向量数据库,支持多种数据存储和索引方法。以下是有关如何配置、安装以及使用 Milvus 的详细说明。
#### 安装 Milvus
Milvus 提供了灵活多样的安装方式,包括通过 Docker 容器部署、二进制包安装或者基于源码编译的方式[^1]。对于大多数开发者而言,推荐采用 Docker 方式来快速启动并运行 Milvus 实例:
```bash
docker pull milvusdb/milvus:latest
docker run -d --name milvus_cpu -p 19530:19530 -p 8080:8080 \
-v /path/to/data:/var/lib/milvus \
milvusdb/milvus:latest
```
上述命令会拉取最新版本的 Milvus 并将其作为后台服务运行,同时绑定主机端口 `19530` 和 `8080` 到容器内部的服务上。
如果希望从源码构建 Milvus,则可以通过 Git 克隆官方仓库实现这一目标[^2]:
```bash
git clone https://github.com/milvus-io/milvus.git
cd milvus
make build
```
#### 配置 Milvus
完成安装之后,可以根据实际需求调整 Milvus 的配置文件。默认情况下,这些设置位于 `/etc/milvus/` 路径下(如果是通过 Docker 运行,则可能需要映射到宿主机上的指定目录)。主要涉及以下几个方面:
- **资源分配**: 设置 CPU/GPU 数量及内存大小;
- **持久化选项**: 指定元数据与日志记录路径;
- **网络参数**: 修改监听地址或端口号等信息。
更多高级功能如集群模式下的节点间通信机制等内容可查阅官方文档获取进一步指导。
#### 使用教程
为了帮助初学者更好地掌握 Milvus 的核心概念及其操作流程,在此提供一份简化的入门指南[^3]:
1. 创建集合 (Collection): 用户需定义好字段结构(例如 ID, 嵌入特征维度),然后调用 API 构建一个新的 Collection 对象。
2. 插入数据: 将待处理的数据转换成适合的形式后批量写入至刚才建立好的 Collection 中去。
3. 构建索引: 根据业务场景选取合适的算法类型(e.g., IVF_FLAT, HNSW etc.) 来加速查询效率。
4. 执行检索: 给定一组 query vectors ,找到最接近的结果返回给客户端应用层解析展示出来即可。
以上便是整个生命周期内的基本环节概述;当然针对某些特定领域还可能存在额外扩展模块可供选用,比如时间序列分析插件之类的附加组件。
```python
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
connections.connect("default", host="localhost", port="19530")
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, "example collection")
collection = Collection("my_collection", schema)
data = [[i for i in range(10)], [[float(j) for j in range(128)] for _ in range(10)]]
mr = collection.insert(data)
index_params = {
"metric_type": "L2",
"index_type": "IVF_FLAT",
"params": {"nlist": 128}
}
collection.create_index(field_name="embedding", index_params=index_params)
collection.load()
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search(
data=[[random.random() for _ in range(128)]],
param=search_params,
limit=3,
expr=None
)
print(results)
```
阅读全文
相关推荐


















