pgvector: 嵌入向量和向量相似性

pgvector 是一款用于向量相似性搜索的 PostgreSQL 扩展。它还可以用于存储 嵌入向量

了解更多关于 Supabase 的 AI & Vector 服务的信息。

概念

向量相似性

向量相似性是指衡量两个相关项之间相似程度的度量方式。例如,如果你有一组产品列表,你可以使用向量相似性来寻找相似的产品。为了实现这个目标,你需要使用数学模型将每个产品转换为由数字组成的"向量"。对于文本、图像和其他类型的数据,你可以使用类似的模型。一旦所有这些向量都存储在数据库中,你就可以使用向量相似性来查找相似的项。

嵌入向量

如果您正在构建基于 OpenAI 的 GPT-3 的应用程序,这将非常有用。您可以创建和存储与您使用的 GPT 模型相匹配的 嵌入向量

使用方法

启用扩展

  1. 跳转控制台的 数据库 页面。
  2. 点击侧栏中的 扩展
  3. 搜索 "vector" 并启用扩展。

创建一个表来存储向量

1create table posts (
2  id serial primary key,
3  title text not null,
4  body text not null,
5  embedding vector(1536)
6);

存储一个向量

在这个示例中,我们将使用OpenAI API客户端生成一个向量,然后使用Supabase客户端将其存储在数据库中。

1const title = 'First post!'
2const body = 'Hello world!'
3
4// Generate a vector using OpenAI
5const embeddingResponse = await openai.createEmbedding({
6  model: 'text-embedding-ada-002',
7  input: body,
8})
9
10const [{ embedding }] = embeddingResponse.data.data
11
12// Store the vector in Postgres
13const { data, error } = await supabase.from('posts').insert({
14  title,
15  body,
16  embedding,
17})

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