COSINE_DISTANCE (Lakehouse v1)
Este documento apresenta uma visão geral da função cosine_distance no PlaidCloud Lakehouse e demonstra como medir a similaridade entre documentos com ela.
A função cosine_distance do PlaidCloud Lakehouse é uma função integrada que calcula a distância de cosseno entre dois vetores. Ela é muito usada em tarefas de processamento de linguagem natural, como similaridade de documentos e sistemas de recomendação.
A distância de cosseno é uma medida de similaridade entre dois vetores, baseada no cosseno do ângulo entre eles. A função recebe dois vetores de entrada e retorna um valor entre 0 e 1, em que 0 indica vetores idênticos e 1 indica vetores ortogonais (completamente diferentes).
Sintaxe no Analyze
Seção intitulada “Sintaxe no Analyze”func.cosine_distance(<vector1>, <vector2>)Exemplos de SQL
Seção intitulada “Exemplos de SQL”Criação de uma tabela e inserção de dados de exemplo
Vamos criar uma tabela para armazenar alguns documentos de texto de exemplo e os embeddings correspondentes:
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...'));Consulta de documentos semelhantes
Agora, vamos encontrar os documentos mais semelhantes a uma consulta usando a função cosine_distance:
SELECT id, title, content, cosine_distance(embedding, ai_embedding_vector('How to use Python in data analysis?')) AS similarityFROM articlesORDER 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 │└──────┴──────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────┘