Milvus-02-创建collections

Milvus-02-创建collections 本文内容承接上文Milvus-Lite版本环境安装本章不会往数据库里写数据只是讲如何创建表目录通过Python代码创建collectionscreate_collection函数中的dimension参数为什么是768create_collection函数中的vector_field_name参数什么时候创建多个向量字段如何创建多个向量字段create_collection函数中的metric_type参数通过Python代码创建collections一个collections就相当mysql当中的一个表下面的代码是创建1个叫collection_01的表from pymilvusimportMilvusClientclientMilvusClient(urihttp://localhost:19530)client.create_collection(collection_namecollection_01,dimension768# 后续我们会设置的小一些)create_collection函数中的dimension参数dimension表示维度用通俗的话讲意思就是有哪些特征每个特征的程度有多高例如苹果酸甜我们就可以说苹果具有2个维度维度的高低用0到1之间的小数来表示苹果[0.9,0.9]说明这个苹果又酸又甜 苹果[0.1,0.9]说明这个苹果不酸但是很甜为什么是768这个数字是取决于大模型现在主流大模型把文本转换成向量的时候都会用768个特征来表示这个文本所以我们后续为了跑单机dimension会设置的小一些create_collection函数中的vector_field_name参数每创建一个collection如果不指定参数则该collection只有一个字段默认叫vector你可以用mysql理解创建一个collection的表如果不指定参数那么这个表中只有一列列名叫vector更改代码如下我们重新创建一个collection_2的表这个表里有1个列列名叫field_name_1from pymilvusimportMilvusClientclientMilvusClient(urihttp://localhost:19530)client.create_collection(collection_namecollection_02,dimension3,vector_field_namefield_name_1)使用ATTU查看该表如下什么时候创建多个向量字段上述代码中只创建了1个向量字段叫field_name_1假设我的业务需求是图文搜索用户有可能给一个图片让我们根据图片搜索也有可能给出一段商品描述让我们根据描述搜索这种情况下我们就需要2个向量字段一个字段用来存文字向量一个用来存图片向量如何创建多个向量字段创建多个向量需要使用schema下面的代码创建一个collection_03表包含两个字段分别是field_name_1和field_name_2from pymilvusimportMilvusClient,DataType clientMilvusClient(urihttp://localhost:19530)schemaclient.create_schema()# 主键字段必须要有,create_collection默认就有现在是schema的方式必须要手动指定 schema.add_field(field_nameid,datatypeDataType.INT64,is_primaryTrue,auto_idTrue)schema.add_field(field_namefield_name_1,datatypeDataType.FLOAT_VECTOR,dim512)schema.add_field(field_namefield_name_2,datatypeDataType.FLOAT_VECTOR,dim512)client.create_collection(collection_namecollection_03,dimension3,schemaschema # 这里之前是vector_field_name现在改成schema的方式)create_collection函数中的metric_type参数上文中的代码我们使用了两种方式创建字段列分别是create_collection指定vector_field_name和create_collection指定schema当点击create_collection源码的时候会发现还有一个参数叫metric_type这个参数叫距离度量方式用来表示两个数据是根据什么来决定像还是不像比如我觉得两个物体都是圆的我就说它俩像但是你觉得两个物体大小相同才应该叫做像我和你之间对像不像的解释不相同所以metric_type就是用来决定具体采用哪种规则来决定像不像有下面3种规则L2欧氏距离算直线距离L2请参考这里TODOshiwentian这有个链接文章还没写完IP内积算重叠程度请参考这里TODOshiwentian这有个链接文章还没写完COSINE余弦相似度 算方向是否一致请参考这里TODOshiwentian这有个链接文章还没写完