AI 与向量

Python客户端

在PostgreSQL中管理非结构化向量存储


Supabase 提供了一个名为 vecs 的 Python 客户端,用于管理非结构化向量存储。该客户端提供了一系列实用工具,可通过 pgvector 扩展在 Postgres 中创建和查询集合。

快速开始

让我们通过本地数据库来了解 Vecs 的工作原理。请确保您的机器上已安装 Supabase CLI。

初始化项目

在任何文件夹中使用 initstart 命令启动本地 Postgres 实例。请确保 Docker 正在运行!

1
2
3
4
5
# 初始化项目supabase init# 启动 Postgressupabase start

创建集合

在 Python shell 中运行以下命令,创建一个名为 "docs" 的 3 维集合:

1
2
3
4
5
6
7
import vecs# 创建向量存储客户端vx = vecs.create_client("postgresql://postgres:postgres@localhost:54322/postgres")# 创建 3 维向量集合docs = vx.get_or_create_collection(name="docs", dimension=3)

添加嵌入向量

现在我们可以使用 upsert() 命令向 "docs" 集合插入一些嵌入向量:

1
2
3
4
5
6
7
8
9
10
11
12
13
import vecs# 创建向量存储客户端docs = vecs.get_or_create_collection(name="docs", dimension=3)# 3 维向量集合vectors=[ ("vec0", [0.1, 0.2, 0.3], {"year": 1973}), ("vec1", [0.7, 0.8, 0.9], {"year": 2012})]# 插入向量docs.upsert(vectors=vectors)

查询集合

现在可以查询集合以获取相关匹配:

1
2
3
4
5
6
7
8
9
10
import vecsdocs = vecs.get_or_create_collection(name="docs", dimension=3)# 查询集合,筛选元数据中 "year" = 2012 的记录docs.query( data=[0.4,0.5,0.6], # 必需参数 limit=1, # 返回记录数 filters={"year": {"$eq": 2012}}, # 元数据筛选条件)

深入探索

如需深入了解 vecs 集合,请参阅 API 文档

相关资源