24 Punkte von GN⁺ 2024-04-18 | 1 Kommentare | Auf WhatsApp teilen

Leitfaden zur Nutzung von Embeddings für App-Entwickler

  • Vektor-Embeddings eignen sich für Such- und Empfehlungsfunktionen, weil sie Ähnlichkeiten zwischen verschiedensten Eingaben effektiv messen können. Sie funktionieren auch in anderen Sprachen wie Französisch oder Japanisch gut.
  • Pgvector ist eine Postgres-Erweiterung zum Speichern und Abfragen von Embeddings und ist leistungsstark, weil sich Embedding-Operationen ohne zusätzliche neue Services mit SQL-Logik kombinieren lassen.
  • Anders als bei LLMs fühlt sich die Nutzung von Embeddings eher wie gewöhnlicher deterministischer Code an.

Entwicklung eines Projekts für Iconsuche und Empfehlungen

  • Nach dem Setup von Pgvector wurde eine Strategie erstellt, um Icon-Daten in Embedding-Vektoren zu kodieren.
  • Verwendet wurde das Modell text-embedding-3-small von OpenAI.
  • Mit Cosine Similarity wird die Ähnlichkeit zwischen dem Suchbegriff und den Embeddings der einzelnen Icons gemessen.
  • Mit der Embedding-Suche wird Business-Logik wie das Filtern nach Icon-Sets kombiniert.
  • Es wird ein Beispiel für einen Ranking-Algorithmus gezeigt, der Klickdaten zu Icons für Suchbegriffe nutzt.
  • Zum Empfehlen von Icons, die dem ausgewählten Icon ähnlich sind, werden Embedding-Vergleiche verwendet.

Zusammenfassung des Implementierungsansatzes

  • Als Vektor-DB wurde pgvector/Postgres gewählt. Es gibt auch andere Optionen wie MongoDB.
  • Entwickelt wurde in Typescript mit drizzle-orm. Es gibt auch viele Bibliotheken für andere Sprachen und Frameworks.
  • Die App wird bei Neon gehostet. Auch gemanagte DB-Hosting-Services wie fly.io oder Supabase sind nutzbar.
  • Verwendet wird OpenAIs Embedding-Modell text-embedding-3-small. Über das Huggingface-Leaderboard lassen sich auch andere Modelle auswählen.
  • Von den Icon-Eigenschaften werden die suchrelevantesten als Key-Value-Paare eingebettet.
  • Als Distanzfunktion wird Cosine Similarity verwendet. Pgvector unterstützt auch l2 distance und inner product.
  • Die Suchergebnisse sind auf die Top 50 begrenzt. Wenn ein Distanzbereich verwendet wird, sollte er großzügig gewählt und zusammen mit limit eingesetzt werden.

Meinung von GN⁺

  • Für die meisten Projekte dürfte es ausreichen, einem bestehenden DB-System mit pgvector Vektor-Funktionen hinzuzufügen. Eine separate Vektor-DB scheint erst bei sehr großen Services nötig zu sein.
  • Ein großer Vorteil ist, dass sich Business-Logik natürlich mit der Embedding-Suche kombinieren lässt. Die Stärken von SQL können dabei direkt genutzt werden.
  • Die Idee, Feedback-Daten von Nutzern in den Ranking-Algorithmus einfließen zu lassen, ist gut. Damit dürfte sich die Suchgenauigkeit kontinuierlich verbessern lassen.
  • Im Vergleich zu LLMs wirken Embedding-basierte Services klarer im Verhalten und leichter zu debuggen, was ihre Anwendung in echten Services deutlich erleichtert.
  • Da verschiedene Open-Source-Embedding-Modelle verfügbar sind, lassen sich hochwertige Embeddings auch dann leicht nutzen, wenn die Entwicklung eines eigenen Modells schwierig ist.

1 Kommentare

 
GN⁺ 2024-04-18
Hacker-News-Meinungen

Zusammenfassung der Hacker-News-Kommentare

Komfort bei Dokumenten-Embeddings und Ähnlichkeitssuche mit RAG-Modellen

  • Mit den Bibliotheken sentence-transformers und faiss lassen sich Dokumenten-Embeddings und Ähnlichkeitssuche leicht umsetzen
  • Es könnte ein interessantes Projekt sein, eine bessere Leistung als das Empfehlungssystem der New York Times zu erzielen
  • Auf dem YouTube-Kanal von James Briggs wird das Thema gut erklärt

Verständnis der Grundkonzepte von Embeddings

  • Auch ohne AI/Deep Learning lassen sich Embeddings erstellen, indem man Wörtern eindeutige Indizes zuweist und Werte anhand ihrer Häufigkeit aufsummiert
  • Ähnlichkeitssuche ist dann etwa mit Kosinus-Ähnlichkeit möglich
  • Deep-Learning-basierte Embeddings erweitern dieses Grundkonzept um Funktionen wie Wort-/Token-Filterung und Synonymbehandlung

Mangel an detaillierter Erklärung des Embedding-Erzeugungsprozesses

Schwierigkeit bei der Behandlung von Homonymen

  • Durch Homonyme können unbeabsichtigte Suchergebnisse entstehen, etwa wenn bei der Suche nach "king" ein ruler-Symbol erscheint
  • Zugleich kann es eine unterhaltsame Herausforderung sein, passende Icons zu finden

Nutzung von Embeddings auch ohne Vektor-Datenbank möglich

  • In Produktionsumgebungen mit großen Datenmengen ist ein Vektor-Store wegen Latenz und ähnlicher Gründe wichtig, für Toy-Projekte reicht aber eine einfache Umsetzung mit Numpy aus
  • Die Ähnlichkeit kann berechnet werden, indem man mit dem @-Operator von Numpy das Skalarprodukt zwischen einem normalisierten Query-Vektor und einer Record-Matrix bildet

Ausführung der Embedding-Logik in einer lokalen Umgebung

  • Es wird die Frage aufgeworfen, wie sich Embeddings direkt lokal oder in einer Datenbank erzeugen lassen, ohne von der OpenAI API abhängig zu sein

Einsatzmöglichkeiten von Embeddings beim Schreiben technischer Dokumentation

  • Seit dem Aufkommen von ChatGPT wird unter Technical Writers lebhaft über den Einsatz als semantisches Suchwerkzeug diskutiert
  • Das kann helfen, die Effizienz in der Recherchephase für die Dokumentation zu steigern

Speicherung und Nutzung von Embeddings

  • Üblicherweise werden Embeddings erzeugt und gespeichert und bei Bedarf wieder geladen
  • In einfachen Fällen können Embeddings auch direkt als Array oder ähnlich übergeben und verwendet werden
  • Die Speicherung ist der schwierigere Teil, dafür ist aber keine spezielle Datenbank nötig; auch ein SQLite-BLOB ist möglich
  • Embeddings "laufen nicht ab"

Fehlende Einführung in Hintergrundwissen für Entwickler mit AI-Einstieg

  • Der Artikel springt direkt zur Nutzung von Embeddings und Vektor-Datenbanken, ohne die Konzepte zu erklären
  • Für Menschen, die einen guten Einstiegspunkt als App-Entwickler mit Interesse an AI suchen, wäre eine Einführung in die relevanten Konzepte wohl nötig gewesen