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