使用 Supabase 和 PostgreSQL 打造自查询向量检索系统

Supabase 是一个开源的 Firebase 替代方案,建立在功能强大的 PostgreSQL 之上,使得 SQL 查询能力得到充分发挥,同时也能与现有工具和框架简单集成。Supabase 提供了一套开源工具包,旨在使用 PostgreSQL 和 pgvector 开发 AI 应用。通过 Supabase 客户端库,我们可以在大规模下存储、索引和查询向量嵌入。

在这篇文章中,我们将展示如何使用 Supabase 和 Postgres 创建一个自查询检索器。具体来说,我们将:

  1. 创建一个 Supabase 数据库
  2. 启用 pgvector 扩展
  3. 创建一个文档表格和 match_documents 函数,以便让 SupabaseVectorStore 使用
  4. 向向量存储(数据库表)加载示例文档
  5. 构建并测试一个自查询检索器

设置 Supabase 数据库

首先,前往 https://database.new 来配置您的 Supabase 数据库。在 Supabase Studio 中,跳转到 SQL 编辑器并运行以下脚本来启用 pgvector 并将您的数据库设置为向量存储:

-- Enable the pgvector extension to work with embedding vectors
create extension if not exists vector;

-- Create a table to store your documents
create table
  documents (
    id uuid primary key,
    content text, -- corresponds to Document.pageContent
    metadata jsonb, -- corresponds to Document.metadata
    embedding vector (1536) -- 1536 works for OpenAI embeddings, change if needed
  );

-- Create a function to search for documents
create function match_documents (
  query_embedding vector (1536),
  filter jsonb default '{}'
) returns table (
  id uuid,
  content text,
  metadata jsonb,
  similarity float
) language plpgsql as $$
#variable_conflict use_column
begin
  return query
  select
    id,
    content,
    metadata,
    1 - (documents.embedding <=> query_embedding) as similarity
  from documents
  where metadata @> filter
  order by documents.embedding <=> query_embedding;
end;
$$;

创建 Supabase 向量存储

接下来,我们要创建一个 Supabase 向量存储,并用一些数据进行初始化。确保安装最新版本的 langchain,支持 OpenAI 的功能:

%pip install --upgrade 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值