您需要在数据库中直接将文本转化为向量时,RDS PostgreSQL的rds_embedding插件为您提供了自定义模型配置和模型调用能力,使文本到向量的转换变得简单快捷,从而满足特定的数据处理需求。
您可以加入RDS PostgreSQL插件交流钉钉群(103525002795),进行咨询、交流和反馈,获取更多关于插件的信息。
背景
嵌入(embedding)是指将高维数据映射为低维表示的过程。在机器学习和自然语言处理中,嵌入通常用于将离散的符号或对象表示为连续的向量空间中的点。
在生成嵌入时,向量数据的值取决于所参照的模型数据,RDS PostgreSQL支持使用rds_embedding插件,将数据库中的文本内容,基于引入的外部模型,生成对应的向量数据,还支持使用向量相似度运算符,计算数据库内文本与模型中指定文本的相似度,实现更多业务场景。
前提条件
实例大版本为RDS PostgreSQL 14或以上。
说明暂不支持RDS PostgreSQL 17。
如实例大版本已满足要求,但仍提示不支持,请升级内核小版本,具体操作,请参见升级内核小版本。
本文使用的模型为阿里云模型服务灵积(dashscope)提供的通用文本向量模型,请先前往模型服务灵积管理控制台开通服务,并获取API-KEY。具体操作,请参见API-KEY的获取与配置。
说明除了本文使用的通用文本向量模型外,您还可以使用rds_embedding插件提供的函数添加其他模型,具体请参见rds_embedding插件提供的函数。
RDS PostgreSQL数据库默认不具备访问外部网络的能力,因此,需要为RDS PostgreSQL实例所属的VPC配置NAT网关,使其允许访问外部模型。NAT网关相关信息,请参见使用公网NAT网关SNAT功能访问互联网。
插件开启与关闭
请使用高权限账号执行如下命令。
开启插件。
开启
rds_embedding
插件前,需要先开启vector
插件,vector
插件提供了必要的向量数据类型支持和基础向量操作能力(计算向量之间的距离、相似度等),rds_embedding
插件专注于将高维文本数据转化为向量。CREATE EXTENSION vector; CREATE EXTENSION rds_embedding;
关闭插件。
DROP EXTENSION rds_embedding; DROP EXTENSION vector;
使用示例
创建测试表(test)。
CREATE TABLE test(info text, vec vector(1536) NOT NULL);
插入文本和其对应的向量数据。
INSERT INTO test SELECT '风急天高猿啸哀', rds_embedding.get_embedding_by_model('dashscope', 'sk-9****6', '风急天高猿啸哀')::real[]; INSERT INTO test SELECT '渚清沙白鸟飞回', rds_embedding.get_embedding_by_model('dashscope', 'sk-9****6', '渚清沙白鸟飞回')::real[]; INSERT INTO test SELECT '无边落木萧萧下', rds_embedding.get_embedding_by_model('dashscope', 'sk-9****6', '无边落木萧萧下')::real[]; INSERT INTO test SELECT '不尽长江滚滚来', rds_embedding.get_embedding_by_model('dashscope', 'sk-9****6', '不尽长江滚滚来')::real[];
说明本示例使用的函数rds_embedding.get_embedding_by_model()具体使用方法,请参见rds_embedding.get_embedding_by_model()。
计算文本
不尽长江滚滚来
与test表中各文本的向量相似度。SELECT info, vec <=> rds_embedding.get_embedding_by_model('dashscope', 'sk-9****6', '不尽长江滚滚来')::real[]::vector AS distance FROM test ORDER BY vec <=> rds_embedding.get_embedding_by_model('dashscope', 'sk-9****6', '不尽长江滚滚来')::real[]::vector;
返回结果示例:
info | distance ----------------+-------------------- 不尽长江滚滚来 | 0 无边落木萧萧下 | 0.6855717919553399 风急天高猿啸哀 | 0.7423166439170339 渚清沙白鸟飞回 | 0.7926204045363088 (4 rows)