Tipos de métricas

As métricas de semelhança são utilizadas para medir as semelhanças entre vectores. A escolha de uma métrica de distância apropriada ajuda a melhorar significativamente o desempenho da classificação e do agrupamento.

Atualmente, o Milvus suporta estes tipos de métricas de semelhança: Distância euclidiana (L2), Inner Product (IP), Cosine Similarity (COSINE), JACCARD, HAMMING, e BM25 (especificamente concebida para pesquisa de texto completo em vectores esparsos).

A tabela abaixo resume o mapeamento entre os diferentes tipos de campos e os tipos de métricas correspondentes.

Tipo de campo

Intervalo de dimensão

Tipos de métricas suportados

Tipo de métrica predefinido

FLOAT_VECTOR

2-32,768

COSINE, L2, IP

COSINE

FLOAT16_VECTOR

2-32,768

COSINE, L2, IP

COSINE

BFLOAT16_VECTOR

2-32,768

COSINE, L2, IP

COSINE

INT8_VECTOR

2-32,768

COSINE, L2, IP

COSINE

SPARSE\_FLOAT\_VECTOR

Não é necessário especificar a dimensão.

IP, BM25 (utilizado apenas para pesquisa de texto integral)

IP

BINARY_VECTOR

8-32,768*8

HAMMING, JACCARD, MHJACCARD

HAMMING

  • Para campos vectoriais do tipo SPARSE\_FLOAT\_VECTOR, utilize o tipo métrico BM25 apenas quando efetuar a pesquisa de texto integral. Para mais informações, consulte Pesquisa de texto integral.

  • Para campos vectoriais do tipo BINARY_VECTOR, o valor da dimensão (dim) tem de ser um múltiplo de 8.

A tabela abaixo resume as caraterísticas dos valores de distância de similaridade de todos os tipos de métrica suportados e o seu intervalo de valores.

Tipo de métrica

Caraterísticas dos valores de distância de similaridade

Intervalo de valores da distância de similaridade

L2

Um valor menor indica uma maior similaridade.

[0, ∞)

IP

Um valor maior indica uma maior similaridade.

[-1, 1]

COSINE

Um valor maior indica uma maior similaridade.

[-1, 1]

JACCARD

Um valor menor indica uma maior similaridade.

[0, 1]

MHJACCARD

Estima a similaridade Jaccard a partir dos bits da assinatura MinHash; distância menor = mais similar

[0, 1]

HAMMING

Um valor menor indica uma maior similaridade.

[0, dim(vetor)]

BM25

Pontua a relevância com base na frequência do termo, na frequência invertida do documento e na normalização do documento.

[0, ∞)

Para indexar campos de vetor em um campo Array of Structs, você deve prefixar MAX_SIM ao conjunto de tipos de métrica mencionados acima, com base nas incorporações de vetor armazenadas nesses campos. Por exemplo,

  • Para um campo vetorial que armazena incorporações vectoriais do tipo FLOAT_VECTOR, FLOAT16_VECTOR, BFLOAT16_VECTOR, ou INT8_VECTOR, pode utilizar MAX_SIM_COSINE, MAX_SIM_IP, ou MAX_SIM_L2 como tipo métrico.

  • Para um campo de vectores que armazena incrustações vectoriais do tipo BINARY_VECTOR, pode utilizar MAX_SIM_JACCADR ou MAX_SIM_HAMMING como tipo métrico.

Distância euclidiana (L2)

Essencialmente, a distância euclidiana mede o comprimento de um segmento que liga 2 pontos.

A fórmula para a distância euclidiana é a seguinte:

Euclidean Metric Métrica Euclidiana

em que a = (a0, a1,...,an-1) e b = (b0, b1,..., bn-1) são dois pontos num espaço euclidiano n-dimensional.

É a métrica de distância mais comummente utilizada e é muito útil quando os dados são contínuos.

O Milvus só calcula o valor antes de aplicar a raiz quadrada quando a distância euclidiana é escolhida como métrica de distância.

Produto interno (IP)

A distância IP entre dois embeddings é definida da seguinte forma:

IP Formula Fórmula IP

O IP é mais útil se precisar de comparar dados não normalizados ou quando se preocupa com a magnitude e o ângulo.

Se utilizar IP para calcular semelhanças entre embeddings, deve normalizar os seus embeddings. Após a normalização, o produto interno é igual à similaridade de cosseno.

Suponha que X' seja normalizado a partir da incorporação X:

Normalize Formula Fórmula de normalização

A correlação entre os dois embeddings é a seguinte:

Correlation Between Embeddings Correlação entre os embeddings

Similaridade de cosseno

A semelhança do cosseno utiliza o cosseno do ângulo entre dois conjuntos de vectores para medir a sua semelhança. Pode pensar nos dois conjuntos de vectores como segmentos de linha que partem do mesmo ponto, como [0,0,...], mas que apontam em direcções diferentes.

Para calcular a semelhança de cosseno entre dois conjuntos de vectores A = (a0, a1,...,an-1) e B = (b0, b1,..., bn-1), utilize a seguinte fórmula:

Cosine Similarity Semelhança de cosseno

A semelhança de cosseno está sempre no intervalo [-1, 1]. Por exemplo, dois vectores proporcionais têm uma semelhança de cosseno de 1, dois vectores ortogonais têm uma semelhança de 0 e dois vectores opostos têm uma semelhança de -1. Quanto maior for o cosseno, menor é o ângulo entre os dois vectores, indicando que estes dois vectores são mais semelhantes entre si.

Subtraindo a semelhança de cosseno de 1, obtém-se a distância de cosseno entre dois vectores.

Distância JACCARD

O coeficiente de distância JACCARD mede a semelhança entre dois conjuntos de amostras e é definido como a cardinalidade da intersecção dos conjuntos definidos dividida pela cardinalidade da união dos mesmos. Só pode ser aplicado a conjuntos de amostras finitos.

JACCARD Similarity Coefficient Formula Fórmula do coeficiente de similaridade JACCARD

A distância JACCARD mede a dissemelhança entre conjuntos de dados e é obtida subtraindo o coeficiente de semelhança JACCARD de 1. Para variáveis binárias, a distância JACCARD é equivalente ao coeficiente de Tanimoto.

JACCARD Distance Formula Fórmula da distância JACCARD

MHJACCARD

MinHash Jaccard (MHJACCARD) é um tipo de métrica utilizado para uma pesquisa de semelhança eficiente e aproximada em grandes conjuntos - como conjuntos de palavras de documentos, conjuntos de etiquetas de utilizadores ou conjuntos de k-mer genómicos. Em vez de comparar diretamente conjuntos brutos, o MHJACCARD compara assinaturas MinHash, que são representações compactas concebidas para estimar eficientemente a semelhança Jaccard.

Esta abordagem é significativamente mais rápida do que calcular a semelhança Jaccard exacta e é especialmente útil em cenários de grande escala ou de elevada dimensão.

Tipo de vetor aplicável

  • BINARY_VECTORVetor de assinatura MinHash, em que cada vetor armazena uma assinatura MinHash. Cada elemento corresponde ao valor de hash mínimo sob uma das funções de hash independentes aplicadas ao conjunto original.

Definição de distância

MHJACCARD mede quantas posições em duas assinaturas MinHash coincidem. Quanto maior for o rácio de correspondência, mais semelhantes são os conjuntos subjacentes.

Milvus relata:

  • Distância = 1 - similaridade estimada (rácio de correspondência)

O valor da distância varia de 0 a 1:

  • 0 significa que as assinaturas MinHash são idênticas (similaridade estimada de Jaccard = 1)

  • 1 significa que não há correspondências em nenhuma posição (similaridade estimada de Jaccard = 0)

Para obter informações sobre pormenores técnicos, consulte MINHASH_LSH.

Distância HAMMING

A distância HAMMING mede cadeias de dados binárias. A distância entre duas cadeias de caracteres de igual comprimento é o número de posições de bits em que os bits são diferentes.

Por exemplo, suponhamos que existem duas cadeias de caracteres, 1101 1001 e 1001 1101.

11011001 ⊕ 10011101 = 01000100. Uma vez que isto contém dois 1s, a distância HAMMING, d (11011001, 10011101) = 2.

Similaridade BM25

O BM25 é um método de medição da relevância do texto amplamente utilizado, especificamente concebido para a pesquisa de textos completos. Combina os três factores-chave seguintes:

  • Frequência de termos (TF): Mede a frequência com que um termo aparece num documento. Embora frequências mais elevadas indiquem frequentemente uma maior importância, o BM25 utiliza o parâmetro de saturação k1k_1 k para evitar que termos demasiado frequentes dominem a pontuação de relevância.

  • Frequência inversa de documentos (IDF): Reflecte a importância de um termo em todo o corpus. Os termos que aparecem em menos documentos recebem um valor IDF mais alto, indicando maior contribuição para a relevância.

  • Normalização do comprimento do documento: Documentos mais longos tendem a ter uma pontuação mais alta por conterem mais termos. O BM25 atenua esse viés normalizando o comprimento dos documentos, com o parâmetro bb b controlando a força dessa normalização.

A pontuação do BM25 é calculada da seguinte forma:

score(D,Q)=i=1nIDF(qi)TF(qi,D)(k1+1)TF(qi,D)+k1(1b+bDavgdl)score(D, Q)=\sum_{i=1}^{n}IDF(q_i)\cdot {{TF(q_i,D)\cdot(k_1+1)}\over{TF(q_i, D)+k_1\cdot(1-b+b\cdot {{|D|}\over{avgdl}})}}

Descrição dos parâmetros:

  • QQ Q: O texto da consulta fornecido pelo utilizador.

  • DD D: O documento que está a ser avaliado.

  • TF(qi,D)TF(q_i, D),: Frequência do termo, representando a frequência com que o termo qiq_iq aparece no documento DD D.

  • IDF(qi)IDF(q_i)): Frequência inversa de documentos, calculada como:

    IDF(qi)=log(Nn(qi)+0.5n(qi)+0.5+1)IDF(q_i)=\log({N-n(q_i)+0.5\over n(q_i)+0.5} + 1)

    onde NN N é o número total de documentos no corpus,en(qi)n(q_i) n ) é o número de documentos contendo o termo qiq_i q .

  • ∣D∣|D| Comprimento do documento DD D (número total de termos).

  • avgdlavgdl: Comprimento médio de todos os documentos do corpus.

  • k1k_1 k: Controla a influência da frequência do termo na pontuação. Valores mais altos aumentam a importância da frequência de termos. O intervalo típico é [1,2, 2,0], enquanto o Milvus permite um intervalo de [0, 3].

  • bb b: Controla o grau de normalização do comprimento, variando de 0 a 1. Quando o valor é 0, nenhuma normalização é aplicada; quando o valor é 1, a normalização completa é aplicada.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?