在使用Aiven for PostgreSQL®中启用使用pgvector的向量搜索
利用Aiven for PostgreSQL®中的pgvector进行向量搜索的功能启用。
2023年6月27日 could be paraphrased in Chinese as “2023年6月27日.”
通过使用pgvector在Aiven for PostgreSQL®上启用向量搜索功能。
我们宣布Aiven for PostgreSQL ® 现已支持pgvector扩展。通过这个功能,可以将向量化数据存储在数据库中,并使用SQL进行相似搜索。
利用PostgreSQL®的一致性保证、熟悉的SQL语法和丰富的分析函数,许多组织都在使用PostgreSQL®来进行数据存储和高级分析。然而,当解决需要类似搜索的机器学习功能的问题时,不得不将整个数据集迁移到其他平台,面临着数据陈旧和结果一致性缺失这两个问题。
今天,我们可以作为Aiven for PostgreSQL®的扩展功能之一,发布pgvector。通过pgvector,组织可以将数据向量化表示与其他数据列一起存储,并在SQL中执行相似性搜索。
使用pgvector的示例
在Aiven for PostgreSQL®上引入矢量化搜索意味着为客户数据带来新的功能。例如,使用pgvector可以实现以下功能:
-
- PostgreSQLのACID機能を使って、商品情報と在庫量を結合し、ベクトル検索を行うことで、在庫のある商品のみを提案するレコメンドシステムを構築する。
-
- ベクトル検索と傾向分析の力を組み合わせることによって、パターンを理解するための異常検知システムを構築し、良い行動を定義し、非準拠のシナリオに対してアラートを生成します。
-
- 大規模言語モデル(LLMs)と pgvector の組み合わせを活用することで、プロンプトに基づ いてカスタマイズされた洞察を提供するための 自然言語処理 パイプラインを構築する。これにより、自然言語による対話を通じて、企業の既存のドキュメンテーションの検索を強化することができる。
- 画像検出機械学習モデルとpgvectorを活用することで、物体検出や顔認識のような活動を行う。これには、PostgreSQLの他のデータ列から派生した追加入力による、オブジェクトパターンのカタログのフィルタリングも含まれます。
不管是电子商务、媒体、医疗保健还是其他行业,PGVector都可以添加新功能,增强推荐系统,并基于向量化数据进行更多基于信息的决策。例如,从电子商务场景中经常使用的商品推荐到媒体和医疗保健中非常常见的图像识别,都有各种不同的例子。
PGVector的概述
pgvector的基本功能是存储和比较PostgreSQL中的向量信息。向量表示是一种将数据表示为数字集合的方法,每个值表示数据的特征和属性。在这种表示中,数据被封装为向量。向量是一个具有大小和方向的数学对象。
向量表示是机器学习和自然语言处理中广泛使用的一种方法,被称为嵌入式,用来表示单词、短语、句子、图像和文档。在这些应用中,向量的每个维度对应于文本的特定特征,如特定单词的频率或该单词出现的上下文。
向量表示常被用于分类、聚类、相似性匹配等任务。通过将数据表示为向量,可以对两个向量之间的距离进行测量,计算两个向量的点积等数学运算。这些操作可以用来比较和分析数据,并从中获取有意义的见解。
pgvector使得在PostgreSQL中可以存储、搜索和比较向量,能够执行相似搜索,以确定具有共享查询项和本质特征或相似性的项或数据点。pgvector还可以构建或扫描完全或部分索引,以加速相似性搜索,并通过定义扫描的行数来交换搜索准确性和查询性能。
PGVector的优势
通过使用pgvector,可以在PostgreSQL的功能中添加向量搜索,并且不再需要在其他地方构建专用功能。该扩展提供了以下功能:
-
- したがって、PostgreSQLに接続できる全てのツールは、すぐに類似性検索クエリの恩恵を受けることができます。
-
- データ移動なし**: 既存のリレーショナルデータと一緒に埋め込みデータを格納することで、データのエクスポート、変換、照合を行うことなく、PostgreSQL上で直接クエリを実行することができます。
-
- 既存のアーキテクチャを強化します:PostgreSQLは既に組織で広く使用されており、pgvectorはプラグアンドプレイの拡張機能として提供され、データベースを追加することなく、あらゆるデータセットにベクトル検索機能を対応させることができます。
-
- ベクトル検索とトランザクションデータの混合**: ベクトル検索だけでは、かなり制限されることがあります。pgvectorの強力な点は、リレーショナルデータと一緒にベクトルの類似性関数を提供することで、ユーザが同じデータベースに格納されている他の列やテーブルに基づいて、追加の属性やフィルタでベクトルクエリを充実させることができることです。
- ACID+類似検索**:PostgreSQLをベースにしているため、ACID(原子性、一貫性、分離性、耐久性)特性の恩恵を受け、ベクトル類似検索と混在させることができます。
开始使用Aiven for PostgreSQL上的pgvector。
在Aiven for PostgreSQL的新版本13及以上中,支持pgvector。如果现有的Aiven for PostgreSQL版本是13及以上,想要启用pgvector,则需要检查维护更新。应用与pgvector相关的更新后,即可使用该扩展功能。
如果PostgreSQL实例装备了pgvector,可以通过SQL客户端(例如psql)连接并执行以下命令来启用扩展功能。
CREATE EXTENSION VECTOR
启用扩展功能后,您可以定义指定维度的VECTOR类型列。下面的示例中,我们创建了一个具有3维向量列的表格。
CREATE TABLE COLORS(COLOR TEXT PRIMARY KEY, RGB VECTOR(3));
现在可以将数据插入到COLORS表中了。
INSERT INTO COLORS VALUES ('RED','[255,0,0]');
INSERT INTO COLORS VALUES ('GREEN','[0,255,0]');
INSERT INTO COLORS VALUES ('BLUE','[0,0,255]');
INSERT INTO COLORS VALUES ('AQUA','[0,255,255]');
INSERT INTO COLORS VALUES ('BLACK','[0,0,0]');
INSERT INTO COLORS VALUES ('WHITE','[255,255,255]');
然后,计算COLORS表中现有颜色与粉红色(255,153,204)的欧几里得距离。
select *, rgb <-> '[255,153,204]' distance from colors order by 3;
结果表明,白色是最接近粉红色的颜色。
color | rgb | distance
--------+-----------------+--------------------
WHITE | [255,255,255] | 114.03946685248927
RED | [255,0,0] | 255
AQUA | [0,255,255] | 279.3385043276347
BLUE | [0,0,255] | 301.72006893808043
GREEN | [0,255,0] | 342.11840055746785
BLACK | [0,0,0] | 360.62445840513925
(6 rows)
价格和库存情况
Aiven for PostgreSQL在全球150多个地区的主要云服务提供商,如AWS、Google Cloud和Microsoft Azure上都可用。
pgvector扩展可在所有使用PostgreSQL版本13或更高版本的Aiven for PostgreSQL客户中使用。
在这份文档中,可以找到Aiven for PostgreSQL可用的所有扩展功能。
如果您希望免费开始使用Aiven for PostgreSQL,并希望获得更多的存储空间和高可用性,您可以选择创业、商业或高级计划。创业计划的价格从每小时$0.151起。
在事务数据中执行向量搜索。
Pgvector在任何PostgreSQL数据库上实现了向量搜索,并提供了一系列广泛的相似函数,可以通过与日常查询相同的SQL界面进行访问。
如果你想了解更多,只需要一个选项 :
pgvectorドキュメントを確認し、Aiven for PostgreSQLサービスでpgvector拡張を有効にして使用する手順をステップバイステップで理解してください。
pgvector GitHubリポジトリをチェックして、利用可能な演算子と関数のセットを理解してください。
pgvectorの実用的なデモをチェックしてください:Python、OpenCV、OpenAI CLIP、pgvectorによる画像認識