当前位置: 首页 > article >正文

主流信创数据库对向量功能的支持对比

主流信创数据库对向量功能的支持对比

  • 版本支持对比
  • 向量索引支持对比
  • 距离函数支持对比
  • 使用限制对比
    • OceanBase向量数据库
    • GaussDB向量数据库
    • TiDB向量数据库
    • VastBase向量数据库

⭐️ 本文章引用数据截止于2025年5月31日。

版本支持对比

数据库产品支持向量功能的版本
OceanBaseOceanBase数据库最早开始支持向量的版本是2024年3月发布的v4.3.0版本。最新的支持版本是v4.3.5 BP2
GaussDBGaussDB目前仅能确认2024年4月发布的v2.0-8.102主备版支持向量功能。
TiDBTiDB从2024年11月发布的v8.4.0开始支持向量(实验特性)。最新的支持版本是v8.5.1
VastBase海量数据库从2025年1月发布的v3.0 Build 8开始支持向量特性。最新的支持版本是v3.0 Build 8 (Patch No.1)

📖 目前国内主流信创数据库基本都是从2024年开始支持向量搜索功能的。而且对很多数据库产品来说目前都还是实验室特性,官方推荐的生产环境基线版本并不支持。例如OceanBase目前的基线版本是v4.2版本,而支持向量特性的最低版本是v4.3。

向量索引支持对比

数据库产品支持的向量索引类型
OceanBaseOceanBase最新版本(v4.3.5)支持HNSW索引、HNSW_SQ索引、HNSW_BQ索引、IVF索引。其中IVF索引为实验室特性。
GaussDBGaussDB的v2.0-8.102主备版支持IVF-Flat索引、DiskANN索引。
TiDBTiDB最新版本(v8.5)仅支持HNSW索引。
VastBaseVastBase最新版本(v3.0.8)支持HNSW索引、IVF-Flat索引、IVF-PQ索引、DiskANN索引。

📖 目前国内主流信创数据库对向量索引类型支持最全面的是VastBase,支持种类最少的数据库产品是TiDB。几乎所有向量数据库都支持HNSW索引。

距离函数支持对比

数据库产品支持的向量距离函数
OceanBaseL2_distance(欧几里得距离)、L1_distance(曼哈顿距离)、Cosine_distance(余弦相似度)、Inner_product(点积)、Negative_inner_product(负内积)、Vector_distance
GaussDBL2_distance(欧几里得距离)、Cosine_distance(余弦相似度)、vector_spherical_distance(球面距离)、Inner_product(点积)、Negative_inner_product(负内积)
TiDBL2_distance(欧几里得距离)、L1_distance(曼哈顿距离)、Cosine_distance(余弦相似度)、Negative_inner_product(负内积)
VastBaseL2_distance(欧几里得距离)、Cosine_distance(余弦相似度)、vector_spherical_distance(球面距离)、Inner_product(点积)、Negative_inner_product(负内积)

📖 目前国内主流信创数据库基本都支持计算欧几里得距离、余弦相似度、内积和负内积。个别产品还支持计算曼哈顿距离和球面距离。

使用限制对比

OceanBase向量数据库

  1. OceanBase向量数据库目前仅MySQL租户模式支持向量检索,Oracle租户模式暂不支持。
  2. OceanBase向量数据库最高支持16000维的Float类型的稠密向量数据存储,同时也支持稀疏向量数据存储。
  3. OceanBase向量数据库中对超过4096维的向量建索引时,需要对数据做维度压缩,压缩到4096维以内之后再建索引。
  4. OceanBase向量数据库支持使用SQL和Python SDK两种协议方式进行向量检索。
  5. OceanBase向量数据库支持与OpenAI API、通义千问API、Langchain、LlamaIndex等主流AI框架集成。

GaussDB向量数据库

  1. 当前版本只支持单机部署,集中式部署;不支持分布式和小型化部署。
  2. 创建表维度不能超过1024,即维度范围在[1, 1024]
  3. 不支持创建分布表全局索引(gpi)。
  4. 向量索引不支持创建Unique索引。
  5. 向量索引不支持聚簇排序。
  6. 向量索引不支持创建多列索引。
  7. floatvector和boolvector不支持作为分区键。
  8. floatvector和boolvector不支持创建主键。
  9. floatvector和boolvector不支持创建Unique键。
  10. floatvector和boolvector不支持为NULL值。
  11. dblink暂不支持vector类型,因此也不支持向量索引创建。
  12. 向量索引不支持备机可读。
  13. 向量索引不支持增量构建,不支持在线创建。
  14. Floatvector和boolvector类型不支持创建除向量索引以外的索引(例如btree和ubtree)。
  15. 当前向量索引只支持距离TopK语句(按照距离升序排序),其他距离操作不进行索引。
  16. 索引构建时间较长,内存规格低的场景需要预留构建时间。
  17. 图索引空间膨胀率较大,磁盘规格低的场景无法创建成功。
  18. 向量检索是资源密集型操作,如果同时进行多个业务,会影响性能。
  19. 不支持unlogged、temp表构建向量索引。
  20. 使用ustore索引,相比于astore索引空间增长10%以内,检索时延增加5%。
  21. 索引依赖Vacuum进行空间回收,两次Vacuum之间如果存在频繁增删,向量检索会出现效率下降、空间膨胀的问题。
  22. 索引类型不支持统计信息,选择率估计使用默认值,有代价估计,但是目前只支持索引和顺序扫描进行选择。

TiDB向量数据库

  1. 集群需要提前部署TiFlash节点。
  2. 向量搜索索引不能作为主键或者唯一索引。
  3. 向量搜索索引只能基于单一的向量列创建,不能与其他列(如整数列或字符串列)组合形成复合索引。
  4. 创建和使用搜索向量索引时需要指定距离函数。目前只支持余弦距离函数VEC_COSINE_DISTANCE()和L2距离函数VEC_L2_DISTANCE()
  5. 不支持在同一列上创建多个使用了相同距离函数的向量搜索索引。
  6. 不支持直接删除具有向量搜索索引的列。可以通过先删除列上的向量搜索索引,再删除列的方式完成删除。
  7. 不支持修改带有向量索引的列的类型。
  8. 不支持将向量搜索索引设置为不可见。
  9. 不支持在开启了静态加密的TiFlash节点上构建向量搜索索引。

VastBase向量数据库

  1. 不允许建立超过16000个维度的向量字段。DiskANN索引支持在不超过2048维度的字段上建立。其他向量索引仅支持在不超过2000维度的字段上建立。

  2. 不支持以下向量运算符:

  • ||(拼接两个向量)
  • *(两个向量逐元素相乘)
  • <+>(计算两个向量之间的曼哈顿距离)
  1. 不支持以下向量比较符:
  • =(用于判断两个向量的所有对应元素是否完全相等)
  • >(用于判断一个向量是否大于另一个向量)
  • <(用于判断一个向量是否小于另一个向量)
  • >=(用于判断一个向量是否大于等于另一个向量)
  • <=(用于判断一个向量是否小于等于另一个向量)
  • <>(用于判断两个向量是否不同)
  • !=(用于判断两个向量是否不同)
  • BETWEEN(判断向量是否在指定范围内)
  1. count()之外, 向量字段不支持其他聚合函数。
  2. 向量字段不支持unioncol in(...)语法。
  3. 向量字段不能用在GROUP BY/ORDER BY子句中。
  4. 向量字段不能作为主键或唯一性约束。
  5. 建立索引删除/更新大量数据后应先vaccum再重建索引。
  6. 匿名块绑定变量仅支持返回text类型,不支持返回驱动定义的PGvector类型。
  7. IVF-PQ子查询受外层LIMIT子句影响,可能导致查询召回率下降。
  8. 索引返回元组数可能少于走全表扫描的数据或者LIMIT子句指定的数量。
  9. 向量标量混合查询,走索引查询返回的结果可能少于走全表扫描的结果。

Referecnes
【1】https://doc.hcs.huawei.com/zh-cn/gaussdb/doc/download/pdf/gaussdb-vector-cent.pdf
【2】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002012936
【3】https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002046118
【4】https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/5e3842f9085a4fd5b491f3203651ff7d
【5】https://docs.pingcap.com/zh/tidb/stable/release-8.4.0/
【6】https://docs.pingcap.com/zh/tidb/stable/vector-search-overview/
【7】https://docs.pingcap.com/zh/tidb/stable/vector-search-index/

http://www.lryc.cn/news/2403993.html

相关文章:

  • Matlab | matlab中的画图工具详解
  • HA: Wordy靶场
  • 6.7本日总结
  • 中国移动6周年!
  • Svelte 核心语法详解:Vue/React 开发者如何快速上手?
  • Fullstack 面试复习笔记:HTML / CSS 基础梳理
  • 408第一季 - 数据结构 - 树与二叉树II
  • 打卡第47天
  • 从上下文学习和微调看语言模型的泛化:一项对照研究
  • 智慧城市建设方案
  • phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型
  • pygame开发的坦克大战
  • C++2025.6.7 C++五级考题
  • 【原神 × 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密!
  • 功能安全实战系列09-英飞凌TC3xx LBIST开发详解
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
  • RT-Thread内核组成——内核移植
  • Docker_Desktop开启k8s
  • MS2691 全频段、多模导航、射频低噪声放大器芯片,应用于导航仪 双频测量仪
  • 基于Java(SpringBoot、Mybatis、SpringMvc)+MySQL实现(Web)小二结账系统
  • Java泛型中的通配符详解
  • Java方法引用深度解析:从匿名内部类到函数式编程的演进
  • 三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
  • 越狱蒸馏-可再生安全基准测试
  • 64、js 中require和import有何区别?
  • 手机号段数据库与网络安全应用
  • Kafka 入门指南与一键部署
  • MATLAB实战:视觉伺服控制实现方案
  • Oracle正则表达式学习
  • 校招 java 面试基础题目及解析