大连网站代运营的公司有哪些每日新闻摘抄10一15字
milvus官方文档
milvus2.3.1的官方文档地址: https://milvus.io/docs/v2.3.x
使用attu创建collection
collection必须要有一个主键字段、向量字段
确保字段类型与索引类型兼容
字符串类型(VARCHAR)通常需要使用 Trie
索引,而不是 AutoIndex
使用代码连接milvus数据库,创建collection结构,并插入数据
import uuidimport numpy as npfrom pymilvus import(connections,FieldSchema, CollectionSchema, DataType,Collection,
)collection_name = "first_milvus"
host = "192.168.171.130"
port = 19530
username = ""
password = ""
num_entities, dim = 1000, 128
total_num = 3000def generate_uuids(number_of_uuids):# uuid.uuid4() 产生随机数# str(uuid.uuid4()) 将随机数转成str# _ in range(number_of_uuids) 产生多少个_(占位符),存放随机数,组成一个listuuids = [str(uuid.uuid4()) for _ in range(number_of_uuids)]return uuidsprint("start connecting to milvus")
connections.connect("default", host=host, port=port, user=username, password=password)fields = [FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),FieldSchema(name="random", dtype=DataType.DOUBLE),FieldSchema(name="comment", dtype=DataType.VARCHAR, max_length=200),FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
]schema = CollectionSchema(fields, "first_milvus is the simplest demo to introduce the APIS")
coll = Collection(collection_name, schema, consistency_level="Bounded", shards_num=1)
# seed=19530 设置了随机数生成器的种子,确保每次运行代码时生成的随机数序列是相同的(可重复性)。
rng = np.random.default_rng(seed=19530)# entities = [
# [0, 1, 2], # 实体 ID
# [0.123, 0.456, 0.789], # 随机属性
# ['uuid1', 'uuid2', 'uuid3'], # UUID
# [[0.123, 0.456], [0.789, 0.012], [0.345, 0.678]], # 特征向量
# ]entities = [# 生成一个从 0 到 num_entities - 1 的整数列表[i for i in range(num_entities)],# 随机数生成器 rng 生成 num_entities 个随机浮点数,范围在 [0, 1) 之间# tolist() 将 NumPy 数组转换为 Python 列表# 如果 num_entities = 3,可能生成 [0.123, 0.456, 0.789]rng.random(num_entities).tolist(),# 生成一个包含 num_entities 个 UUID 字符串的列表, 列表可能用于为每个实体分配一个全局唯一的标识符generate_uuids(num_entities),# 使用随机数生成器 rng 生成一个形状为 (num_entities, dim) 的二维 NumPy 数组# num_entities表示二维数组中有几个数组,dim表示第二层数组里面有几个元素rng.random((num_entities, dim)),
]
insert_result = coll.insert(entities)
coll.flush()
print("done")
向量字段上创建索引
在向量字段上创建索引才能load进内存。
如果数据量大的情况,创建索引的过程需要花费一定的时间。
索引加载到内存
将索引加载到内存中
预览查看数据
collection加载到内存之后,就可以预览和查看数据了。
向量搜索
向量字段就一个,可以自动判断是哪一个字段为向量字段
随机搜索:随机生成一个向量字段的值进行查询。
精确搜索:到预览数据界面找出一条数据,拷贝向量字段的值进行查询。
可以看出pk为3的记录匹配度最高。
score=0表示完全匹配的数据。
总结:milvus中所有的搜索和查询都在内存中执行,所以只有加载的Collection才可以被搜索,要加载到内存需要给向量字段创建索引。