Zum Inhalt springen

Dieses Dokument bietet einen Überblick über die Funktion cosine_distance in PlaidCloud Lakehouse und zeigt, wie Sie mit ihr die Ähnlichkeit von Dokumenten messen.

Die Funktion cosine_distance in PlaidCloud Lakehouse ist eine integrierte Funktion, die den Kosinusabstand zwischen zwei Vektoren berechnet. Sie wird häufig bei Aufgaben der Verarbeitung natürlicher Sprache eingesetzt, etwa für Dokumentähnlichkeit und Empfehlungssysteme.

Der Kosinusabstand ist ein Ähnlichkeitsmaß für zwei Vektoren und basiert auf dem Kosinus des Winkels zwischen ihnen. Die Funktion nimmt zwei Eingabevektoren entgegen und gibt einen Wert zwischen 0 und 1 zurück. Dabei steht 0 für identische Vektoren und 1 für orthogonale (völlig unähnliche) Vektoren.

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

Tabelle erstellen und Beispieldaten einfügen

Erstellen wir eine Tabelle, in der einige Beispieltextdokumente und ihre zugehörigen Embeddings gespeichert werden:

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

Fügen wir nun einige Beispieldokumente in die Tabelle ein:

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...'));

Nach ähnlichen Dokumenten suchen

Suchen wir nun mit der Funktion cosine_distance die Dokumente, die einer vorgegebenen Abfrage am ähnlichsten sind:

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;

Ergebnis:

┌──────┬──────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────────┐
│ 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 │
└──────┴──────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────┘