Stellen Sie sich vor, ich habe eine Tabelle, die eine Reihe von spärlichen Vektoren speichert. Ein Sparse-Vektor bedeutet, dass er nur die Nicht-Null-Werte explizit in der Datenstruktur speichert. Ich könnte einen 1 Million dimensionalen Vektor haben, aber ich speichere nur die Werte für die Dimensionen, die nicht Null sind. Die Größe ist also proportional zur Anzahl der Nicht-Null-Einträge und nicht zur Dimensionalität des Vektors.Spärliches Skalarprodukt in SQL
Tabellendefinition würde wie folgt sein: vector_id: Dimension int: int Wert: float
nun in normaler Programmierung Land kann ich das innere Produkt oder Skalarprodukt von zwei Vektoren in O berechnen (| v1 | + | v2 |) Zeit. Grundsätzlich besteht der Algorithmus darin, die dünn besetzten Vektoren nach Dimension sortiert zu speichern und die Dimensionen in jedem zu durchlaufen, bis Sie Kollisionen zwischen Dimensionen finden und die Werte der geteilten Dimension multiplizieren und diese bis zum Ende eines der Vektoren addieren .
Was ist der schnellste Weg, um dies in SQL abzuziehen?
Wie würden Sie den Tabellenindex? Nach (Vektor_ID, Dimension)? –
Die Indizierung durch (vector_id, dimension) ist am sinnvollsten, da diese einen eindeutigen Datensatz in der Tabelle definieren sollten. – dpmattingly
Das ist im Grunde das, was mir eingefallen ist - bis jemand anderes etwas schneller posten wird, gebe ich es dir. Vielen Dank! –