# UDB PostgreSQL新增支持pgvector向量数据库插件

> 作者/来源: UCloud官方/历史归档
> 发布时间: 2023-09-15T03:19:38.000Z
> 分类: AI专区
> 标签: pgvector, 向量数据库, AIGC
> 原文链接: http://117.50.162.249:3000/yun/articles/2613

---

目前，AIGC领域正处于蓬勃发展的阶段，同时大规模数据集的使用和计算资源用量提升，也为AIGC业务架构底层的基础设施提出了更高的要求。为了更好地支持AIGC业务的发展，UCloud在**数据中心建设、网络、文件存储、主机镜像市场等**多个方面都提供了相关产品和解决方案。

数据库方面，在云主机镜像市场[已支持Milvus向量数据库](http://mp.weixin.qq.com/s?__biz=MjM5NDE0MjI4MA==&mid=2656316747&idx=1&sn=75a6a790ecf2619139f2bb39e4aaf8f2&chksm=bd2ccc6c8a5b457a7c0d7527b72cfbdeece875f1ce568d3785988a6b9f17547bbccc09c7604c&scene=21#wechat_redirect)的基础上，UCloud云数据库UDB中的PostgreSQL（以下简称UPgSQL）还新增支持了**pgvector向量数据库插件**，持续在AIGC业务架构中所涉及的向量数据库环节完善产品支持。

**pgvector的特点及使用场景**

pgvector是PostgreSQL数据库的扩展插件，其设计目的是让用户能够在现有的PostgreSQL数据库上实现向量搜索和计算，而无需引入额外的向量数据库，主要特点如下：



** 和PostgreSQL数据库深度集成**

pgvector作为PostgreSQL数据库的一个扩展插件，它允许在PostgreSQL数据库中存储和查询向量数据，无需迁移数据或更改应用程序架构，从而**降低了集成的复杂性****。如果业务架构已经在使用 PostgreSQL，而且希望快速地添加向量数据支持，pgvector 是一个便捷的选择。**



** SQL简单易用**

pgvector使用标准SQL查询语言，适合于熟悉 SQL查询的用户，而Milvus等专业向量数据库则是提供了自己的查询语言和 API。



** 数据模型可以灵活组合**

pgvector允许用户将向量数据存储在表中的特定列中，同时允许将向量数据与其他属性数据混合在一起。这种灵活性使得**用户可以在单一查询中同时处理向量数据和其他结构化数据，从而满足更广泛的分析需求。**



** 开箱即用**

UDB UPgSQL数据库产品已经内置了pgvector插件，可以在实例创建成功后直接开始使用，无需进行额外的配置。**与Milvus等向量数据库相比，这种集成方式减少了学习和配置的成本。**

**UCloud pgvector数据库快速入门**

pgvector最大支持创建16000个维度的向量， 并可以对最大2000个维度的向量建立索引。云数据库UPgSQL默认已经安装并启用pgvector插件，**以下是商品搜索与推荐系统案例中使用pgvector的具体步骤：**

1.在UCloud UPgSQL控制台创建一台PostgreSQL数据库实例，通过root用户登录数据库。

2.创建一个商品表，其中包含商品的名称、描述和特征向量。

CREATE TABLE products (

    id SERIAL PRIMARY KEY,

    name TEXT,

    description TEXT,

    vector_data vector

);

3.向商品表中插入一些商品数据，包括商品名称、描述以及与其相关的特征向量。

INSERT INTO products (name, description, vector_data)

VALUES

('Smartphone', 'High-performance smartphone with advanced features.', '[0.2, 0.6, 0.8]'),

('Laptop', 'Powerful laptop for productivity and entertainment.', '[0.7, 0.3, 0.5]'),

('Headphones', 'Wireless headphones with immersive sound quality.', '[0.4, 0.1, 0.9]');

4. 当搜索商品时，可以使用向量相似度来执行智能的商品搜索。

SELECT name, description

FROM products

WHERE (1 -(vector_data <=> '[0.6, 0.5, 0.7]')) > 0.6;

5.基于用户的历史购买记录或浏览行为，可以计算用户的偏好向量，然后根据相似度来为用户推荐其他商品。

SELECT name, description,(1-(vector_data <=> '[0.7, 0.3, 0.5]')) AS similarity

FROM products

ORDER BY similarity DESC

LIMIT 5;

6.创建索引：为了提高查询效率， pgvector支持为向量数据建立IVF-Flat索引，可以通过下列语句创建索引。

CREATE INDEX ON products USING ivfflat (vector_data vector_cosine_ops) WITH (lists = 100);

 

**创建索引语句的参数说明：**

- CREATE INDEX ON products表示在 "products" 表上创建一个新的索引。

- USING ivfflat: 这部分指定了要使用的索引方法，即 "ivfflat"。

- (vector_data vector_cosine_ops):  "vector_data" 是列的名称， "vector_cosine_ops" 是指向量余弦相似度操作符，这表明你希望使用余弦相似度来优化这个索引。

- WITH (lists = 100): "lists" 参数设置为 100，是为了控制索引中的列表数量，以便在向量搜索时进行更有效的查询。

更多使用方法详见pgvector官方文档。（https://github.com/pgvector/pgvector）

 

UDB作为UCloud云平台的核心产品，为广大用户提供了多样化的数据库选择，覆盖了MySQL、PostgreSQL、SQL Server、MongoDB等常用数据库品类。**UDB PostgreSQL数据库支持pgvector插件后，可以通过创建UDB PostgreSQL数据库快速获得pgvector功能，无需额外的配置。**

同时，如果需要专业的向量数据库功能，也可以使用**UCloud镜像市场中的Milvus镜像**，创建对应主机获取Milvus向量数据库服务。作为一款开源向量数据库，Milvus专注于高性能的向量数据存储与检索。它的设计旨在处理大规模的向量数据，包括图像、文本、音频等各个领域的向量特征。Milvus以高效的相似性搜索和向量计算为特色，满足了多领域数据探索和分析的需求。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/wechat/images/ccc1e78f72211812.png)

更多产品和方案咨询，欢迎扫码交流