本页
pgvector: 嵌入向量和向量相似性
pgvector 是一款用于向量相似性搜索的 PostgreSQL 扩展。它还可以用于存储 嵌入向量 。
了解更多关于 Supabase 的 AI & Vector 服务的信息。
概念
向量相似性
向量相似性是指衡量两个相关项之间相似程度的度量方式。例如,如果你有一组产品列表,你可以使用向量相似性来寻找相似的产品。为了实现这个目标,你需要使用数学模型将每个产品转换为由数字组成的"向量"。对于文本、图像和其他类型的数据,你可以使用类似的模型。一旦所有这些向量都存储在数据库中,你就可以使用向量相似性来查找相似的项。
使用方法
启用扩展
创建一个表来存储向量
create table posts (
id serial primary key,
title text not null,
body text not null,
embedding vector(1536)
);
存储一个向量
在这个示例中,我们将使用OpenAI API客户端生成一个向量,然后使用Supabase客户端将其存储在数据库中。
const title = 'First post!'
const body = 'Hello world!'
// Generate a vector using OpenAI
const embeddingResponse = await openai.createEmbedding({
model: 'text-embedding-ada-002',
input: body,
})
const [{ embedding }] = embeddingResponse.data.data
// Store the vector in Postgres
const { data, error } = await supabase.from('posts').insert({
title,
body,
embedding,
})