Supabase
Prerequisitos
Registra una cuenta en Supabase
Haz clic en New project

Ingresa los campos requeridos
Name
nombre del proyecto a crear (ej. Flowise)
Database Password
contraseña para tu base de datos postgres

Haz clic en Create new project y espera a que el proyecto termine de configurarse
Haz clic en SQL Editor

Haz clic en New query

Copia y pega la siguiente consulta SQL y ejecútala con
Ctrl + Enter
o haciendo clic en RUN. Toma nota del nombre de la tabla y el nombre de la función.
Nombre de la tabla:
documents
Nombre de la consulta:
match_documents
-- Habilita la extensión pgvector para trabajar con vectores de embeddings
create extension vector;
-- Crea una tabla para almacenar tus documentos
create table documents (
id bigserial primary key,
content text, -- corresponde a Document.pageContent
metadata jsonb, -- corresponde a Document.metadata
embedding vector(1536) -- 1536 funciona para embeddings de OpenAI, cambiar si es necesario
);
-- Crea una función para buscar documentos
create function match_documents (
query_embedding vector(1536),
match_count int DEFAULT null,
filter jsonb DEFAULT '{}'
) returns table (
id bigint,
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
limit match_count;
end;
$$;
En algunos casos, podrías estar usando Record Manager para hacer seguimiento de los upserts y prevenir duplicaciones. Como Record Manager genera un UUID aleatorio para cada embedding, tendrás que cambiar la entidad de la columna id a texto:
-- Habilita la extensión pgvector para trabajar con vectores de embeddings
create extension vector;
-- Crea una tabla para almacenar tus documentos
create table documents (
id text primary key, -- CAMBIAR A TEXT
content text,
metadata jsonb,
embedding vector(1536)
);
-- Crea una función para buscar documentos
create function match_documents (
query_embedding vector(1536),
match_count int DEFAULT null,
filter jsonb DEFAULT '{}'
) returns table (
id text, -- CAMBIAR A TEXT
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
limit match_count;
end;
$$;

Configuración
Haz clic en Project Settings

Obtén tu Project URL & API Key

Copia y pega cada detalle (API Key, URL, Table Name, Query Name) en el nodo Supabase

Document puede conectarse con cualquier nodo de la categoría Document Loader
Embeddings puede conectarse con cualquier nodo de la categoría Embeddings
Filtrado
Supongamos que tienes diferentes documentos insertados, cada uno especificado con un valor único bajo la clave de metadata {source}

Puedes usar filtrado de metadata para consultar metadata específica:
UI

API
"overrideConfig": {
"supabaseMetadataFilter": {
"source": "henry"
}
}
Recursos
Last updated