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,
})
  

更多关于pgvector和Supabase资源的信息。