dify Milvus
时间: 2025-01-08 12:46:18 浏览: 7
### Milvus向量化搜索引擎的使用和配置
#### 1. 安装和配置Milvus
安装Milvus可以通过Docker、Helm Chart或源码编译等方式完成。对于大多数用户来说,最简单的方式是通过Docker来部署Milvus[^1]。
```bash
docker pull milvusdb/milvus:v2.0-cpu-d061821-5e559c
docker run -d --name milvus_cpu_v2.0 \
-p 19530:19530 \
-p 19121:19121 \
-v /home/$USER/milvus/db:/var/lib/milvus/db \
-v /home/$USER/milvus/conf:/var/lib/milvus/conf \
-v /home/$USER/milvus/wal:/var/lib/milvus/wal \
milvusdb/milvus:v2.0-cpu-d061821-5e559c \
bash bin/run_milvus.sh start
```
这段命令会启动一个带有CPU支持的Milvus实例,并映射必要的端口和服务路径到宿主机上。
#### 2. 创建集合与索引
创建一个新的集合用于存储向量数据之前,需先定义好字段结构以及相应的参数设置:
```python
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
connections.connect()
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields)
collection_name = "example_collection"
milvus_collection = Collection(name=collection_name, schema=schema)
index_params = {
'metric_type': 'L2',
'index_type': 'IVF_FLAT',
'params': {'nlist': 128}
}
milvus_collection.create_index(field_name="embedding", index_params=index_params)
```
上述Python脚本展示了如何利用`pymilvus`库连接至Milvus服务并建立新的集合及其对应的索引结构。
#### 3. 插入数据
有了预先设定好的集合之后就可以往里面插入实际的数据点了:
```python
import random
entities = [[random.randint(1, 1000) for _ in range(1)], [random.random() * 100 for _ in range(128)]]
res = milvus_collection.insert([entities])
print(res)
```
这里随机生成了一些整数ID加上浮点型数组作为嵌入向量模拟真实世界中的特征表示形式。
#### 4. 执行搜索操作
最后一步就是执行相似性查询了,在给定目标向量的情况下找到与其最为接近的结果集:
```python
search_param = {"metric_type": "L2", "params": {"nprobe": 10}}
results = milvus_collection.search(
data=[[random.random() * 100 for _ in range(128)]],
anns_field='embedding',
param=search_param,
limit=5
)
for result in results:
print(f"IDs of the top {len(result)} hits are:")
for hit in result:
print(hit.id)
```
此段代码实现了基于距离度量(如欧氏距离)对已存入数据库内的记录进行K近邻(KNN)查找的功能。
阅读全文