Schema Free
向量检索服务 DashVector 在设计上支持 Schema Free,在插入 Doc、更新 Doc、插入或更新 Doc 时,可设置任意 KeyValue 结构的字段(Field),如下所示:Python 示例:
说明
更多的 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 示例:
说明
更多的 Fields 在检索时将消耗更多的资源(如 CPU),同时复杂的 filter 表达式也将消耗更多的时间开销才能获取到结果
提前定义 Field Schema 的优势
在新建 Collection 的时候,可以预先定义 Field Schema,如下所示:Python 示例:
这样做的主要收益有如下 3 点:
更快的检索速度 :条件过滤时,用预先定义的 Field 将会有更短的时间开销和更少的 CPU 算力开销
更少的内存、磁盘占用 :未预先定义的 Field,需要存储 Field 名称和 Field 值,而预先定义的 Field 仅存储 Field 值即可
filter 预校验 :条件过滤时,预先定义的 Field 会校验 filter 的语法,当遇到类型不匹配时,会快速失败、立即返回;而未预先定义的 Field,无法知道"正确"数据类型,无法进行预校验
通常而言,对于确定性的、大多数 Doc 都具有的 Field,建议在新建 Collection 时候预先进行定义;对于无法提前预知、仅少量 Doc 独有的 Field,可以在插入 Doc 时设置。
版权声明: 本文为 InfoQ 作者【DashVector】的原创文章。
原文链接:【http://xie.infoq.cn/article/08b72ed6b32ab6030744ced50】。文章转载请联系作者。
评论