暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Milvus,开源的向量数据库

《Faiss,开源的向量索引库》介绍的是索引库,本文介绍向量数据库的quick start,操作起来和关系数据库非常类似,能够增删改查。

milvus创建于2019年,是一个开源的向量数据库,目标:

存储、索引、管理词向量,这些词向量会被深度神经网络和其他机器模型使用

$ wget https://github.com/milvus-io/milvus/releases/download/v2.0.2/milvus-standalone-docker-compose.yml -O docker-compose.yml
$ docker-compose up -d 

单机版安装非常简单,主要包含三个组件。

1:连接

connections.connect("default", host="127.0.0.1", port="19530")

2:创建表

每个字段也又类型,向量数据的类型是FLOAT_VECTOR,dim表示向量的维度,hello_milvus是表名。

num_entities, dim = 3000, 8
fields = [
    FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
    FieldSchema(name="random", dtype=DataType.DOUBLE),
    FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
]

schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")

hello_milvus = Collection("hello_milvus", schema, consistency_level="Strong")

3:添加数据

使用随机的方法生成向量,表中可以根据需要存储元数据。

rng = np.random.default_rng(seed=19530)
entities = [
    [i for i in range(num_entities)],
    rng.random(num_entities).tolist(),   
    rng.random((num_entities, dim)),   
]

4:构建索引

其实就是定义Similarity Metrics和Vector Index,查询性能和精度都取决于此:

index = {
    "index_type""IVF_FLAT",
    "metric_type""L2",
    "params": {"nlist": 128},
}

5:相似性搜索

在实际使用过程中,vectors_to_search是要自己生成的,在本文中是拿样本的最后一个向量作为query:

vectors_to_search = entities[-1][-2:]

search_params = {
    "metric_type""l2",
    "params": {"nprobe": 10},
}

result = hello_milvus.search(vectors_to_search, "embeddings", search_params, limit=3, output_fields=["random"])

for hits in result:
    for hit in hits:
        print(f"hit: {hit}, random field: {hit.entity.get('random')}")

6:删除数据

可以根据主键删除:

ids = insert_result.primary_keys
expr = f"pk in [{ids[0]}, {ids[1]}]"
print(fmt.format(f"Start deleting with expr `{expr}`"))

result = hello_milvus.query(expr=expr, output_fields=["random""embeddings"])
print(f"query before delete by expr=`{expr}` -> result: \n-{result[0]}\n-{result[1]}\n")

hello_milvus.delete(expr)


文章转载自虞大胆的叽叽喳喳,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论