AnalyticDB PostgreSQL版向量索引查询

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 本案例对比了传统查询和使用向量索引执行查询的执行时间,助您体验使用向量索引查询带来的高效和快捷。

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

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
2月前
|
存储 SQL 关系型数据库
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
拉卡拉早期基于 Lambda 架构构建数据系统面临存储成本高、实时写入性能差、复杂查询耗时久、组件维护复杂等问题。为此,拉卡拉选择使用 Apache Doris 替换 Elasticsearch、Hive、Hbase、TiDB、Oracle / MySQL 等组件,实现了 OLAP 引擎的统一、查询性能提升 15 倍、资源减少 52% 的显著成效。
拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%
|
8月前
|
SQL 数据库
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果
81 2
|
4月前
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
112 2
|
10月前
|
机器学习/深度学习 SQL 数据挖掘
ADB优化器背后的秘密:如何用成本估算和规则引擎编织高效的查询网络?
【8月更文挑战第27天】AnalyticDB (ADB) 是一款专为大规模数据集设计的高性能分析型数据库。本文深入探讨ADB的优化器如何通过成本估算、规则引擎及机器学习等策略生成高效执行计划。成本估算是选择最优路径的关键;规则引擎通过谓词下推等手段优化查询;机器学习则使优化器能基于历史数据预测执行效率。结合示例代码与执行计划分析,展现了ADB在提升查询性能方面的强大功能。未来,ADB将继续进化以满足日益增长的大数据分析需求。
136 0
|
7月前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
1167 1
|
8月前
|
SQL 数据库
LangChain-08 Query SQL DB 通过GPT自动查询SQL
LangChain-08 Query SQL DB 通过GPT自动查询SQL
67 3
|
8月前
|
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向量化 增强检索
586 2
|
8月前
|
存储 人工智能 安全
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
313 0
|
8月前
|
机器学习/深度学习 存储 自然语言处理
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
160 0
|
10月前
|
Java 数据库连接 数据库
实时数仓 Hologres产品使用合集之怎么查询版本
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。

热门文章

最新文章

相关产品

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

    更多
    下一篇
    oss创建bucket