Similaridade de cosseno para recuperação
A similaridade de cosseno mede o ângulo entre dois vetores — a métrica de distância padrão para busca semântica.
Similaridade de cosseno para recuperação é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Medindo a similaridade
Quão próximos estão dois vetores? Três métricas de distância comuns:
- Similaridade de cosseno — ângulo entre os vetores
- Produto escalar — projeção
- Distância euclidiana (L2) — distância em linha reta
Para representações vetoriais de texto, o cosseno é o padrão.
Fórmula da similaridade de cosseno
Para os vetores A e B:
cos(A, B) = (A . B) / (|A| * |B|)
O resultado fica entre -1 e 1:
- 1 = mesma direção
- 0 = ortogonais (não relacionados)
- -1 = opostos
Em Python com NumPy
Implementação direta:
import numpy as np
def cosine_similarity(a, b):
a = np.array(a)
b = np.array(b)
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
print(cosine_similarity(vec_apple, vec_orange)) # high
print(cosine_similarity(vec_apple, vec_car)) # lowVetores pré-normalizados
Se suas incorporações já estiverem normalizadas (as da OpenAI estão), cosseno = produto escalar, e você pode ignorar a divisão:
def cosine_normalized(a, b):
return np.dot(a, b) # fasterRecuperação dos K melhores
Para encontrar os K documentos mais semelhantes a uma consulta, calcule a semelhança com cada documento e ordene-os:
def topk(query_vec, doc_vecs, k=5):
scores = [(np.dot(query_vec, v), i) for i, v in enumerate(doc_vecs)]
scores.sort(reverse=True)
return scores[:k]Escalando
A recuperação ingênua dos K melhores é O(N) por consulta — funciona bem para 10 mil documentos, mas é lenta para 10 milhões. Para grandes corpora, use índices aproximados de vizinhos mais próximos (ANN): HNSW, IVF, FAISS.
Por que não a distância euclidiana?
A distância L2 considera o LENGTH do vetor significativo. Para incorporações, a direção importa mais do que a magnitude — por isso o cosseno é melhor.
(Para vetores normalizados, L2 e cosseno produzem a mesma ordenação, portanto isso não faz diferença.)
Produto escalar vs. cosseno
Se os vetores já estiverem normalizados, produto escalar = cosseno e é mais rápido (não há divisão). A maioria dos sistemas de produção usa produto escalar em vetores normalizados.
A Tiny End-to-End Retrieval
docs = ['Python is a programming language', 'Pizza is Italian food', 'The Eiffel Tower is in Paris']
doc_vecs = [embed(d) for d in docs]
query_vec = embed('What is Python?')
scores = [(cosine_similarity(query_vec, v), d) for v, d in zip(doc_vecs, docs)]
scores.sort(reverse=True)
for s, d in scores:
print(f'{s:.3f} {d}')
# 0.83 Python is a programming language
# 0.45 Pizza is Italian food
# 0.41 The Eiffel Tower is in ParisRecuperação híbrida
Combine a semelhança de cosseno com a pesquisa por palavras-chave (BM25) para obter o melhor dos dois métodos — semântica + correspondência exata. A maioria dos sistemas de produção usa recuperação híbrida hoje.
Filtragem por limiar
Descarte os resultados abaixo de um limiar de semelhança para evitar fornecer ao LLM contexto irrelevante:
results = [r for r in retrieved if r.score > 0.7]Intervalo do cosseno
Qual é o intervalo dos valores de semelhança de cosseno?
Recapitulação
A semelhança de cosseno é a métrica padrão para a recuperação por incorporação. Combine-a com pesquisa híbrida e ANN para uso em escala de produção.
Perguntas Frequentes
A aula “Similaridade de cosseno para recuperação” é grátis?
Sim — o texto completo de “Similaridade de cosseno para recuperação” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Similaridade de cosseno para recuperação”?
A similaridade de cosseno mede o ângulo entre dois vetores — a métrica de distância padrão para busca semântica. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Similaridade de cosseno para recuperação”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que são embeddings (representações vetoriais)
- Gerando embeddings com text-embedding-3
- Similaridade de cosseno para recuperação
- Comparação de modelos de embedding (OpenAI vs. Cohere vs. OSS)