pgvector: 嵌入向量和向量相似性
pgvector 是一款用于向量相似性搜索的 PostgreSQL 扩展。它还可以用于存储 嵌入向量 。
了解更多关于 Supabase 的 AI & Vector 服务的信息。
概念
向量相似性
向量相似性是指衡量两个相关项之间相似程度的度量方式。例如,如果你有一组产品列表,你可以使用向量相似性来寻找相似的产品。为了实现这个目标,你需要使用数学模型将每个产品转换为由数字组成的"向量"。对于文本、图像和其他类型的数据,你可以使用类似的模型。一旦所有这些向量都存储在数据库中,你就可以使用向量相似性来查找相似的项。
嵌入向量
如果您正在构建基于 OpenAI 的 GPT-3 的应用程序,这将非常有用。您可以创建和存储与您使用的 GPT 模型相匹配的 嵌入向量 。
使用方法
启用扩展
- 跳转控制台的 数据库 页面。
- 点击侧栏中的 扩展 。
- 搜索 "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})