向量库匹配milvus
时间: 2025-03-27 17:28:40 浏览: 31
### Milvus 向量库匹配使用方法
#### 创建连接和集合
为了实现向量相似度搜索,首先需要创建到 Milvus 的连接以及定义一个用于存储数据的集合。这可以通过 `pymilvus` 库完成。
```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 with embeddings")
collection = Collection("example_collection", schema)
```
上述代码片段展示了如何建立与本地运行实例之间的连接,并构建了一个新的集合来保存具有 128 维特征向量的数据项[^1]。
#### 插入数据
一旦建立了合适的结构化框架之后,则可继续执行插入操作:
```python
import random
data = [
[i for i in range(10)], # id field data
[[random.random() for _ in range(128)] for _ in range(10)] # embedding vectors
]
mr = collection.insert(data)
print(f"Number of entities inserted: {len(mr.primary_keys)}")
```
这段脚本生成了一些随机数作为嵌入表示形式,并将其连同唯一标识符一起加入到了之前所提到的例子集中去。
#### 执行查询
最后一步就是利用已有的索引来查找最接近给定目标对象的相关条目了:
```python
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
)
for result in results:
print(result.id, result.distance)
```
这里设置好了 L2 距离计算参数(即欧几里得距离),并且指定了每次返回最多三个最近邻的结果;同时还可以通过表达式进一步筛选符合条件的对象。
#### 构建索引
为了提高检索效率,在实际应用中通常还需要为字段建立有效的索引机制:
```python
index_param = {
"index_type": "IVF_FLAT",
"params": {"nlist": 128},
"metric_type": "L2"
}
collection.create_index(field_name="embedding", index_params=index_param)
```
此部分说明了怎样针对特定属性指定一种适合大规模近似最近邻居搜索算法类型的索引方案——在这个例子里面选择了 IVF_FLAT 类型。
阅读全文
相关推荐


















