eigentlich – chatgpz.de – KI-Tools & Praxiswissen https://chatgpz.de Unabhängige Tests, Anleitungen und Hintergründe zu KI-Tools. Thu, 09 Jul 2026 21:20:09 +0000 de-DE hourly 1 https://wordpress.org/?v=6.4.2 234900186 Wer entscheidet eigentlich, was Sie on-line sehen? https://chatgpz.de/data-science/wer-entscheidet-eigentlich-was-sie-on-line-sehen/ https://chatgpz.de/data-science/wer-entscheidet-eigentlich-was-sie-on-line-sehen/#respond Thu, 09 Jul 2026 21:20:09 +0000 https://chatgpz.de/data-science/wer-entscheidet-eigentlich-was-sie-online-sehen/ [ad_1]

Bevorzugte Quelle von Google

Vor ein paar Monaten sorgte bei einem Produktbewertungstreffen bei einem großen Technologieunternehmen eine täuschend einfache Frage für Stillstand. Ein leitender Ingenieur hatte gerade ein Replace eines Empfehlungssystems vorgestellt – nichts Ungewöhnliches, eine Reihe von Verfeinerungen zur Verbesserung des Engagements. Am Ende der Präsentation fragte jemand: Warum erscheint dieser bestimmte Inhalt zuerst und nicht ein anderer?

Was folgte, battle keine Meinungsverschiedenheit oder auch nur eine technische Erklärung, sondern ein Zögern, das quick philosophisch wirkte. Der Ingenieur begann, die Faktoren zu skizzieren – Benutzerhistorie, Interaktionsmuster, Modellvorhersagen, Inhaltsmerkmale –, aber die Erklärung wurde immer weiter und verzweigte sich in Abhängigkeiten, Interaktionen und Wahrscheinlichkeiten. Nach ein oder zwei Minuten wurde klar, dass die Antwort nicht unvollständig battle. Es battle strukturell unmöglich, es auf eine einzige Ursache zusammenzufassen.

Das System hat Entscheidungen nicht in der Artwork und Weise getroffen, wie wir es erwarten.

Dieser Second, der in der Branche durchaus bekannt ist, findet selten Eingang in die öffentliche Diskussion über Technologie. Wir neigen dazu, uns digitale Macht mit Begriffen aus früheren Zeiten vorzustellen: Jemand legt die Regeln fest, jemand setzt sie durch, jemand profitiert davon. Selbst die kritischsten Berichte – ob von Regulierungsbehörden, Ökonomen oder Journalisten – gehen oft davon aus, dass hinter jedem Ergebnis ein erkennbarer Kontrollort steht.

Aber die Architektur, die heute die On-line-Sichtbarkeit regelt, verhält sich nicht so.

Was Sie sehen, ist nicht an einem einzigen Ort ausgewählt. Es ist zusammengebaut.

Im letzten Jahrzehnt haben sich digitale Plattformen zu Systemen entwickelt, bei denen Ergebnisse aus der Interaktion mehrerer Ebenen entstehen: auf Verhaltensdaten trainierte Rating-Algorithmen, Schnittstellendesigns, die bestimmte Aktionen privilegieren, Werbemechanismen, die wirtschaftliche Anreize schaffen, und Benutzeraktivitäten, die kontinuierlich in das System zurückgemeldet werden. Jede Komponente ist isoliert verständlich. Zusammen bilden sie etwas, das eher einem Ökosystem als einem Mechanismus ähnelt.

Dies ist nicht ganz ohne Präzedenzfall. Ökonomen beschreiben Märkte seit langem als verteilte Systeme. Die zentrale Erkenntnis von Friedrich Hayek battle, dass kein einzelner Akteur über alle Informationen verfügt, die zur Koordinierung der Wirtschaftstätigkeit erforderlich sind, und dass Preise als Signale dienen, die verstreutes Wissen aggregieren. Aber auch in Hayeks Rahmen blieb der Koordinationsmechanismus lesbar.

In digitalen Systemen ist der koordinierende Mechanismus nicht mehr allein der Preis. Es ist Sichtbarkeit – und Sichtbarkeit wird durch eine Struktur bestimmt, die weder vollständig clear noch vollständig zentralisiert ist.

Herbert Simon, der Jahrzehnte vor dem Web schrieb, warnte davor, dass die menschliche Entscheidungsfindung unter Bedingungen begrenzter Rationalität abläuft. Wir vereinfachen, wir nähern uns an, wir verlassen uns auf Teilmodelle der Realität. Was heute auffällt, ist nicht nur, dass Individuen auf diese Weise eingeschränkt sind, sondern auch, dass die Systeme, die wir aufbauen, dieselben Einschränkungen widerspiegeln. Ingenieure verstehen Komponenten. Produktteams verstehen Kennzahlen. Vermarkter verstehen Leistungssignale. Aber das System als Ganzes geht über jede Einzelperspektive hinaus.

Selbst innerhalb der Unternehmen, die diese Systeme entwickeln, gibt es kein vollständiges Echtzeitverständnis darüber, wie Ergebnisse erzielt werden.

An diesem Punkt scheint die aktuelle Diskussion über künstliche Intelligenz seltsam fehl am Platz zu sein. Ein Großteil der Aufmerksamkeit – sowohl in der Industrie als auch im öffentlichen Diskurs – hat sich auf Instruments verlagert: wie man Modelle anregt, wie man Ausgaben generiert, wie man KI in Arbeitsabläufe integriert. Dies sind praktische Fragen, aber sie bewegen sich auf der oberflächlichen Ebene der Interaktion.

Was weitgehend ungeprüft bleibt, ist die Architektur, innerhalb derer diese Instruments funktionieren.

Wenn ein neues Modell in ein Empfehlungssystem eingeführt oder eine prädiktive Optimierung zu einer Werbeplattform hinzugefügt wird, ersetzt es nicht die bestehende Struktur. Es wird zu einer weiteren Schicht darin. Jede Ebene wird lokal, oft von verschiedenen Groups, nach unterschiedlichen Metriken optimiert. Das Ergebnis ist ein System, das leistungsfähiger, aber nicht unbedingt kohärenter wird.

Ein leitender Forscher für maschinelles Lernen beschrieb mir einmal große Plattformen als „Systeme, die wir steuern, anstatt sie zu kontrollieren“. Der Unterschied ist subtil, aber wichtig. Lenken impliziert Einfluss ohne vollständige Kontrolle, Anpassung ohne vollständige Vorhersehbarkeit.

Dies hat Folgen, die über die Technik hinausgehen.

Im Advertising beispielsweise ist der Wandel bereits sichtbar. Traditionelle Modelle gehen davon aus, dass der Einfluss durch Botschaften erfolgt: Identifizieren Sie eine Zielgruppe, formulieren Sie einen Vorschlag und liefern Sie ihn über einen Kanal. Doch in digitalen Umgebungen ist der Kanal nicht mehr impartial. Es gestaltet aktiv, welche Botschaften in welcher Reihenfolge und mit welcher Häufigkeit gesehen werden.

Untersuchungen des Ehrenberg-Bass-Instituts betonen seit langem die Bedeutung der „mentalen Verfügbarkeit“ – der Wahrscheinlichkeit, dass einem in einer Kaufsituation eine Marke in den Sinn kommt. In digitalen Systemen wird diese Verfügbarkeit zunehmend durch algorithmischen Abruf vermittelt. Es geht nicht nur darum, in Erinnerung zu bleiben. Es geht darum, aufgetaucht zu sein.

In der Praxis haben sich Vermarkter schneller an diese Realität angepasst als die meisten theoretischen Rahmenwerke. Sie führen kontinuierliche Experimente durch und passen kreative Formate, Timing und Focusing on-Strategien an. Sie beobachten, welche Signale das System zu belohnen scheint und richten sich danach aus. Eine erfolgreiche Kampagne ist nicht nur eine, die überzeugt, sondern auch eine, die der Logik der Verbreitung entspricht.

Und doch ist das Verständnis auch hier nur teilweise gegeben.

Führungskräfte sprechen vom „Arbeiten mit dem Algorithmus“, doch dieser Ausdruck ist eher eine Metapher als eine Methode. Was sie wirklich tun, ist, auf Ausgaben zu reagieren, Muster abzuleiten und zu iterieren. Erfolge sind oft erst im Nachhinein erkennbar.

Dadurch entsteht eine eigenartige Dynamik. Das System erzeugt hochstrukturierte Ergebnisse – bestimmte Produkte gewinnen an Sichtbarkeit, bestimmte Narrative verbreiten sich, bestimmte Verhaltensweisen werden verstärkt –, aber der Prozess, durch den diese Ergebnisse entstehen, bleibt selbst von denen, die am stärksten an ihrer Gestaltung beteiligt sind, nur teilweise verstanden.

Shoshana Zuboff hat argumentiert, dass digitale Plattformen eine Type von Macht ausüben, die durch die Gestaltung von Verhalten statt durch die Erteilung von Befehlen erfolgt. Diese Einsicht bleibt wichtig, setzt jedoch ein Maß an bewusstem Design voraus, das mit zunehmender Komplexität der Systeme immer schwieriger aufrechtzuerhalten ist. Einfluss entsteht zunehmend nicht mehr durch eine einzelne Strategie, sondern durch das Zusammenspiel vieler kleiner Optimierungen.

Die politische Theoretikerin Hannah Arendt unterschied einst zwischen Macht als etwas, das von Individuen gehalten wird, und Macht als etwas, das aus Strukturen entsteht. Im digitalen Umfeld scheint sich die Macht entscheidend in Richtung Letzterer verlagert zu haben. Es ist in die Konfiguration des Programs eingebettet – in die Gewichtung von Signalen, den Aufbau von Rückkopplungsschleifen und die Ausrichtung von Anreizen.

Deshalb ist es so schwierig, es herauszufordern.

Regulierungsdebatten konzentrieren sich oft auf einzelne Themen: Inhaltsmoderation, Wettbewerb, Datenschutz. Diese sind wichtig, aber sie neigen dazu, Plattformen so zu behandeln, als wären sie traditionelle Institutionen, die in der Lage sind, klare, zentralisierte Entscheidungen zu treffen. In Wirklichkeit sind viele der folgenreichsten Ergebnisse nicht das Ergebnis expliziter Entscheidungen, sondern systemischer Interaktionen.

Man kann nicht auf einen einzigen Second verweisen und sagen: Hier ist es passiert.

Was die Sache besonders kompliziert macht, ist, dass die Nutzer selbst Teil des Programs sind. Jede Interaktion – jeder Klick, jedes Scrollen, jede Pause – wirkt sich auf die Modelle aus, die die zukünftige Sichtbarkeit prägen. Verhalten wird zur Eingabe, Eingabe zur Ausgabe und der Zyklus geht weiter.

In diesem Sinne handelt das System nicht einfach nur auf Benutzer ein. Es entwickelt sich gemeinsam mit ihnen weiter.

Das bringt uns zurück zur ursprünglichen Frage.

Wer entscheidet, was Sie on-line sehen?

Die genaueste Antwort ist auch die am wenigsten befriedigende. Es gibt keinen einzigen Entscheidungsträger. Was Sie sehen, ist das Ergebnis eines verteilten Prozesses, in dem Algorithmen, Schnittstellen, wirtschaftliche Anreize und menschliches Verhalten kontinuierlich interagieren und Ergebnisse erzeugen, die strukturiert, aber nicht zentral gesteuert sind.

Das bedeutet nicht, dass die Macht verschwunden ist. Wenn überhaupt, ist es allgegenwärtiger geworden. Aber es ist auch schwieriger zu identifizieren, weil es sich nicht mehr als Kontrolle darstellt.

Es präsentiert sich als die natürliche Type des Programs.

Und vielleicht ist das die wichtigste Veränderung. Wir bewegen uns nicht länger in einem Raum, in dem Entscheidungen an sichtbaren Orten getroffen werden. Wir bewegen uns in einem System, das Entscheidungen als Nebenprodukt seines eigenen Betriebs hervorbringt.

Aus diesem Grund scheint die Frage, wer entscheidet, immer schwieriger zu beantworten.

Nicht, weil es keine Antwort gibt.

Sondern weil die Antwort nicht mehr zu der Artwork und Weise passt, wie wir es von der Funktionsweise von Entscheidungen erwarten.


Hervorgehobener Bildnachweis

[ad_2]

]]>
https://chatgpz.de/data-science/wer-entscheidet-eigentlich-was-sie-on-line-sehen/feed/ 0 19867
7 Python -Fehler, die eigentlich Funktionen sind https://chatgpz.de/data-analytics/7-python-fehler-die-eigentlich-funktionen-sind/ https://chatgpz.de/data-analytics/7-python-fehler-die-eigentlich-funktionen-sind/#respond Wed, 11 Jun 2025 11:51:30 +0000 http://chatgpz.de/data-analytics/7-python-fehler-die-eigentlich-funktionen-sind/ [ad_1]

7 Python -Fehler, die eigentlich Funktionen sindBild von Autor | Ideogramm

Python ist für viele Datenfachleute für Datenmanipulationen und maschinelles Lernen zu einem Hauptwerkzeug geworden, da es für Menschen einfach ist. Die Programmiersprache ist im Grunde genommen zum Goldstandard in der Datengemeinschaft geworden.

Wenn Sie mit Python bereits vertraut sind, begegnen Sie häufig auf fehlerhafte Informationen, wenn Sie eine falsche Syntax erstellen oder gegen die Regeln von Python verstoßen. Es ist in Pythons Designphilosophie eingebettet, um zu betonen Leichter zu bitten, Vergebung als die Erlaubnis zu bitten (EAFP), mit dem Sie den Code zuerst ausführen können, bevor Sie wissen, ob ein Fehler vorliegt.

Einige Python -Fehler sind keine Fehler, sondern Funktionen, die den Benutzern helfen, ihre Python -Fähigkeiten zu verbessern. Das Verständnis dieser Fehler ist von entscheidender Bedeutung, wenn wir sie als Anleitung für unsere Arbeit absichtlich verwenden möchten. Für Lernzwecke werden in diesem Artikel sieben verschiedene Python -Fehler untersucht, die Merkmale sind.

Lassen Sie uns darauf eingehen.

1. Syntaxfehler

Ein Syntaxfehler wird angesprochen, wenn der Python -Parser auf ungültige Code -Syntax trifft, die nicht der Python -Logik folgt. Jeder unsachgemäße Code wird als Fehler angezeigt, der für die Entwurfsfunktionen von Python von grundlegender Bedeutung wird. Lassen Sie uns den Fehler im Python -Code sehen.

Der obige Code erhöht einen Syntaxfehler wie unten.

 Cell In(6), line 1
    if True print("good day")
            ^
SyntaxError: invalid syntax

Der Fehler zeigt, dass wir uns nicht an die Python -Syntax halten. Das Syntax -Fehlerdesign ist beabsichtigt, da es sich um eine Python -Funktion handelt, die grundlegend angibt, dass eine Abweichung vom Commonplace festgelegt werden muss. Es wird keinen Code ausführen, der der Sprachgrammatik nicht folgt, und versucht nicht zu erraten, was wir tun wollen.

Der Syntaxfehler stellt sicher, dass wir immer einen klaren und eindeutigen Code haben. Es hilft auch bei der Zusammenarbeit, da der Commonplace konsistent bleibt, unabhängig davon, wo Sie die Python -Sprache betreiben.

2. Indexfehler

Für alle, die Python verwenden, gibt es viele Male, wenn wir Sequenzobjekte wie Hear oder Tupel für unsere Arbeit verwenden. Durch den Zugriff auf Daten in diesen Sequenzobjekten müssen wir Indexierungsmethoden verwenden.

Was passiert, wenn wir mit einem Index außerhalb seiner Grenzen zugreifen? Python wirft eine Fehlermeldung. Mal sehen, was mit dem tatsächlichen Code passiert.

lst = (1, 2, 3)
print(lst(5))

Der obige Code wirft den folgenden Fehler aus:

IndexError                                Traceback (most up-to-date name final)
Cell In(2), line 2
      1 lst = (1, 2, 3)
----> 2 print(lst(5))

IndexError: record index out of vary

Der Fehler wird als Indexfehler angezeigt, wodurch Sie darüber informiert werden, dass der Index außerhalb des Bereichs liegt. Der Fehler ist beabsichtigt, da er zeigt, dass Python keine stille Polsterung zulässt (ein Fall, in dem außerhalb der gebundenen Datenzugriff die Struktur automatisch mit Platzhalterwerten erweitert).

Wenn es passieren würde, würde das Verhalten subtile Fehler einführen, die mehr Probleme in einer komplexeren Pipeline verursachen. Zum Beispiel wird das Schleifen in einer Python -Sequenz die Schleife brechen, wenn der Index nicht Grenzen ist, was nicht passieren würde, wenn keine Indexfehler vorliegen würden.

3. Schlüsselfehler

Wie wir wissen, kartiert das Wörterbuchobjekt Schlüssel zu Werten, die im Inneren gespeichert sind. Ähnlich wie bei einem Indexfehler tritt ein Schlüsselfehler für das Wörterbuchobjekt auf, wenn der Suchfehler fehlschlägt, da der Schlüssel im Wörterbuch nicht vorhanden ist. Mal sehen, wie es im Python -Code wirkt.

d = {'a': 1}
print(d('b'))

Der obige Code erhöht den folgenden Fehler:

KeyError                                  Traceback (most up-to-date name final)
Cell In(3), line 2
      1 d = {'a': 1}
----> 2 print(d('b'))

KeyError: 'b'

Der Schlüsselfehler wird angesprochen, da kein ‚B‘ -Staste im Wörterbuch ist. Durch das Design stellt Python diesen Fehler explizit auf, da wir nicht möchten, dass ein unbeabsichtigtes Verhalten für den Schlüssel lautlos Platzhalterwerte verwendet.

Mit diesem Schlüsselfehler können wir alle Syntaxfehler oder Logikfehler während des Zugriffs des Wörterbuchs fangen, anstatt zu erraten, ob der Schlüssel vorhanden ist oder nicht. Der Fehler ist auch nützlich, wenn es mit der Attempt/außer Syntax kombiniert wird, um einen neuen Schlüssel im Wörterbuch zu erstellen, wenn es nicht vorhanden ist.

4. Identify Fehler

Identify Fehler ist ein Fehler, der auftritt, wenn wir eine Variable aufrufen, die zuvor nicht definiert wurde. Es gibt auch einen ähnlichen Fall, der als ungebundener lokaler Fehler bezeichnet wird, eine Unterklasse mit Namensfehler, in der wir eine Python -Funktion haben, die versucht, auf eine lokale Variable zuzugreifen, bevor sie definiert ist. Sehen wir den Fehler im Code unten an.

Der Fehler wird in der folgenden Ausgabe angezeigt.

NameError                                 Traceback (most up-to-date name final)
Cell In(5), line 1
----> 1 print(x)

NameError: identify 'x' just isn't outlined

Der Code erhöht einen Fehler, da wir die „x“ -Variable noch nicht definiert haben. Lassen Sie uns den Python -Code für den ungebundenen lokalen Fehler sehen.

def foo():
    x = x + 1  

foo()

Der Fehler wird in der folgenden Ausgabe angezeigt.

Cell In(4), line 2, in foo()
      1 def foo():
----> 2     x = x + 1

UnboundLocalError: can't entry native variable 'x' the place it's not related to a price

Beide Fehler hier werden aufgeworfen, weil wir Pythons Scoping -Regel folgen müssen, die besagt, dass wir nicht versehentlich Variablen verwenden können, die noch nicht vorhanden sind. Mit dem Fehler können Benutzer Tippfehler oder Fehler sofort fangen, anstatt Python stillschweigend Variablen zu erstellen, die unsere Python -Arbeit stören.

5. Typ Fehler

Der Typ -Fehler ist ein Fehler, der angesprochen wird, wenn wir eine bestimmte Operation auf einem Objekt jedoch mit dem falschen Objekttyp ausführen. Zeigen wir den Typ -Fehler mit dem folgenden Python -Code an.

Der Fehler wird wie in der folgenden Ausgabe gezeigt angesprochen.

TypeError                                 Traceback (most up-to-date name final)
Cell In(7), line 1
----> 1 subsequent((1, 2, 3))

TypeError: 'record' object just isn't an iterator

Der Typ -Fehler tritt auf, da wir kein Iteratorobjekt an die nächste Funktion übergeben können.

Python ist so konzipiert, dass Objekte nur auf ihre beabsichtigte Weise verwendet werden. Deshalb hilft dieser Fehler den Benutzern, subtile Fehler zu verhindern, und stellt sicher, dass die Funktion wie beabsichtigt funktioniert.

6. Wertfehler

Im Gegensatz zum Typ -Fehler wird der Wertfehler angehoben, wenn die Funktion ein korrektes Argument des Typs erhält, aber einen unangemessenen Wert. Zeigen wir es mit dem Python -Code.

Der Fehler wird im Ergebnis unten angezeigt.

ValueError                                Traceback (most up-to-date name final)
Cell In(8), line 1
----> 1 int("abc")

ValueError: invalid literal for int() with base 10: 'abc'

Sie können sehen, dass der Wertfehler auftritt, da wir einen Zeichenfolgenwert übergeben, der keine gültige Zahl ist. Die Funktion empfängt den richtigen Typ, aber nicht den richtigen Wert, sodass Python signalisiert, dass dies ein Fehler ist. Es ist das Python -Design, das zeigt, dass der Fehler stattfindet, anstatt ihn zu ignorieren oder einen Platzhalterwert zu setzen, da dies unsere Arbeit stören würde.

7. Behauptungsfehler

Ein Behauptungsfehler tritt auf, wenn die Assert -Anweisung verwendet wird und die Bedingung nicht erfüllt ist oder falsch ist. Es ist eine Funktion, die zum Debugieren und Durchsetzen von Annahmen in Ihrer Python -Arbeit nützlich ist. Lassen Sie uns den Fehler mit dem folgenden Python -Code sehen.

assert 2 + 2 == 5, "It isn't proper"

Sie erhalten den folgenden Fehler.

AssertionError                            Traceback (most up-to-date name final)
Cell In(13), line 1
----> 1 assert 2 + 2 == 5, "It isn't proper"

AssertionError: It isn't proper

Der Code 2 + 2 == 5 erzeugt einen falschen Wert, der zu einem Behauptungsfehler führt, wenn wir die Assert -Anweisung verwenden. Wir können immer Particulars über den Fehler bei der Verwendung von Assert angeben, ähnlich wie Sie oben sehen.

Der Behauptungsfehler hilft Benutzern, Flexibilität in der Entwicklung zu bieten, da wir ein fehleranfälliges System einrichten können, das ein einfacheres Debuggen ermöglicht. Durch die Auswahl der Bedingungen, unter denen der Behauptungsfehler erhöht wird, erhalten wir auch mehr Kontrolle darüber, wie sich der Fehler verhalten sollte.

Abschluss

Viele Datenfachleute verwenden Python. Die Programmiersprache wirft manchmal Fehler auf, die tatsächlich Merkmale sind, und so müssen wir unsere Augen offen halten und unseren Traceback -Stapel inspizieren.

Ich hoffe das hat geholfen!

Cornellius Yudha Wijaya ist ein Information Science Assistant Supervisor und Datenautor. Während er in Vollzeit bei Allianz Indonesien arbeitet, liebt er es, Python- und Datentipps über soziale Medien und das Schreiben von Medien zu teilen. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.

[ad_2]

]]>
https://chatgpz.de/data-analytics/7-python-fehler-die-eigentlich-funktionen-sind/feed/ 0 9858
Braucht man eigentlich eine Vektordatenbank? https://chatgpz.de/data-science/braucht-man-eigentlich-eine-vektordatenbank/ https://chatgpz.de/data-science/braucht-man-eigentlich-eine-vektordatenbank/#respond Thu, 13 Jun 2024 08:59:32 +0000 http://chatgpz.de/data-science/braucht-man-eigentlich-eine-vektordatenbank/ [ad_1]

Spoiler-Alarm: Die Antwort ist vielleicht! Allerdings verrät die Verwendung des Wortes „eigentlich“ meine Voreingenommenheit.

Vektordatenbanken haben derzeit ihren großen Durchbruch. Drei verschiedene Vektordatenbank-Unternehmen haben Geld mit Bewertungen von bis zu 700 Millionen Greenback eingesammelt (Paywall-Hyperlink). Überraschenderweise liegt ihr Popularitätsanstieg nicht an ihrem „ursprünglichen“ Zweck in Empfehlungssystemen, sondern eher an ihrer Verwendung als Hilfswerkzeug für Massive Language Fashions (LLMs). Viele On-line-Beispiele für die Kombination von Embeddings mit LLMs zeigen Ihnen, wie sie die Embeddings in einer Vektordatenbank speichern.

Während dies für einen Proof of Idea intestine und schnell ist, ist die Einführung einer neuen Infrastruktur immer mit Kosten verbunden, insbesondere wenn es sich bei dieser Infrastruktur um eine Datenbank handelt. Ich werde in diesem Blogbeitrag ein wenig auf diese Kosten eingehen, aber mich interessiert vor allem, ob es überhaupt einen greifbaren Nutzen gibt.

Warum eine Vektordatenbank?

Ich denke, ich werde die obligatorische Erklärung der Einbettungen überspringen. Andere haben Erledigt Das viel besser als ich. Nehmen wir additionally an, Sie wissen, was Einbettungen sind und dass Sie planen, einige davon einzubetten. Dinge (wahrscheinlich Dokumente, Bilder oder „Entitäten“ für ein Empfehlungssystem). Normalerweise verwenden die Leute eine Vektordatenbank, damit sie schnell die Am ähnlichsten Einbettungen zu einer gegebenen Einbettung. Vielleicht haben Sie eine Reihe von Bildern eingebettet und möchten andere Hunde finden, die einem bestimmten Hund ähnlich sehen. Oder Sie betten den Textual content einer Suchanfrage ein und möchten die 10 Dokumente finden, die der Suchanfrage am ähnlichsten sind. Mit Vektordatenbanken können Sie dies sehr schnell erledigen.

Vorsätzliche Berechnung

Vektordatenbanken können Ähnlichkeiten schnell berechnen, weil sie diese bereits vorab berechnet haben. Ähm, um honest zu sein, sie haben etwa vorab berechnet. Für $N$ Entitäten sind $O(N^{2})$ Berechnungen erforderlich, um die Ähnlichkeit zwischen jedem einzelnen Ingredient und jedem anderen Ingredient zu berechnen. Wenn Sie Spotify sind und über 100 Millionen Titel haben, kann dies eine ziemlich große Berechnung sein! (Zum Glück ist es zumindest peinlich parallel). Vektordatenbanken ermöglichen es Ihnen, etwas Genauigkeit gegen Geschwindigkeit einzutauschen, sodass Sie die (ungefähr) ähnlichsten Entitäten zu einer bestimmten Entität problemlos berechnen können.

Musst du Vor-aber die Ähnlichkeit zwischen jeder Entität berechnen? Ich denke dabei an Batch versus Streaming für Knowledge Engineering oder Batch-Vorhersage versus Echtzeit-Inferenz für ML-Modelle. Ein Vorteil von Batch ist, dass es Echtzeit vereinfacht. Ein Nachteil von Batch ist, dass Sie berechnen müssen allesunabhängig davon, ob Sie es wirklich brauchen oder nicht.

Um Ähnlichkeiten zu messen, können Sie diese Berechnung in Echtzeit durchführen. Für insgesamt $N$ Entitäten beträgt die Zeitkomplexität für die Berechnung der okay ähnlichsten Entitäten zu einer bestimmten Entität $O(N)$. Dies ergibt sich aus einigen Annahmen: Wir verwenden Kosinusähnlichkeit als Ähnlichkeitsmetrik und gehen davon aus, dass die Einbettungen bereits normalisiert wurden. Dann beträgt es für eine Einbettungsdimension $d lt lt N$ $O(Nd)$, die Ähnlichkeit zwischen einer bestimmten Einbettung und allen anderen $N$ Einbettungen zu berechnen. Um die okay ähnlichsten Entitäten zu finden, müssen wir ein weiteres $O(N + okay log(okay))$ hinzufügen. Das ergibt insgesamt ungefähr $O(N)$.

In numpyDie „Echtzeit“-Berechnung umfasst 3 Codezeilen:

# vec -> 1D numpy array of form D
# mat -> 2D numpy array of form N x D
# okay -> variety of most comparable entities to search out.
similarities = vec @ mat.T
partitioned_indices = np.argpartition(-similarities, kth=okay)(:okay)
top_k_indices = partitioned_indices(np.argsort(-similarities(partitioned_indices)))

Beweisbasierte Behauptungen

Abhängig von Ihrer Größe von $N$ und Ihren Latenzanforderungen kann $O(N)$ sehr vernünftig sein! Um meinen Standpunkt zu beweisen, habe ich einen kleinen Benchmark zusammengestellt. Den gesamten Code für den Benchmark finden Sie hier nn-gegen-ann GitHub-Repository.

Für meinen Benchmark initialisiere ich zufällig $N$ Einbettungen mit jeweils 256 Dimensionen. Dann messe ich die Zeit, die es braucht, um die 5 „nächsten Nachbarn“ (additionally die ähnlichsten) Einbettungen zu einer bestimmten Einbettung auszuwählen. Ich führe diesen Benchmark für einen Bereich von $N$ Werten mit zwei verschiedenen Ansätzen durch:

  • numpy ist die „Echtzeit“-Berechnung, die die nächste Nachbarberechnung mit voller Genauigkeit und ohne Vorkalkulation durchführt.
  • hnswlib Verwendet hnswlib um ungefähre nächste Nachbarn vorab zu berechnen.

Die Ergebnisse sind unten dargestellt, wobei beide Achsen logarithmisch sind. Es ist schwer zu erkennen, wenn wir es mit logarithmisch-logischen Skalen zu tun haben, aber numpy skaliert linear mit $N$. Die Latenz beträgt ungefähr 50 Millisekunden professional Million Einbettungen. Je nach Ihren $N$- und Latenzanforderungen können 50 ms für 1 Million Einbettungen vollkommen ausreichend sein! Darüber hinaus sparen Sie sich die Komplikation, eine Vektordatenbank einzurichten und die ~100 Sekunden zu warten, um diese Millionen Einbettungen zu indizieren.

nn-gegen-ann

Aber das ist nicht honest

Eyyyyy, du hast mich erwischt! Ich habe viele Faktoren in diesem Argument übersehen und ignoriert. Hier sind ein paar Gegenargumente, die related sein könnten:

  1. Der numpy Dieser Ansatz erfordert, dass ich alles im Speicher behalte, was nicht skalierbar ist.
  2. Wie kann man das überhaupt in die Produktion umsetzen? numpy Ansatz? Einlegen und array? Das klingt schrecklich, und wie aktualisiert man es dann?
  3. Was ist mit all den anderen Vorteilen einer Vektordatenbank, wie beispielsweise der Metadatenfilterung?
  4. Was ist, wenn ich wirklich viele Einbettungen habe?
  5. Sollten Sie nicht mit dem Hacken aufhören und stattdessen einfach das richtige Werkzeug für die jeweilige Aufgabe verwenden?

Lassen Sie mich nun meine eigenen Gegenargumente vorbringen:

1. Die numpy Dieser Ansatz erfordert, dass ich alles im Speicher behalte, was nicht skalierbar ist.

Ja, obwohl Vektordatenbanken auch erfordern, dass Dinge im Speicher gehalten werden (glaube ich?). Außerdem können Sie heutzutage Maschinen mit sehr viel Speicher erwerben. Außerdem können Sie Ihre Einbettungen im Speicher abbilden, wenn Sie Speicher gegen Zeit tauschen möchten.

2. Wie kann man das überhaupt produzieren? numpy Ansatz? Einlegen und array? Das klingt schrecklich, und wie aktualisiert man es dann?

Ich bin froh, dass du gefragt hast! Ich habe tatsächlich produziert diesen Ansatz bei einem Startup, bei dem ich gearbeitet habe. Jeden Tag habe ich ein kontrastives Lernmodell für Bildähnlichkeiten trainiert, um gute Bilddarstellungen zu lernen. Ich habe die Bildeinbettungen als JSON in S3 geschrieben. Ich hatte eine API, die die ähnlichsten Bilder für ein Eingabebild berechnete, indem ich die numpy Methode im Benchmark. Diese API hatte einen asynchronen Hintergrundjob, der von Zeit zu Zeit nach neuen Einbettungen auf S3 suchte. Wenn neue Einbettungen gefunden wurden, wurden sie einfach in den Speicher geladen.

3. Was ist mit all den anderen Vorteilen einer Vektordatenbank, wie beispielsweise der Metadatenfilterung?

Ja, und deshalb sollten Sie vielleicht einfach Ihre vorhandene Datenbank verwenden (oder sogar Erweitern Sie es!) oder eine bewährte Dokumentendatenbank wie Elasticsearch anstelle einer Vektordatenbank. Wenn Sie nach verschiedenen Metadaten filtern müssen, speichern Sie diese Metadaten bereits in Ihrer „normalen“ Datenbank? Wenn ja, wird es ärgerlich sein, diese Daten mit einem neuen System synchronisieren zu müssen. Ich bin sicherlich kein Fan von diesem.

4. Was ist, wenn ich wirklich viele Einbettungen habe?

Dann müssen Sie vielleicht einfach eine spezialisierte Vektor-Datenbank verwenden (obwohl ich glaube, dass Elasticsearch unterstützt ungefähre nächste Nachbarn). Eine Sache, die ich noch einmal überprüfen würde, ist, dass Sie Ihre Suche nicht auf eine vernünftige Anzahl von Einbettungen reduzieren können, bevor Sie Ihre Ähnlichkeitsberechnungen durchführen. Wenn Sie beispielsweise nach den ähnlichsten Hemden zu einem bestimmten Hemd suchen, müssen Sie keine Ähnlichkeiten für Nicht-Hemden berechnen!

5. Sollten Sie nicht mit dem Hacken aufhören und stattdessen einfach das richtige Werkzeug für die jeweilige Aufgabe verwenden?

Wie bei den meisten Dingen gehe ich davon aus, dass das richtige Instrument für die Aufgabe wahrscheinlich das Instrument ist, das Sie bereits verwenden. Und dieses Instrument ist wahrscheinlich Postgres oder Elasticsearch, wenn Sie es wirklich brauchen.

Schöne neue Welt

Meine Argumente sind vielleicht alle hinfällig, wenn man bedenkt, dass wir uns in eine Welt großer, offener LLMs bewegen, die Zugriff auf beispielsweise die gesamte Wikipedia benötigen, um Fragen beantworten zu können. Für diese Anwendungen sind Vektordatenbanken sicherlich sinnvoll. Mich interessieren jedoch eher nicht offene LLMs, und ich frage mich, inwieweit diese Vektordatenbanken erfordern werden. Mal sehen, was passiert! Bei dem Tempo, in dem die Dinge voranschreiten, kann ich den Nachmittag nicht vorhersagen, additionally werde ich einfach versuchen, mein Mittagessen zu genießen.

[ad_2]

]]>
https://chatgpz.de/data-science/braucht-man-eigentlich-eine-vektordatenbank/feed/ 0 1388