Calculadora de similaridade de cosseno
Meça o quanto dois vetores apontam na mesma direção, de -1 quando são opostos a 1 quando coincidem. Como o comprimento não conta, 1, 2, 3 e 10, 20, 30 recebem um 1 perfeito, bom para comparar textos, avaliações ou perfis de pesquisa. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Primeiro texto
- 1, 2, 3
- Segundo texto
- 4, -5, 6
- N
- 3
- Produto escalar
- 12
- Magnitude de a
- 3,7416573868
- Magnitude de b
- 8,7749643874
Você envia as duas listas de componentes — embeddings, pesos de características, contagens de termos, pontuações de pesquisas — e recebe o produto escalar, as duas magnitudes e uma única pontuação de similaridade entre -1 e 1: 1 significa direção idêntica, 0 significa ortogonal e -1 significa oposta.
O que a similaridade de cosseno realmente mede
A distância euclidiana informa a que distância dois pontos estão; a similaridade de cosseno informa se eles apontam na mesma direção. Essa distinção importa mais do que parece à primeira vista. Dois documentos podem ter comprimentos muito diferentes e ainda assim tratar do mesmo assunto; dois perfis de clientes podem diferir no gasto absoluto e ainda compartilhar a mesma forma de preferências.
Ao dividir o produto escalar pelo produto das magnitudes, a similaridade de cosseno remove a escala e mantém apenas a direção. O resultado sempre fica entre -1 e 1. Uma pontuação de 1 significa que os vetores estão perfeitamente alinhados, 0 significa que são ortogonais e não compartilham nenhum componente direcional, e -1 significa que são exatamente opostos.
Como a magnitude é removida, um vetor [1, 2, 3] e um vetor [10, 20, 30] obtêm um 1 perfeito: descrevem as mesmas proporções em intensidades diferentes, que é exatamente o que a maioria das comparações de texto, gosto ou comportamento procura.
Como a pontuação é calculada
Em seguida, acumula três somas em uma única passagem: o produto escalar Σ aᵢbᵢ e as magnitudes ao quadrado Σ aᵢ² e Σ bᵢ². A similaridade é o produto escalar dividido pelo produto das raízes quadradas das magnitudes, limitada ao intervalo [-1, 1] para absorver o ruído de ponto flutuante e arredondada em doze casas decimais para que a resposta seja estável byte a byte entre máquinas.
Se algum dos vetores tiver magnitude zero — todos os componentes são zero — a divisão é indefinida e a chamada falha com uma mensagem explícita, porque um vetor zero não tem direção a comparar. A resposta também inclui o produto escalar, as duas magnitudes, uma classificação legível e os passos intermediários para que você possa auditar cada valor.
Onde ela se encaixa na prática
A similaridade de cosseno é a métrica fundamental por trás da busca semântica, dos mecanismos de recomendação, da desduplicação e das verificações de qualidade de clusters. Se você armazena embeddings de texto para recuperação, esta é a pontuação que classifica os candidatos; se constrói perfis de usuário como vetores de características, é assim que encontra os vizinhos mais próximos.
Para equipes que comparam muitos vetores, o arredondamento estável e os casos de erro explícitos tornam o uso seguro em testes e suítes de regressão: comprimentos diferentes e vetores zero falham de forma visível em vez de produzir rankings silenciosamente errados.
Casos de uso
Classificar candidatos de embeddings
Pontue o quão próximo o embedding de uma consulta está de cada embedding de documento e ordene os resultados por similaridade direcional, não pelo comprimento do vetor.
Detectar itens quase duplicados
Marque dois vetores de características como duplicados quando a similaridade de cosseno ficar acima de um limiar próximo de 1, mesmo que as contagens brutas difiram.
Comparar perfis de preferência
Encontre usuários com a mesma forma de gosto comparando vetores normalizados de avaliações ou comportamento para um mecanismo de recomendação.
Perguntas frequentes
Quanto custa?
Também é grátis executar no seu navegador nesta página com o mesmo código.
O que significa uma pontuação de 0?
Os vetores são ortogonais: não compartilham nenhum componente direcional. Uma pontuação de 1 significa direção idêntica e -1 significa direções exatamente opostas.
O que acontece com um vetor zero?
Um vetor cujos componentes são todos zero não tem direção, portanto a similaridade é indefinida e a chamada falha com um erro claro em vez de retornar um número enganoso.
A magnitude do vetor afeta a pontuação?
Não. A pontuação mede apenas a direção: [1, 2, 3] e [10, 20, 30] têm similaridade de cosseno 1 porque suas proporções são idênticas.
Quais formatos de entrada são aceitos?
Os componentes devem ser números finitos dentro dos limites publicados.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/math/cosine-similarity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":[1,2,3],"b":[4,-5,6]}'const res = await fetch("https://api.kit.forhosting.com/math/cosine-similarity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": [
1,
2,
3
],
"b": [
4,
-5,
6
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/cosine-similarity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": [
1,
2,
3
],
"b": [
4,
-5,
6
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/cosine-similarity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":[1,2,3],"b":[4,-5,6]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":[1,2,3],"b":[4,-5,6]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/cosine-similarity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"a": [
1,
2,
3
],
"b": [
4,
-5,
6
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.cosine_similarity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_abs | 1000000000000 |
max_dim | 1000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A API de similaridade de cosseno mede o quanto dois vetores apontam na mesma direção, independentemente do seu comprimento. A execução ocorre em uma única passagem determinista, de modo que o número que você vê na versão gratuita do navegador é exatamente o número que a API paga retorna.
Como a pontuação é calculada
O endpoint converte as duas entradas em vetores de números finitos, aceitando tanto arrays JSON quanto texto simples separado por vírgulas, e verifica se ambos têm o mesmo comprimento — uma comparação entre vetores de dimensões diferentes é matematicamente sem sentido, por isso é rejeitada com um erro invalid_input claro em vez de ser truncada silenciosamente.
Onde ela se encaixa na prática
A capacidade roda na nossa edge global sem manter nada após a requisição, e o mesmo código determinista que alimenta a API paga roda grátis no seu navegador nesta página, de modo que você pode verificar um par de vetores colando-os antes de integrar a chamada em um pipeline. Você só paga quando automatiza: US$ 0,002 por requisição, sem sobretaxa por dimensão dentro dos limites publicados.
Perguntas técnicas
Os vetores podem ter comprimentos diferentes?
Não. A similaridade de cosseno só é definida entre vetores da mesma dimensão, portanto comprimentos diferentes são rejeitados com um erro invalid_input.