Milvus-02-创建collections

本文内容承接上文Milvus-Lite版本环境安装,本章不会往数据库里写数据,只是讲如何创建表

目录

通过Python代码创建collections

一个collections就相当mysql当中的一个表,下面的代码是创建1个叫collection_01的表

cpp 复制代码
from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

client.create_collection(
    collection_name="collection_01",
    dimension=768 # 后续我们会设置的小一些
)

create_collection函数中的dimension参数

dimension表示维度,用通俗的话讲意思就是有哪些特征,每个特征的程度有多高,例如

苹果:酸,甜,我们就可以说苹果具有2个维度,维度的高低用0到1之间的小数来表示

cpp 复制代码
苹果=[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_1

cpp 复制代码
from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

client.create_collection(
    collection_name="collection_02",
    dimension=3,
    vector_field_name = 'field_name_1'
)

使用ATTU查看该表如下

什么时候创建多个向量字段

上述代码中,只创建了1个向量字段叫field_name_1,假设我的业务需求是图文搜索,用户有可能给一个图片,让我们根据图片搜索,也有可能给出一段商品描述,让我们根据描述搜索,这种情况下,我们就需要2个向量字段,一个字段用来存文字向量,一个用来存图片向量

如何创建多个向量字段

创建多个向量,需要使用schema,下面的代码创建一个collection_03表,包含两个字段,分别是field_name_1和field_name_2

cpp 复制代码
from pymilvus import MilvusClient,DataType

client = MilvusClient(uri="http://localhost:19530")
schema = client.create_schema()
# 主键字段必须要有,create_collection默认就有,现在是schema的方式,必须要手动指定
schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True, auto_id=True)
schema.add_field(field_name="field_name_1", datatype=DataType.FLOAT_VECTOR, dim=512)
schema.add_field(field_name="field_name_2", datatype=DataType.FLOAT_VECTOR, dim=512)
client.create_collection(
    collection_name="collection_03",
    dimension=3,
    schema = schema # 这里之前是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这有个链接,文章还没写完)

相关推荐
一木 之林1 天前
LangChain 第9章 RAG 与项目实战:文档切分、嵌入、Milvus 与客服知识库
人工智能·计算机视觉·langchain·milvus
今年下半年1 天前
AI智能体项目实战记录(05):RAG项目实战之向量知识库milvus部署
人工智能·llm·milvus·rag
BD_Marathon1 天前
Milvus数据库的DQL操作
milvus
xian_wwq1 天前
【学习笔记】Milvus 是什么?为什么 RAG 系统经常使用它?-14
笔记·学习·milvus
BD_Marathon2 天前
Milvus数据库的DML操作
数据库·milvus
BD_Marathon2 天前
Milvus使用指南
milvus
qq_452396232 天前
第七篇:《向量数据库选型:从 Chroma 到 Milvus 的落地对比》
数据库·milvus
xian_wwq3 天前
【学习笔记】Milvus 如何完成一次向量相似度检索,Milvus 索引到底应该怎么选?-15
笔记·学习·milvus
wespaul3 天前
VeapAI 自然语言操作实战|第 07 篇:执行层——编排引擎与全局语义命令
服务器·人工智能·milvus
wespaul3 天前
VeapAI 自然语言操作实战|第 06 篇:AiConsole 前端运行时——一个 Hub,八个注册表
前端·人工智能·milvus