Comparar e ordenar vetores numéricos

Cole um vetor de consulta e vetores candidatos para comparar sua similaridade ou distância. Escolha a métrica para ordenar os resultados; dimensões incompatíveis são sinalizadas e nenhum embedding é gerado.

Funciona localmente no seu navegador
Todo cálculo é local. A ferramenta não cria embeddings nem envia vetores a serviços externos.
Vetor de consulta
Vetores candidatos

Compare vetores sem expor embeddings

Cosseno compara direção, produto escalar também reflete magnitude e distâncias ordenam do menor valor. Normalize conforme o fluxo de produção.

Como ordenar vetores por cosseno, distância ou produto escalar

Cole um vetor de consulta e candidatos rotulados e a página devolve os candidatos ordenados pela métrica escolhida. Similaridade de cosseno, produto escalar, distância euclidiana e distância de Manhattan são calculados na própria aba com os valores exatamente como foram digitados: nada é normalizado, nenhum modelo de embedding é chamado e nenhum vetor sai do navegador.

Um ranking é tão bom quanto os próprios vetores. Vetores de modelos diferentes, ou do mesmo modelo com pré-processamento diferente, vivem em espaços diferentes; compare pontuações apenas quando os vetores vierem de um mesmo fluxo de processamento.

  1. Cole o vetor de consulta: números separados por vírgulas, espaços ou ponto e vírgula, ou um array JSON como [0.82, 0.15, -0.31, 0.44].
  2. Adicione os candidatos, um por linha: um rótulo e depois um tabulador (ou dois-pontos ou espaço) com o vetor entre colchetes, por exemplo “trecho A<TAB>[0.79, 0.18, -0.28, 0.48]”. Também funciona um array JSON de arrays ou de objetos {label, vector}.
  3. Escolha a métrica: similaridade de cosseno e produto escalar colocam primeiro o maior valor; as distâncias euclidiana e de Manhattan colocam primeiro a menor distância.
  4. Clique em Calcular e ordenar. O candidato cujo comprimento não bate com a consulta, ou cuja linha não pode ser lida, é listado com o motivo e fica fora do ranking, em vez de derrubar a execução inteira.
  5. Clique em Limpar para esvaziar o formulário; a métrica volta para similaridade de cosseno.

Formatos de entrada, fórmulas das métricas e tratamento de erros

Formatos de entrada que o analisador aceita

Um vetor é uma lista de números finitos. Na caixa de consulta eles podem ser separados por vírgulas, espaços ou ponto e vírgula, ou escritos como array JSON; decimais, sinais e notação científica (1e-3, 2E-3) são aceitos, e os números também podem vir entre aspas, como costumam exportar planilhas e CSV. null, true, false, entradas vazias e qualquer outro texto são recusados: a página nomeia o valor problemático em vez de convertê-lo em 0 ou 1.

As linhas de candidatos são lidas como um rótulo mais um vetor. O separador pode ser tabulador, dois-pontos ou espaço; o vetor vai entre colchetes ou, em uma linha sem rótulo, como uma lista de números. Linhas sem rótulo recebem “Vector 1”, “Vector 2” e assim por diante. Uma lista JSON de candidatos pode ser um array de arrays, um array de objetos {label, vector} ou um único array plano lido como um candidato.

O que cada métrica devolve

A similaridade de cosseno divide o produto escalar pelas duas magnitudes, então compara apenas a direção e ignora o comprimento: o valor vai de −1 (opostos) passando por 0 (sem relação) até 1 (mesma direção). É a escolha usual para embeddings de texto e imagem. Um vetor nulo não tem direção, então seu cosseno é indefinido e a linha aparece como indisponível, e não como 0.

O produto escalar multiplica os componentes correspondentes e os soma, então cresce tanto com a concordância de direção quanto com o comprimento dos vetores; a ordenação é pelo maior valor e um resultado negativo fica abaixo de qualquer positivo. A distância euclidiana é a distância em linha reta entre os dois pontos e a de Manhattan soma as diferenças absolutas componente a componente: ambas ordenam pela menor distância e ambas dependem da escala dos números.

O cosseno é calculado sobre cópias reescaladas dos dois vetores para que componentes enormes (1e200) não estourem os produtos intermediários, e a distância euclidiana é acumulada com Math.hypot para que o quadrado também não estoure. Um produto escalar que realmente ultrapasse o intervalo de um número JavaScript é informado como indisponível, com o motivo na linha de status, em vez de ser exibido como Infinity.

O que a página não faz

Ela não gera embeddings, não baixa vetores de uma API nem pesquisa em um corpus: os números que você cola são os que ela ordena. Também não normaliza os vetores, não descarta rótulos duplicados e não reordena empates: dois candidatos com a mesma pontuação mantêm a ordem de entrada.

A barra de cada linha é escalada entre a melhor e a pior pontuação da execução atual, então ela mostra posição relativa dentro de um ranking e não é comparável entre execuções ou métricas. A coluna de pontuações é arredondada para exibição — valores extremos passam a notação exponencial —, então use uma biblioteca numérica no seu próprio processo quando precisar de aritmética exata em lotes grandes.

Ferramentas recentes: