首页 > 其他分享 >Schema Free

Schema Free

时间:2024-11-07 10:32:36浏览次数:4  
标签:定义 预先 Python Doc Free Field Schema

向量检索服务DashVector在设计上支持Schema Free,在插入Doc、更新Doc、插入或更新Doc时,可设置任意KeyValue结构的字段(Field),如下所示:
Python示例:

collection.insert(
    Doc(
        id='1',
        vector=np.random.rand(4),
        fields={
            'name': 'zhangsan', 
            'weight':70.0, 
            'age':30, 
            'anykey1': 'anyvalue', 
            'anykey2': 1,
            'anykey3': True, 
            'anykey4': 3.1415926
            ... ...
        }
    )
)

说明

更多的Fields将消耗更多的资源(如内存、磁盘)

Field支持的数据类型

当前DashVector支持Python的4种基础数据类型:

  • str

  • float

  • int

  • bool

重要

Python的int类型可表达无限大小的整数,当前DashVector仅支持32位整数,范围为-2,147,483,648~2,147,483,647,需要用户自行保证数据未溢出。

检索时通过Field进行条件过滤

插入Doc、更新Doc、插入或更新Doc时所设置的任意KeyValue结构的字段(Field),可在检索Doc进行条件过滤,如下所示:
Python示例:

ret = collection.query(
    vector=[0.1, 0.2, 0.3, 0.4],
    filter='(age > 18 and anykey2 = 1) or (name like "zhang%" and anykey3 = false)'
)

说明

更多的Fields在检索时将消耗更多的资源(如CPU),同时复杂的filter表达式也将消耗更多的时间开销才能获取到结果

提前定义Field Schema的优势

在新建Collection的时候,可以预先定义Field Schema,如下所示:
Python示例:

ret = client.create(
    name='complex', 
    dimension=4, 
    fields_schema={'name': str, 'weight': float, 'age': int}
)

这样做的主要收益有如下3点:

  • 更快的检索速度 :条件过滤时,用预先定义的Field将会有更短的时间开销和更少的CPU算力开销

  • 更少的内存、磁盘占用 :未预先定义的Field,需要存储Field名称和Field值,而预先定义的Field仅存储Field值即可

  • filter预校验 :条件过滤时,预先定义的Field会校验filter的语法,当遇到类型不匹配时,会快速失败、立即返回;而未预先定义的Field,无法知道"正确"数据类型,无法进行预校验

通常而言,对于确定性的、大多数Doc都具有的Field,建议在新建Collection时候预先进行定义;对于无法提前预知、仅少量Doc独有的Field,可以在插入Doc时设置。

标签:定义,预先,Python,Doc,Free,Field,Schema
From: https://www.cnblogs.com/DashVector/p/18531661

相关文章

  • mysql的 information_schema 数据库介绍
    information_schema是MySQL中的一个系统数据库,它提供了关于数据库元数据的信息。元数据是指描述数据库结构和内容的数据,例如表、列、索引、用户权限等。information_schema数据库是只读的,用户不能对其进行修改。位置information_schema数据库存在于每个MySQL实例中,不需要......
  • freeswitch系列1-esl事件大全
    一、通用事件CUSTOM:自定义事件,通常由用户自定义的应用或模块触发,用于特定的业务逻辑通知。CLONE:通道克隆事件,可能在复制通道时触发,比如为了实现特定的呼叫转移或并行处理场景。ALL:表示捕获所有类型的事件,用于需要全面监控系统活动的情况。二、通道相关事件CHANNEL_CREATE:当创......
  • 第九章 FreeRTOS 任务切换
    9.1PendSV异常PendSV(可挂起的系统调用)异常对OS操作非常重要,其优先级可以通过编程设置。可以通过将中断控制和壮态寄存器ICSR的bit28,也就是PendSV的挂起位置1来触发PendSV中断。与SVC异常不同,它是不精确的,因此它的挂起状态可在更高优先级异常处理内设置,且会......
  • 解决mysql 的 [HY000][1356] View ‘information_schema.TABLES‘ references invalid
    同事在修改mysql用户权限时修改了关于mysql.infoschema的权限信息,导致无法访问information_schema库下的所有视图,使用数据库连接工具连接MySQL数据库时出现报错情况,使用MySQL终端登录并执行show命令同样报错。报错信息如下:ERROR1356(HY000):View'information_s......
  • Free5GC源码研究(8) - PCF研究(上)
    本文研究PolicyControlFunction(PCF)主要实现的功能前面研究过的AUSF、NRF、UDM、UDR、NSSF等,都是相对比较简单的NF。现在开始要着手研究一下更复杂的NF了。他们复杂即既是因为代码量大,也因为他们的逻辑与其他实体互相交织。比如PCF,就与AMF和SMF高度相关,也与UE和UPF紧密相连。......
  • FreeSQL学习
    FreeSQL是一款功能强大的对象关系映射组件,它支持.NETCore2.0+和.NETFramework4.0+。它允许开发者通过简单的接口连接和操作多种类型数据库,包括但不限于MySQL/PostgreSQL/SQLServer/SQLite等。FreeSQL主要特点包括:1.多数据库支持:FreeSQL支持多种数据库系统,包括MySQL/PostgreS......
  • FreeRtos中任务的有关理解
    osThreadNew 和 xTaskCreate 都是用于创建任务(线程)的函数,但它们属于不同的接口和框架。接口层级:xTaskCreate:是FreeRTOS的原生API直接用于创建任务,属于FreeRTOS的核心函数。这是一个更低级的接口,直接与FreeRTOS的调度器交互。osThreadNew:是根据CMSIS-RTOSA......
  • 关系型数据库一个Schema下有多个Table
    在数据库中,Schema(模式)是一种用于逻辑组织数据库对象的结构。它主要起到以下作用:组织数据库对象:Schema用于分组和管理数据库对象,如表、视图、存储过程等。它帮助开发者在一个数据库中更清晰地组织数据和代码,尤其是对于大型或复杂项目。访问控制:Schema也是数据库权限管理的......
  • FreeGetSSL是什么?
    在当今互联网时代,网络安全变得越来越重要。无论是个人网站还是企业平台,确保用户数据的安全传输已经成为不可忽视的一环。FreeGetSSL正是在这个背景下应运而生的服务之一,它为广大的网站所有者提供了一种简单、高效且免费的方式来增强网站的安全性。FreeGetSSL是什么?FreeGetSSL......
  • FreeRTOS操作系统1,介绍
    1操作系统1.1.1操作系统概述手机:点击相机(上位机顶层)---->操作系统----->打开摄像头(硬件底层)不上操作系统:相机--->打开摄像头:该情况下只有原相机可以打开摄像头,不支持第三方软件MCU:没上操作系统之前--->硬件上操作系统:MCU--->操作系统--->硬件图例:1.1.2常见操作系统Win......