在 Cloud SQL for PostgreSQL 上启用 pgvector

本文档记录了如何在 Google Cloud SQL (PostgreSQL 13+) 实例上启用 pgvector 扩展,以支持向量数据库功能(如向量存储和相似度搜索)。

1. 简介

pgvector 是 PostgreSQL 的一个开源扩展,用于存储和查询向量嵌入(Vector Embeddings)。Google Cloud SQL 已经内置了对该扩展的支持。

此外,Google 还提供了专有的性能优化(ScaNN 索引),可以通过配置 Flags 开启。

2. 操作步骤

启用过程分为两个部分:基础设施配置(Terraform)和数据库内部配置(SQL)。

2.1 步骤一:启用 Google 向量辅助优化 (Terraform)

为了获得更好的向量搜索性能(特别是支持 ScaNN 索引),建议在 Cloud SQL 实例级别启用 cloudsql.enable_vector_assist 标志。

操作: 修改 Terraform 代码 (instance.tf),在 google_sql_database_instancesettings 块中添加 database_flags

hcl 复制代码
resource "google_sql_database_instance" "main" {
  # ... 其他配置 ...
  
  settings {
    # ... 其他配置 ...

    # 添加以下 Flag
    database_flags {
      name  = "cloudsql.enable_vector_assist"
      value = "on"
    }
  }
}

应用更改:

执行 terraform apply

⚠️ 注意 :修改数据库 Flags 通常会触发 Cloud SQL 实例重启,请在维护窗口进行操作。

2.2 步骤二:安装扩展 (SQL)

基础设施配置完成后,还需要在具体的数据库中"安装"扩展。这一步必须通过连接数据库执行 SQL 命令来完成,无法直接通过 Terraform 资源(除非使用专门的 postgresql provider)完成。

连接数据库:

你可以通过 Cloud SQL Auth Proxy、Bastion Host 或配置好的 Envoy 代理连接到数据库。

bash 复制代码
psql -h [DB_IP] -p 5432 -U [USERNAME] -d [DB_NAME]

执行安装命令:

psql 提示符下执行:

sql 复制代码
CREATE EXTENSION IF NOT EXISTS vector;

验证安装:

执行 \dx 查看已安装的扩展:

复制代码
default_db=> \dx
                                      List of installed extensions
  Name   | Version |   Schema   |                     Description
---------+---------+------------+------------------------------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
 vector  | 0.8.0   | public     | vector data type and ivfflat and hnsw access methods
(2 rows)

看到 vector 出现在列表中即表示成功。

3. 常见问题 (FAQ)

Q: 我需要下载 pgvector 的安装包吗?
A: 不需要。Cloud SQL 的系统镜像中已经预装了 pgvector 的二进制文件。你只需要执行 CREATE EXTENSION 命令来在你的数据库中启用它。

Q: cloudsql.enable_vector_assist 是必须的吗?
A: 不是强制的,但强烈推荐。它启用了 Google 对向量搜索的底层优化(如 ScaNN 索引支持),能显著提升查询性能。如果不开启,你只能使用标准的 HNSW 或 IVFFlat 索引。

Q: 支持哪些 PostgreSQL 版本?
A: pgvector 支持 PostgreSQL 11+,但 Google 的 vector_assist 优化通常在较新的版本(如 PG 13, 14, 15+)中支持更好。本项目使用的是 PostgreSQL 13。

相关推荐
填满你的记忆10 分钟前
10万QPS下,Redis缓存如何避免雪崩?
数据库·redis·缓存
IT界的老黄牛23 分钟前
MongoDB 主从切换排查实战:从 docker ps 到 jq,一套 SOP 定位死因
数据库·mongodb·docker
睡不醒男孩03082324 分钟前
第四篇:数据库国产化与信创替代的守护者:基于CLup的异构数据库一站式运维平台构建
运维·数据库·金融·clup·中启乘数
Lumistory24 分钟前
2026年城市照明工程4大核心痛点及解决方案
大数据·数据库
岳麓丹枫00134 分钟前
PG数据库无法接受连接问题分析定位
数据库·postgresql
JdSnE27zv1 小时前
SQLite内存数据库
数据库·sql·sqlite
SelectDB技术团队1 小时前
预约发布会|核心产品力首发,如何构建面向 Agent 时代的企业级数据引擎
数据库·数据仓库·人工智能·数据分析·可观测·apache doris·selectdb
2601_961845151 小时前
2026四级作文预测题|英语四级写作押题+提纲PDF
java·c语言·数据库·c++·python·pdf·php
计算机安禾1 小时前
【数据库系统原理】第13篇:现实世界的概念抽象:实体-联系模型向关系模型的转化策略
数据库
JAVA面经实录9171 小时前
NoSQL 非关系型数据库【简洁版】
java·数据库·nosql