Supabase

Prerequisitos

  1. Registra una cuenta en Supabase

  2. Haz clic en New project

  1. Ingresa los campos requeridos

Nombre del Campo
Descripción

Name

nombre del proyecto a crear (ej. Flowise)

Database Password

contraseña para tu base de datos postgres

  1. Haz clic en Create new project y espera a que el proyecto termine de configurarse

  2. Haz clic en SQL Editor

  1. Haz clic en New query

  1. 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

  1. Haz clic en Project Settings

  1. Obtén tu Project URL & API Key

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

  1. Document puede conectarse con cualquier nodo de la categoría Document Loader

  2. 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