Oi, então tenho esse erro com o armazenamento de vetores do Supabase (novamente) quando tentei conectá-lo com a ferramenta de agente de IA e realmente testá-lo para o documento que criei.
O erro é (PGRST202) ele simplesmente não consegue retornar com as informações de dados e não sei por quê. Encontrei um tópico antigo perguntando pelo mesmo erro exato:
E novamente, o código do editor SQL tinha algo a ver com isso, então copiei e colei o código que foi oferecido como solução, infelizmente, recebi exatamente o mesmo erro
Qual é a mensagem de erro (se houver)?
Erro ao pesquisar documentos: PGRST202 Não foi possível encontrar a função public.match_documents(filter, match_count, query_embedding) no cache do schema Pesquisou pela função public.match_documents com parâmetros filter, match_count, query_embedding ou com um parâmetro json/jsonb sem nome único, mas nenhuma correspondência foi encontrada no cache do schema.
Oi @Mazen_Hassan
As chamadas de recuperação do Supabase do n8n correspondem a match_documents com os argumentos nomeados filter, match_count e query_embedding, e a função da sua configuração SQL no tópico de ontem é declarada com match_threshold em vez de filter, então o PostgREST não encontra nenhuma função com essa assinatura, que é exatamente o que PGRST202 relata. Colar o bloco do tópico antigo não pôde corrigir: esse bloco começa com create extension vector sem if not exists, o editor SQL executa toda a colagem como um lote, e a primeira instrução gera erro no seu projeto, então o create function na parte inferior nunca foi executado.
Execute apenas isto em uma nova consulta do editor SQL, remove a assinatura antiga e cria a que o n8n espera contra sua tabela:
drop function if exists match_documents(vector, float, int);
create or replace 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 - (knowledge_chunks.embedding <=> query_embedding) as similarity
from knowledge_chunks
where metadata @> filter
order by knowledge_chunks.embedding <=> query_embedding
limit match_count;
end;
$$;
notify pgrst, 'reload schema';
Oi @Anshul_Namdev, li sua resposta e consegui entender melhor o que está sendo solicitado, mas testei seu código novamente no editor SQL e tentei meu workflow de novo. Ainda dá o mesmo erro
PGRST202 persistindo após esse create significa que o banco de dados com o qual seu workflow se comunica ainda não tem match_documents com esses três parâmetros nomeados, então a declaração não chegou onde o node está procurando. Execute isto no editor SQL e observe a saída:
select n.nspname as schema, p.proname, pg_get_function_identity_arguments(p.oid) as arguments
from pg_proc p
join pg_namespace n on n.oid = p.pronamespace
where p.proname = 'match_documents';
Sem linhas: o bloco nunca foi executado. Execute novamente por conta própria e leia o painel de resultados procurando por texto de erro em vermelho, e compare a referência do projeto na URL do editor SQL com o Host na sua credencial Supabase do n8n. Editar um projeto enquanto o workflow chama outro produz exatamente isto.
Uma linha onde schema não é public, ou arguments não são nomeados query_embedding, match_count e filter: execute o bloco da minha resposta anterior novamente como postado.
Uma linha com schema public e esses três nomes: execute notify pgrst, 'reload schema'; por conta própria, aguarde um minuto e teste o workflow novamente.
Cole a saída da query aqui se ainda assim falhar após isso.
Parece que sim, muito obrigado @Anshul_Namdev — Só espero que não quebre de novo sozinho, você disse que eu desse um tempo para atualizar e foi exatamente isso : )