更新时间:2026-07-20 GMT+08:00
分享

产品描述

背景

在大数据时代的浪潮中,数据量爆炸式增长,数据类型复杂化,特别是随着机器学习和人工智能的兴起,对于能够有效处理高维度、非结构化数据的需求日益迫切。这些非结构化数据(如图像、音频、视频和复杂文本等),通常以高维向量的形式表示,其处理和检索挑战着传统关系型数据库的极限。在这样的背景下,向量数据库应运而生,旨在满足这些新兴需求,提供更高效的数据处理和检索解决方案。

向量数据库概念

向量数据库是一种专门设计用于存储、管理和检索高维度向量数据的数据库系统。与传统关系型数据库相比,它们在数据模型、索引机制和查询处理上有显著的不同。向量数据库通过优化的索引技术(如近似最近邻搜索)来提高非结构化数据的检索效率,同时,它们也能够支持复杂的数据分析和机器学习模型,使得数据处理更加高效和智能。

应用场景

在大数据和机器学习模型迅速发展的当下,向量数据库在多个领域展现出其独特价值。从推荐系统到图像识别,从自然语言处理到复杂数据分析,向量数据库的高效检索能力和灵活的数据处理机制使其成为这些应用的理想选择。在这些场景中,向量数据库不仅加快了数据处理速度,还提高了分析的准确性和深度,为数据驱动的决策提供了强大的支持。

向量数据库的主要应用场景包括:

  • 推荐系统:例如,在视频推荐、新闻推荐、购物推荐等场景。
  • 图像识别:例如,通过图片搜索商品、人脸识别等场景。
  • 非结构化数据处理:例如,音频、视频、图像等数据可以通过转化处理得到相应的向量数据,再进行关键性分析。
  • 大模型智能问答系统:例如,向量数据库被用于改进语义搜索引擎,通过存储和检索文本内容的向量表达,提供更准确的搜索结果。

工作原理

向量数据库将当前主流的基于磁盘的向量检索算法融合进GaussDB数据库中,让数据库用户能够使用原生SQL进行向量类型数据的创建、导入和索引构建,查询计划生成以及高效向量检索;在当前版本中,用户可以将向量类型(FloatVector和BoolVector)当做原生类型一样使用,可以通过创建GsIVFFLAT索引或者GsDiskANN索引加速TopK ANN查询。GsIVFFLAT索引通过利用聚类算法将高维向量空间按照距离划分成不同的桶,然后向量检索过程中可以通过查询向量和向量分桶中心点的距离筛选出候选的向量检索集,因此检索代价相比于全量扫描会显著降低,如下图1所示。GsDiskANN索引的原理是对所有的向量点寻找最近邻向量,构建一个稀疏图结构,并且利用松弛系数产生一些捷径边(Shortcut Edge)加速查询,如下图2所示。在此基础上,GaussDB优化了数据删除逻辑,保证性能的基础上能够做到实时删除感知,并且长时间运行不损失精度。GaussDB向量索引支持高并发检索和修改,底层存储支持Astore和Ustore两种,支持MVCC并发控制。GaussDB向量数据库增加了日志类型,支持完整的高可用能力,比如集中式主备同步、并行回放、极致RTO等能力。
图1 GsIVFFLAT原理示意图
图2 GsDiskANN原理示意图
在大模型场景中,向量数据库作为大模型技术栈中的“海马体”,承担着长短期记忆的职责。具体来说分为三种能力,长期记忆、短期记忆和临时缓存,如图3所示。
图3 向量数据库在大模型时代的角色
  • 长期记忆:主要用于知识库场景。业务特点是万亿级别数据量,对于检索召回率要求很高,向量数据库可以通过相似检索对Prompt做补充,提高回答准确率和效率,解决大模型“幻觉”问题。
  • 短期记忆:主要用于会话上下文场景。业务特点是千亿级别数据量,要求高效的数据插入和检索,向量数据库可以通过相似检索补充新问题Prompt,生成新问题答案并且保存在数据库中。
  • 临时缓存:主要用于答案生成过程加速场景。业务特点是数据量大,要求高效的数据更新和检索,向量数据库临时保存之前出现过的字符前缀embedding以及需要产生的下一个字符,通过检索可以加速答案生成过程。

使用约束

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

当前版本使用分区表和分区索引时,避免分区DDL操作和二级分区索引的使用(包括分区合并,分区拆分,自动扩展分区等),可能会出现一些索引的错误。

相关文档