Ein guter Einstieg für App-Entwickler mit Interesse an AI: Embeddings
(bawolf.substack.com)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-smallvon 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
limiteingesetzt 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
Hacker-News-Meinungen
Zusammenfassung der Hacker-News-Kommentare
Komfort bei Dokumenten-Embeddings und Ähnlichkeitssuche mit RAG-Modellen
sentence-transformersundfaisslassen sich Dokumenten-Embeddings und Ähnlichkeitssuche leicht umsetzenVerständnis der Grundkonzepte von Embeddings
Mangel an detaillierter Erklärung des Embedding-Erzeugungsprozesses
They're a bit of a black boxerwähnt, ohne ihn näher zu erläuternSchwierigkeit bei der Behandlung von Homonymen
Nutzung von Embeddings auch ohne Vektor-Datenbank möglich
@-Operator von Numpy das Skalarprodukt zwischen einem normalisierten Query-Vektor und einer Record-Matrix bildetAusführung der Embedding-Logik in einer lokalen Umgebung
Einsatzmöglichkeiten von Embeddings beim Schreiben technischer Dokumentation
Speicherung und Nutzung von Embeddings
Fehlende Einführung in Hintergrundwissen für Entwickler mit AI-Einstieg