Pular para o conteúdo

Este documento apresenta uma visão geral da função cosine_distance no PlaidCloud Lakehouse e demonstra como medir a similaridade entre documentos com esta função.

A função cosine_distance do PlaidCloud Lakehouse é uma função incorporada que calcula a distância do cosseno entre dois vetores. É habitualmente utilizada em tarefas de processamento de linguagem natural, como a similaridade entre documentos e os sistemas de recomendação.

A distância do cosseno é uma medida de similaridade entre dois vetores, baseada no cosseno do ângulo entre eles. A função recebe dois vetores de entrada e devolve um valor entre 0 e 1, em que 0 indica vetores idênticos e 1 indica vetores ortogonais (completamente dissemelhantes).

func.cosine_distance(<vector1>, <vector2>)

Criar uma tabela e inserir dados de exemplo

Vamos criar uma tabela para guardar alguns documentos de texto de exemplo e os respetivos embeddings:

CREATE TABLE articles (
id INT,
title VARCHAR,
content VARCHAR,
embedding ARRAY(FLOAT32)
);

Agora, vamos inserir alguns documentos de exemplo na tabela:

INSERT INTO articles (id, title, content, embedding)
VALUES
(1, 'Python for Data Science', 'Python is a versatile programming language widely used in data science...', ai_embedding_vector('Python is a versatile programming language widely used in data science...')),
(2, 'Introduction to R', 'R is a popular programming language for statistical computing and graphics...', ai_embedding_vector('R is a popular programming language for statistical computing and graphics...')),
(3, 'Getting Started with SQL', 'Structured Query Language (SQL) is a domain-specific language used for managing relational databases...', ai_embedding_vector('Structured Query Language (SQL) is a domain-specific language used for managing relational databases...'));

Consultar documentos semelhantes

Agora, vamos encontrar os documentos mais semelhantes a uma determinada consulta com a função cosine_distance:

SELECT
id,
title,
content,
cosine_distance(embedding, ai_embedding_vector('How to use Python in data analysis?')) AS similarity
FROM
articles
ORDER BY
similarity ASC
LIMIT 3;

Resultado:

┌──────┬──────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────────┐
│ id │ title │ content │ similarity │
├──────┼──────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ 1 │ Python for Data Science │ Python is a versatile programming language widely used in data science... │ 0.1142081 │
│ 2 │ Introduction to R │ R is a popular programming language for statistical computing and graphics... │ 0.18741018 │
│ 3 │ Getting Started with SQL │ Structured Query Language (SQL) is a domain-specific language used for managing relational databases... │ 0.25137568 │
└──────┴──────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────┘