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推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
5天前
|
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 确保列值唯一。
|
6月前
|
监控 关系型数据库 数据库
PostgreSQL的索引优化策略?
【8月更文挑战第26天】PostgreSQL的索引优化策略?
144 1
|
3月前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
624 1
|
4月前
|
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向量化 增强检索
236 2
|
4月前
|
存储 人工智能 安全
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
139 0
|
4月前
|
机器学习/深度学习 存储 自然语言处理
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
85 0
|
6月前
|
Java 数据库连接 数据库
实时数仓 Hologres产品使用合集之怎么查询版本
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
6月前
|
SQL 关系型数据库 专有云
实时数仓 Hologres产品使用合集之如何针对模糊匹配查询设置索引
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
6月前
|
监控 Java 数据库连接
实时数仓 Hologres产品使用合集之查询结果条数不同是什么原因
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
6月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
657 0

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 云原生数据仓库 AnalyticDB PostgreSQL版