在本篇文章中,我们将介绍如何使用自然语言结构化查询 Supabase 数据库。Supabase 是一个开源的 Firebase 替代品,构建在 PostgreSQL 之上。通过使用 pgvector
来存储嵌入向量,可以使得数据库的查询更为智能和高效。
技术背景介绍
Supabase 提供了一种现代化的数据库管理方式,通过对 PostgreSQL 的扩展,增加了许多类似 Firebase 的功能。在这个指南中,我们利用 pgvector
扩展来实现对嵌入的操作,从而实现对自然语言的支持。
核心原理解析
pgvector
是一个 PostgreSQL 的扩展,用于在数据库中存储和操作向量数据。这使得我们能够将文本通过向量化的方式进行存储,并能够基于这些向量进行相似性搜索。这种方法被广泛应用于自然语言处理和推荐系统中。
代码实现演示
以下是完整的设置和使用代码示例:
环境配置
首先,你需要配置必要的环境变量:
export SUPABASE_URL=<your-supabase-url>
export SUPABASE_SERVICE_KEY=<your-service-key>
export OPENAI_API_KEY=<your-openai-api-key>
配置 Supabase 数据库
在 SQL 编辑器中运行以下脚本,以启用 pgvector
并设置数据库:
-- 启用 pgvector 扩展以处理嵌入向量
create extension if not exists vector;
-- 创建用于存储文档的表
create table
documents (
id uuid primary key,
content text, -- 对应的文档内容
metadata jsonb, -- 文档相关的元数据
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 CLI 以创建项目,并将此包作为唯一依赖来安装:
pip install -U langchain-cli
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
访问服务的模板和 playground:
从代码中访问模板:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/self-query-supabase")
应用场景分析
该解决方案适用于需要在数据库中存储并查询大量文本数据的应用场景,尤其是需要自然语言查询的情况,如:聊天机器人、自动化客服系统和推荐系统。
实践建议
- 确保环境变量的配置正确,以便能够顺利访问 OpenAI 和 Supabase 服务。
- 使用
pgvector
可以显著提升文本处理的能力以及查询速度。 - 若遇到技术限制或问题,Supabase 社区和文档是非常好的资源。
如果遇到问题欢迎在评论区交流。
—END—
标签:指南,supabase,embedding,--,self,Supabase,query,自然语言 From: https://blog.csdn.net/qawd41564aw/article/details/145014595