AnalyticDB PostgreSQL版向量索引查询

简介: 本案例对比了传统查询和使用向量索引执行查询的执行时间,助您体验使用向量索引查询带来的高效和快捷。

AnalyticDB PostgreSQL版向量索引查询


1. 创建带向量索引的表并生成测试数据

创建数据库账号,实例详情页登录数据库,执行以下语句,创建向量检索插件。

CREATE EXTENSION IF NOT EXISTS fastann;
set optimizer=off

执行以下语句,创建带向量索引的表。

select exec_sql_on_pg_ann_codebooks('delete from pg_ann_codebooks');
CREATE DATABASE VEC;
CREATE SCHEMA vec;
CREATE TABLE 'vec'.'vector_test_for_sift' (
        'id' bigint NOT NULL,
        'shot_time' timestamp,
        'device_id' bigint,
        'feature_data' 'float4'[],
        PRIMARY KEY(id)
) DISTRIBUTED BY (id);
ALTER TABLE vec.vector_test_for_sift ALTER COLUMN shot_time SET STORAGE PLAIN;
ALTER TABLE vec.vector_test_for_sift ALTER COLUMN device_id SET STORAGE PLAIN;
ALTER TABLE vec.vector_test_for_sift ALTER COLUMN feature_data SET STORAGE PLAIN;
CREATE INDEX idx_vector_test_for_sift_device_id ON vec.vector_test_for_sift (device_id);
CREATE INDEX idx_vector_test_for_sift_shot_time ON vec.vector_test_for_sift (shot_time);
CREATE INDEX idx_vector_test_for_sift_feature_data ON vec.vector_test_for_sift USING ann(feature_data) WITH (dim=128,pq_segments=16,hnsw_m=16,external_storage=1);

2. 导入数据

将脚本adbpg_test_tools上传至ECS。

上传至已购买的ECS实例。

打开abdpg_test_tools文件夹,将“configuration/dbConf”文件中的信息修改为已购买AnalyticDB PostgreSQL 6.0版实例的信息,设置地址、端口、密码、数据、表名等连接信息。示例如下:


          

执行以下语句,生成10W测试数据。


          

执行以下语句,导入测试数据。


          

连接AnalyticDB PostgreSQL 6.0版实例,并执行ANALYZE命令。


          

3. 不使用向量索引进行查询

执行以下语句,不使用向量索引进行查询。


         

返回结果如下:


         

执行以下语句,查看执行计划。


         

返回结果如下:


         

可以看到,执行逻辑是先使用顺序扫描,然后再进行排序,总共耗时72ms.。

4. 使用向量索引进行查询

换用重载过的操作符 <-> 比较向量的距离,使用向量索引进行查询。


         

返回相同的查询结果:


         

执行以下语句,查看执行计划。


         

返回结果如下:


         

从执行计划可以看出,使用向量索引,耗时仅13ms。

将两种执行方式的结果求交集,统计数量,观察召回性能。


         

执行结果为:


         

从执行结果看到总共数量为10条,在这个示例中两者的执行结果完全相同,召回率良好。

实验链接:https://developer.aliyun.com/adc/scenario/d4b623253ba14b5595cf825518883062

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
9月前
|
存储 监控 关系型数据库
B-tree不是万能药:PostgreSQL索引失效的7种高频场景与破解方案
在PostgreSQL优化实践中,B-tree索引虽承担了80%以上的查询加速任务,但因多种原因可能导致索引失效,引发性能骤降。本文深入剖析7种高频失效场景,包括隐式类型转换、函数包裹列、前导通配符等,并通过实战案例揭示问题本质,提供生产验证的解决方案。同时,总结索引使用决策矩阵与关键原则,助你让索引真正发挥作用。
549 0
|
6月前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
673 0
|
SQL 数据库
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
210 2
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
480 2
|
JSON 关系型数据库 PostgreSQL
PostgreSQL 9种索引的原理和应用场景
PostgreSQL 支持九种主要索引类型,包括 B-Tree、Hash、GiST、SP-GiST、GIN、BRIN、Bitmap、Partial 和 Unique 索引。每种索引适用于不同场景,如 B-Tree 适合范围查询和排序,Hash 仅用于等值查询,GiST 支持全文搜索和几何数据查询,GIN 适用于多值列和 JSON 数据,BRIN 适合非常大的表,Bitmap 适用于低基数列,Partial 只对部分数据创建索引,Unique 确保列值唯一。
1252 15
|
SQL 数据库
LangChain-08 Query SQL DB 通过GPT自动查询SQL
LangChain-08 Query SQL DB 通过GPT自动查询SQL
235 3
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
1421 2
|
存储 人工智能 安全
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
580 0
|
机器学习/深度学习 存储 自然语言处理
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
436 0
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
1943 0

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 推荐镜像

    更多