Milvus 使用模型数据
时间: 2025-01-23 14:02:17 浏览: 58
### 如何在 Milvus 中使用模型数据
#### 创建集合并定义字段
为了在 Milvus 中存储和检索模型产生的向量数据,首先需要创建一个合适的集合。该集合应包含用于保存原始输入(如文本)、对应的嵌入向量以及其他任何必要的辅助信息的字段。
```python
from pymilvus import CollectionSchema, FieldSchema, DataType, Collection
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="text", dtype=DataType.VARCHAR, max_length=500), # 原始文本或其他非结构化数据
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768) # 模型生成的特征向量维度大小取决于具体使用的预训练模型
]
schema = CollectionSchema(fields, "A collection to store model-generated embeddings")
collection = Collection("model_data_collection", schema)
```
#### 插入来自模型的数据
一旦有了上述准备好的集合,就可以开始往里面插入实际由机器学习或深度学习框架计算得到的结果了。这通常涉及到先处理一批待索引的对象(比如文档片段),再调用相应的算法获得它们各自的表示形式——即所谓的“embeddings”。
假设有一个预先训练好并且加载完毕的语言模型 `language_model` 可以接受字符串列表作为输入参数,并返回相同长度的一系列浮点数数组:
```python
import numpy as np
texts = ["example sentence one.", "another example."]
ids = list(range(len(texts))) # 或者其他唯一标识符方案
# 使用语言模型转换文本为向量
embeddings = language_model.encode(texts)
entities = {
'id': ids,
'text': texts,
'embedding': [list(vec.astype(np.float32)) for vec in embeddings],
}
mr = collection.insert(entities)
print(f"Inserted {len(mr.primary_keys)} records.")
```
#### 查询与相似度搜索
当所有目标条目都被正确加入数据库之后,便可以通过指定条件来提取特定记录或是执行近似最近邻 (ANN) 查找操作找出最接近给定样本的那一部分实体集。
对于简单的精确匹配请求而言,只需给出想要定位的内容即可;而如果希望找到那些跟某个示例最为相像的东西,则要利用之前提到过的 `query()` 方法[^2],配合距离度量标准来进行高效筛选。
```python
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.query(
expr=f"text like '%example%'",
output_fields=["id", "text"],
limit=5
)
for result in results:
print(result['text'])
```
阅读全文
相关推荐


















