milvus-lite简单试用
pymilvus 已经直接支持使用milvus-lite了,以下是一个简单测试
参考使用
- 安装依赖
pip install pymilvus
- 完整代码
import random
from pymilvus import MilvusClient,FieldSchema,CollectionSchema,DataType
from pymilvus.milvus_client.index import IndexParams
# 本地模式指定路径就可以了
client = MilvusClient("./dalong.db")
dim = 128
# 指定schema
id_field = FieldSchema(name="id", dtype=DataType.INT64,auto_id=True, is_primary=True)
vector_field = FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dim)
# 此处定义了name,但是添加目前有问题
name_field = FieldSchema(name="name", dtype=DataType.STRING,max_length=1000)
# 定义集合信息,注意开启了动态字段能力
schema = CollectionSchema(fields=[id_field, vector_field], description="example collection",enable_dynamic_field=True)
test_collection = "test_collection"
# 索引定义
index_params = IndexParams(field_name="vector", index_type="IVF_FLAT", index_name="index_1", nlist=100)
if test_collection not in client.list_collections():
# 通过client 创建集合,同时配置了auto id(主键)
client.create_collection(
collection_name="test_collection",
schema=schema,
auto_id =True,
# enable_dynamic_field = True,
index_params= index_params
)
data = []
for i in range(1000):
vector = [random.random() for _ in range(dim)]
data.append({"vector": vector, "name": "name"+str(i)})
# 插入数据
client.insert(test_collection, data)
query_vector = [random.random() for _ in range(dim)]
# 数据查询
results = client.search(collection_name=test_collection,data=[query_vector],output_fields=["id","name"],limit=10)
for hit in results[0]:
print(hit)
说明
内部存储上基于了sqlite,当创建之后会有元数据以及集合表的定义,insert 的数据回到集合中,当然从目前测试schema 添加是有各类问题(可能是使用的问题,但是通过搜索github 的issue 也是有不少类似问题的),推荐的方式是使用内部的自动动态字段,这样简单一些

浙公网安备 33010602011771号