首页 > 其他分享 >分区Partition

分区Partition

时间:2024-11-14 11:18:36浏览次数:1  
标签:partition shoes Doc 分区 Partition Collection collection

理解Partition

向量检索服务DashVector的Collection具有分区(Partition)的能力,同一个Collection下的Doc可通过不同的Partition进行物理和逻辑上的分区。各种Doc操作(如插入Doc、检索Doc等。若指定Partition,则该操作将限定在该指定的Paritition内进行。通过合理的Partition设置,可有效提升Doc操作的效率。

  • 同一个Collection下,可以创建若干个Partition,具体限制见约束与限制

  • 每个Partition通过唯一的名称进行标识,同一个Collection下的Partition名称不可重复;

  • 同一个Collection下的所有Partition,具有相同的Schema,如向量维度、向量数据类型、度量方式、Fields定义等;

  • 每个Collection默认自带一个无法删除的Partition,当各种Doc操作(如插入Doc、检索Doc等,不指定Partition时,等价于使用该默认Partition;

  • Partition需通过API调用显示的创建和删除。

Partition使用场景举例

在Collection中使用Partition能显著提高Query的性能,但并非所有场景都建议使用。当数据量较小时,使用Partition收益不明显。当数据量较大、但没有合适的划分字段时,同样不建议使用Partition。例如,如果没有合适的划分字段但又设置了多个Partition时,检索时可能需要跨多个Partition进行多次Query,检索性能将低于单个Partition的一次Query。

下面列举几个典型的适合Partition场景供参考。

电商图搜场景

例如某跨境电商用户,有2000w服装商品图片,需要实现以图搜图业务场景。商品有固定多个分类(鞋子,裙子,裤子等),商品提特征后按类别入库,每个分类对应一个Partition,查询时用户显示指定类别或用户不指定由分类模型确定类别。

视频监控场景

例如某视频监控厂商,需要对一工业园区的1000个摄像头采集的视频进行抽帧,识别提取车辆特征后,导入DashVector向量库用于后续搜索,生成车辆轨迹等业务场景,但数据只需保留30天,按日期每天创建Partition,并定期删除过期的Partition。

商标侵权检测

例如某商标代理商收集了一个5000w规模的商标数据库,需要快速查询相似商标判定是否侵权。按结构分为文本商标、图形商标、数字商标、字母商标等9个分类,每个分类数据入库DashVector时对应一个Partition。查询时指定Partition,只从特定类别中查询。

多语言问答系统

某电商国际化知识库团队,需要根据用户所使用的语言类别来查询对应语言的相似问题,比如要支持中文、英文、法文三种语言。在知识库内容经过Embedding后,分别导入Chinese、English、French三个Partition中,查询时,根据用户所使用的语言类别选择对应的Partition进行查询。

多租户

Partition也可用来支持多租户场景。例如某电商服务商为其下小微电商提供以图搜图能力,可在一个Collection中创建多个Partition对应多个客户,实现了数据的物理隔离、保证安全的同时,又节约了成本。

Partition使用示例

前提条件

  • 已创建Cluster
  • 已获得API-KEY
  • 已安装最新版SDK

代码示例

说明

需要使用您的api-key替换示例中的 YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

import dashvector

# 创建Client
client = dashvector.Client(
    api_key='YOUR_API_KEY',
    endpoint='YOUR_CLUSTER_ENDPOINT'
)
assert client

# 创建Collection
client.create(name='understand_partition', dimension=4)
collection = client.get('understand_partition')
assert collection


# 创建Partition,Partition名称为shoes
collection.create_partition(name='shoes')

# 描述Partition
ret = collection.describe_partition('shoes')
print(ret)

# 查看Partition列表
partitions = collection.list_partitions()
print(partitions)

# 插入Doc至Partition
collection.insert(
  ('1', [0.1,0.1,0.1,0.1]), partition='shoes'
)

# 向量相似性检索时指定Partition
docs = collection.query(
  vector=[0.1, 0.1, 0.2, 0.1],
  partition='shoes'
)
print(docs)

# 从指定Partition中删除Doc
collection.delete(ids=['1'], partition='shoes')

# 查看Partition统计数据
ret = collection.stats_partition('shoes')
print(ret)

# 删除Partition
collection.delete_partition('shoes')

标签:partition,shoes,Doc,分区,Partition,Collection,collection
From: https://www.cnblogs.com/DashVector/p/18545630

相关文章

  • Hive的分区和排序
    一、Hive的分区(十分重要)1、分区是什么答:我们可以把一个大的文件分隔成一个个小的文件,这样每次操作一个小文件就很方便了2、为什么要进行分区答:通过分区,当我们查询的时候,可以只扫描与条件相关的分区,这样做,避免了全局扫描,加快查询速度1、静态分区(SP)静态分区指的是,在我们将数......
  • 适用于 Windows 11/10/8/7/Vista/XP 的最佳免费分区软件
    无论您使用的是SSD、机械磁盘还是任何类型的RAID阵列,硬盘驱动器都是Windows计算机中不可或缺的组件。在将文件保存到全新磁盘之前,您应该初始化它,创建分区并使用文件系统格式化。在运行计算机一段时间后,您需要收缩、扩展、转换、复制磁盘分区等。可靠的磁盘分区工具可以帮......
  • Mysql表分区实操
    创建分区表createtableuser(idint(11)notnull,namevarchar(32)notnull)partitionbyrange(id)(partitionp0valueslessthan(10),partitionp1valueslessthan(20),partitionp2valueslessthan(30),partitionp3valueslessthanmaxvalue)分区表数据......
  • Mysql大表处理方案:分区详解
    前言在我们日常处理海量数据的过程中,如何有效管理和优化数据库一直是一个既重要又具有挑战性的问题,较为通用的做法就是分区、分表、分库了。那我们应该如何选择这几种方式呢?下面本人记录以下几种方式的优劣,希望能够帮助到大家。首先分区:数据库中分区是将表或索引的数据划分成......
  • Linux磁盘分区
    文章目录磁盘分区......
  • kafka消费者的消费分区策略有哪些,默认是哪个?
    Kafka消费者的分区分配策略主要有以下几种,分别决定了如何将多个分区分配给消费者:1.Range(范围分配)描述:将分区连续地分配给消费者。每个消费者负责一段连续的分区。如果有多个消费者,那么消费者会按照顺序被分配一段连续的分区。适用场景:适用于消费者之间的数据量差异较小,且需......
  • 消费者组和分区数之间的关系是怎样的?
    消费者组原理:ConsumerGroup(CG):消费者组,由多个consumer组成。形成一个消费者组的条件,使所有消费者的groupid相同。•消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费。•消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是......
  • Linux硬盘挂载与磁盘分区基础(一)(主分区、拓展分区、逻辑分区)
      我们常用windows时,会区分C盘、D盘之类的(A、B盘是软盘)就是所谓的分区,这么做为了方便数据管理,比如扩容之类的。  本文采用Linux(Ubuntu20.04)来介绍分区,其它Linux系统基本一样的。  首先,我们需要熟悉几个概念:  硬盘:存储数据用的硬件,比如移动硬盘、固态硬盘、U盘等,有了硬......
  • 关于hive分区表不得不说的故事
    关于hive分区表不得不说的故事1.hive分区表的理解Hive的分区表是一种特殊设计的表结构,它在逻辑上将数据按照预先定义的分区键进行划分,在物理上对应于Hadoop分布式文件系统(HDFS)的不同目录。分区表的主要目的是为了优化大规模数据集的存储与查询性能hive分区表主要是一种重要......
  • 第六章 分区
    对于大数据集或高吞吐量情况,仅复制数据不够,需进行分区(也叫分片)分区主要为了可扩展性,可将不同分区放于不共享集群的不同节点上,实现大数据集分布在多磁盘、查询负载分布在多处理器分区与复制每个节点可能是某些分区的领导者,同时是其他分区的追随者键值数据的分区将数据和查......