Daten spielen seit jeher eine zentrale Rolle bei der Entwicklung von Softwarelösungen. Eine der größten Herausforderungen in diesem Bereich ist die Verarbeitung und Interpretation unstrukturierter Daten wie Texte, Bilder oder Audio-Dateien. Hier kommen Embedding-Vektoren (kurz Embeddings) ins Spiel – eine Technologie, die im Bereich der Entwicklung von Softwarelösungen mit Einbindung von KI-Funktionen zunehmend an Bedeutung gewinnt.
Embeddings sind im Wesentlichen eine Technik zur Umwandlung von unstrukturierten Daten in eine Struktur, die von Software leicht verarbeitet werden kann. Sie dienen dazu, komplexe Daten wie Wörter, Sätze oder sogar ganze Dokumente in einen Vektorraum zu transformieren, wobei ähnliche Elemente nahe beieinander liegen. Diese Vektordarstellungen ermöglichen es Maschinen, Nuancen und Beziehungen in den Daten zu erkennen und zu nutzen, was für eine Vielzahl von Anwendungen wie natürliche Sprachverarbeitung (NLP), Bilderkennung und Empfehlungssysteme unerlässlich ist.
OpenAI, der Hersteller des KI-Systems ChatGPT, bietet Modelle unter anderem zum Erstellen von Embeddings für Texte an. Ende Januar 2024 hat OpenAI neue Versionen dieser Embedding-Modelle vorgestellt, die im Vergleich zu ihren Vorgängerversionen leistungsfähiger und kostengünstiger sind. In diesem Artikel werden wir nach einer kurzen, generellen Vorstellung von Embeddings näher mit den OpenAI Embeddings und den kürzlich vorgestellten Neuerungen befassen, ihre Funktionsweise erörtern und untersuchen, wie sie in verschiedenen Softwareentwicklungsprojekten eingesetzt werden können.
Embeddings kurz erklärt
Stellen Sie sich vor, Sie befinden sich in einem Raum voller Menschen und Ihre Aufgabe ist es, diese Menschen basierend auf ihrer Persönlichkeitsstruktur zu gruppieren. Um dies zu tun, könnten Sie beginnen, Fragen zu verschiedenen Persönlichkeitsmerkmalen zu stellen. Zum Beispiel könnten Sie fragen, wie offen jemand für neue Erfahrungen ist, und die Antwort auf einer Skala von 0 bis 1 bewerten. Jeder Person wird somit eine Zahl zugeordnet, die ihre Offenheit repräsentiert.
Als Nächstes könnten Sie nach einem anderen Persönlichkeitsmerkmal fragen, wie z. B. dem Grad des Pflichtbewusstseins, und wiederum eine Bewertung zwischen 0 und 1 vergeben. Jetzt hat jede Person zwei Zahlen, die zusammen einen Vektor in einem zweidimensionalen Raum bilden. Indem Sie weitere Fragen zu unterschiedlichen Persönlichkeitsmerkmalen stellen und diese auf ähnliche Weise bewerten, können Sie einen mehrdimensionalen Vektor für jede Person erstellen. In diesem Vektorraum können dann Personen, die ähnliche Vektoren haben, als ähnlich in Bezug auf ihre Persönlichkeit angesehen werden.
In der Welt der künstlichen Intelligenz verwenden wir Embeddings, um unstrukturierte Daten in einen n-dimensionalen Vektorraum zu transformieren. Ähnlich wie bei den Persönlichkeitsmerkmalen der Menschen im Raum repräsentiert jeder Punkt in diesem Vektorraum ein Element der ursprünglichen Daten (wie ein Wort oder einen Satz) in einer Weise, die für Computer verständlich und verarbeitbar ist.
OpenAI Embeddings
OpenAI Embeddings erweitern dieses Grundkonzept. Anstatt einfache Merkmale wie Persönlichkeitszüge zu verwenden, nutzen OpenAI-Modelle fortschrittliche Algorithmen und große Datenmengen, um eine viel tiefere und nuanciertere Darstellung der Daten zu erreichen. Das Modell analysiert nicht nur einzelne Wörter, sondern betrachtet auch den Kontext, in dem diese Wörter verwendet werden, was zu präziseren und aussagekräftigeren Vektordarstellungen führt.
Ein weiterer wichtiger Unterschied ist, dass OpenAI Embeddings auf hochentwickelten maschinellen Lernmodellen basieren, die aus einer riesigen Menge an Daten lernen können. Dies bedeutet, dass sie in der Lage sind, subtile Muster und Beziehungen in den Daten zu erkennen. Sie gehen weit über das hinaus, was durch einfache Skalierung und Dimensionierung erreicht werden könnte, wie es in der anfänglichen Analogie der Fall war. Dies führt zu einer deutlich verbesserten Fähigkeit, Ähnlichkeiten und Unterschiede in den Daten zu erkennen und zu nutzen.
Einzelwerte sind nicht aussagekräftig
Während in der Analogie mit den Persönlichkeitsmerkmalen jeder einzelne Wert eines Vektors direkt auf ein konkretes Merkmal schließen lässt – beispielsweise die Offenheit für neue Erfahrungen oder das Pflichtbewusstsein –, ist dieser direkte Zusammenhang bei den OpenAI Embeddings nicht mehr gegeben. In diesen Embeddings kann man nicht einfach einen einzelnen Wert des Vektors isoliert betrachten und daraus auf spezifische Eigenschaften der Eingangsdaten schließen. Beispielsweise lässt sich aus einem bestimmten Wert im Embedding-Vektor eines Satzes nicht direkt ableiten, wie freundlich oder negativ dieser Satz ist.
Der Grund dafür liegt in der Art und Weise, wie maschinelle Lernmodelle Informationen kodieren. Dies gilt insbesondere für solche, die für die Erstellung von Embeddings verwendet werden. Die Modelle arbeiten mit komplexen, mehrdimensionalen Repräsentationen, bei denen die Bedeutung eines einzelnen Elements (wie eines Wortes in einem Satz) durch das Zusammenspiel vieler Dimensionen im Vektorraum bestimmt wird. Jeder Aspekt der ursprünglichen Daten – sei es der Ton eines Textes, die Stimmung eines Bildes oder die Absicht hinter einer gesprochenen Äußerung – wird durch das gesamte Spektrum des Vektors und nicht durch einzelne Werte innerhalb dieses Vektors erfasst.
Daher ist es bei der Arbeit mit OpenAI Embeddings wichtig zu verstehen, dass die Interpretation dieser Vektoren nicht intuitiv oder direkt ist. Man braucht Algorithmen und Analysen, um aus diesen hochdimensionalen und dicht kodierten Vektoren sinnvolle Schlüsse zu ziehen.
Vergleich von Vektoren mit Kosinusähnlichkeit
Ein zentrales Element im Umgang mit Embeddings ist das Messen der Ähnlichkeit zwischen verschiedenen Vektoren. Eine der gängigsten Methoden dafür ist die Cosine Similarity (Kosinusähnlichkeit). Dieses Maß wird verwendet, um festzustellen, wie ähnlich zwei Vektoren – und somit die durch sie repräsentierten Daten – sind.
Um das Konzept zu verdeutlichen, beginnen wir mit einem einfachen Beispiel in zwei Dimensionen. Stellen Sie sich zwei Vektoren in einer Ebene vor, die jeweils durch einen Punkt im Koordinatensystem dargestellt werden. Die Cosine Similarity zwischen diesen beiden Vektoren wird durch den Kosinus des Winkels zwischen ihnen bestimmt. Wenn die Vektoren in die gleiche Richtung zeigen, ist der Winkel zwischen ihnen 0 Grad und der Kosinus dieses Winkels ist 1, was auf maximale Ähnlichkeit hinweist. Sind die Vektoren orthogonal (d. h., der Winkel beträgt 90 Grad), ist der Kosinus 0, was keine Ähnlichkeit anzeigt. Bei entgegengesetzter Ausrichtung (180 Grad) ist der Kosinus -1, was auf maximale Unähnlichkeit hinweist.
Abbildung 1: Kosinusähnlichkeit
Begleitend zu diesem Artikel steht ein Google Colab Python Notebook [1] zur Verfügung, mit dem man viele der hier gezeigten Beispiele ausprobieren kann. Colab, kurz für Colaboratory, ist ein kostenloser Cloud-Service, der von Google angeboten wird. Er ermöglicht es, Python-Code im Browser zu schreiben und auszuführen. Colab basiert auf Jupyter Notebooks, einer populären Open-Source-Webanwendung, die es ermöglicht, Code, Gleichungen, Visualisierungen und Text in einem einzigen dokumentähnlichen Format zu kombinieren. Der Colab-Service ist gut geeignet, um mit Hilfe von Python das OpenAI API zu erkunden und mit ihm zu experimentieren.
In der Praxis, insbesondere bei der Arbeit mit Embeddings, haben wir es mit n-dimensionalen Vektoren zu tun. Die Berechnung der Cosine Similarity bleibt konzeptionell gleich, auch wenn die Berechnung in höheren Dimensionen komplexer ist. Formal wird die Cosine Similarity zweier Vektoren A und B in einem n-dimensionalen Raum durch das Skalarprodukt (Dot Product) dieser Vektoren, dividiert durch das Produkt ihrer Länge, berechnet:
Abb. 2: Berechnung der Kosinusähnlichkeit
Die Normalisierung der Vektoren spielt eine wichtige Rolle bei der Berechnung der Cosine Similarity. Wenn ein Vektor normalisiert ist, bedeutet dies, dass seine Länge (Norm) auf 1 gesetzt wird. Bei normalisierten Vektoren ist das Skalarprodukt zweier Vektoren direkt gleich der Kosinusähnlichkeit, da die Nenner in der Formel aus Abbildung 2 beide 1 sind. OpenAI-Embeddings sind normalisiert, was bedeutet, dass für die Berechnung der Ähnlichkeit zwischen zwei Embeddings lediglich ihr Skalarprodukt berechnet werden muss. Dies erleichtert nicht nur die Berechnung, sondern erhöht auch die Effizienz bei der Verarbeitung großer Mengen von Embeddings.
OpenAI Embeddings API
OpenAI bietet zum Erstellen von Embeddings ein Web API an. Die genaue Struktur dieses API inklusive Codebeispielen für curl, Python und Node.js findet man in der OpenAI-Referenzdokumentation [2].
Bei OpenAI verwendet man für das Erstellen von Embeddings nicht das LLM von ChatGPT, sondern spezialisierte Modelle. Sie wurden speziell für das Erstellen von Embeddings entwickelt und sind für diese Aufgabe optimiert. Ihre Entwicklung wurde darauf ausgerichtet, hochdimensionale Vektoren zu generieren, die die Eingabedaten möglichst gut repräsentieren. Im Gegensatz dazu ist ChatGPT primär für die Generierung und Verarbeitung von Text in einer Konversationsform optimiert. Die Embedding-Modelle sind außerdem effizienter in Bezug auf Speicher- und Rechenanforderungen als umfangreichere Sprachmodelle wie ChatGPT. Sie sind dadurch erstens schneller und zweitens wesentlich kostengünstiger.
Neue Embedding-Modelle von OpenAI
Bis vor Kurzem empfahl OpenAI für die Erstellung von Embeddings die Verwendung des Modells text-embedding-ada-002. Dieses Modell konvertiert Text in eine Sequenz von Gleitkommazahlen (Vektoren), die die Konzepte innerhalb des Inhalts repräsentieren. Das ada v2 Modell erzeugte Embeddings mit einer Größe von 1536 Dimensionen und lieferte solide Leistungen in Benchmarks wie MIRACL und MTEB, die zur Bewertung der Modellleistung in verschiedenen Sprachen und Aufgaben verwendet werden.
Ende Januar 2024 stellte OpenAI neue, verbesserte Modelle für Embeddings vor:
text-embedding-3-small: Ein kleineres, effizienteres Modell mit verbesserter Leistung im Vergleich zum Vorgängermodell. Es schneidet bei Benchmarks besser ab und ist deutlich kostengünstiger.
text-embedding-3-large: Ein größeres Modell, das leistungsstärker ist und Embeddings mit bis zu 3072 Dimensionen erstellt. Es zeigt die beste Leistung in den Benchmarks, ist aber geringfügig teurer als ada v2.
Unlock the transformative power of OpenAI embeddings with our whitepaper, “Exploring OpenAI Embeddings.” Discover how these cutting-edge models convert unstructured data into actionable insights, revolutionizing NLP, image recognition, and recommendation systems. Stay at the forefront of AI-driven software development with in-depth explanations, practical examples, and the latest innovations from OpenAI. Plus, explore additional articles on AI ethics, MathML, chatbot development, and AI regulation. Download now to harness these innovative technologies and insights for your projects.
Eine neue Funktion der beiden neuen Modelle ermöglicht es Entwicklern, die Größe der Embeddings beim Generieren anzupassen, ohne ihre konzeptdarstellenden Eigenschaften signifikant zu verlieren. Dies ermöglicht eine flexible Anpassung speziell bei Anwendungen, die in Hinblick auf verfügbaren Speicher und Rechenleistung eingeschränkt sind.
Leserinnen und Leser, die an Details zu den neuen Modellen interessiert sind, finden diese in der Ankündigung am OpenAI Blog [3]. Die genauen Kosten der verschiedenen Embedding-Modelle können unter [4] nachgelesen werden.
Ende Januar 2024 hat OpenAI neue Modelle für das Erstellen von Embeddings vorgestellt. Alle in diesem Artikel enthaltenen Codebeispiele und Ergebniswerte beziehen sich bereits auf das neue text-embedding-3-large-Modell.
Embeddings mit Python erstellen
In Folge wird der Umgang mit Embeddings an einigen Codebeispielen demonstriert. Als Programmiersprache wird Python verwendet. Die Codebeispiele sind so gestaltet, dass man sie in Python Notebooks ausprobieren kann. Sie sind in ähnlicher Form auch im zuvor erwähnten, begleitenden Google Colab-Notebook [1] enthalten.
Listing 1 zeigt, wie man mit dem Python SDK von OpenAI Embeddings erstellt. Außerdem wird numpy verwendet, um darzustellen, dass die von OpenAI generierten Embeddings normalisiert sind.
Listing 1
from openai import OpenAI
from google.colab import userdata
import numpy as np
# Create OpenAI client
client = OpenAI(
api_key=userdata.get('openaiKey'),
)
# Define a helper function to calculate embeddings
def get_embedding_vec(input):
"""Returns the embeddings vector for a given input"""
return client.embeddings.create(
input=input,
model="text-embedding-3-large", # We use the new embeddings model here (announced end of Jan 2024)
# dimensions=... # You could limit the number of output dimensions with the new embeddings models
).data[0].embedding
# Calculate the embedding vector for a sample sentence
vec = get_embedding_vec("King")
print(vec[:10])
# Calculate the magnitude of the vector. I should be 1 as
# embedding vectors from OpenAI are always normalized.
magnitude = np.linalg.norm(vec)
magnitude
Ähnlichkeitsanalyse mit Embeddings
In der Praxis werden OpenAI Embeddings vielfach für Ähnlichkeitsanalyse von Texten verwendet (z.B. Suche von Duplikaten, Auffinden relevanter Textabschnitte bezogen auf eine Abfrage des Kunden, Gruppieren von Texten). Embeddings sind dafür sehr gut geeignet, da sie grundlegend anders funktionieren als Vergleichsmethoden, die auf Zeichen basieren, wie etwa die Levenshtein-Distanz. Während sie die Ähnlichkeit zwischen Texten durch das Zählen der minimalen Anzahl von Einzelzeichen-Operationen (Einfügen, Löschen, Ersetzen) misst, die erforderlich sind, um einen Text in einen anderen zu überführen, erfassen Embeddings die Bedeutung und den Kontext von Wörtern oder Sätzen. Sie berücksichtigen die semantischen und kontextuellen Beziehungen zwischen Wörtern, wodurch sie weit über eine einfache zeichenbasierte Vergleichsebene hinausgehen.
Als erstes Beispiel wollen wir uns folgende drei Sätze ansehen (die folgenden Beispiele sind auf Englisch, Embeddings funktionieren aber analog für andere Sprachen, und auch sprachübergreifende Vergleiche sind problemlos möglich):
I enjoy playing soccer on weekends.
Football is my favorite sport. Playing it on weekends with friends helps me to relax.
In Austria, people often watch soccer on TV on weekends.
Im ersten und zweiten Satz werden zwei unterschiedliche Wörter für das gleiche Thema verwendet: Soccer und Football. Im dritten Satz kommt das ursprüngliche Soccer vor, er hat aber eine grundlegend andere Bedeutung als die ersten beiden Sätze. Berechnet man die Ähnlichkeit von Satz 1 zu 2, erhält man 0.75. Die Ähnlichkeit von Satz 1 zu 3 ist nur 0.51. Die Embeddings haben also die Aussage des Satzes wiedergegeben und nicht auf die Wortwahl.
Hier ein weiteres Beispiel, das Verständnis für den Kontext voraussetzt, in dem Wörter verwendet werden:
He is interested in Java programming.
He visited Java last summer.
He recently started learning Python programming.
Im Satz 2 bezieht sich Java auf einen Ort, während die Sätze 1 und 3 etwas mit Softwareentwicklung zu tun haben. Die Ähnlichkeit von Satz 1 zu 2 ist 0.536, die von 1 zu 3 jedoch 0.587. Die Unterschiedliche Bedeutung des Wortes Java wirkt sich wie erwartet auf die Ähnlichkeit aus.
Das nächste Beispiel geht auf die Behandlung von Negierungen ein:
I like going to the gym.
I don't like going to the gym.
I don't dislike going to the gym.
Die Sätze 1 und 2 sagen das Gegenteil aus, der Satz 3 drückt im Vergleich dazu etwas ähnliches wie Satz 1 aus. Dieser Inhalt schlägt sich in den Ähnlichkeiten der Embeddings nieder. Satz 1 zu Satz 2 ergibt eine Kosinusähnlichkeit von 0.714 während Satz 1 verglichen mit Satz 3 0.773 ergibt. Es überrascht vielleicht, dass es keinen größeren Unterschied zwischen den Embeddings gibt. Man muss jedoch berücksichtigen, worum es in allen drei Sätzen geht, dass sie sich alle auf das gleiche Thema beziehen: Die Frage, ob man gerne zum Training ins Fitnessstudio geht.
Das letzte Beispiel zeigt, dass die OpenAI Embeddings-Modelle genau wie ChatGPT durch das Training mit Texten über die reale Welt ein gewisses „Wissen“ über Begriffe und Zusammenhänge eingebaut haben.
I need to get better slicing skills to make the most of my Voron.
3D printing is a worth-while hobby.
Can I have a slice of bread?
Um diese Sätze sinnvoll vergleichen zu können, sollte man wissen, dass Voron der Name eines bekannten Open-Source-Projekts aus dem Bereich 3D-Druck ist. Außerdem ist es wichtig zu berücksichtigen, dass Slicing ein Begriff ist, der bei 3D-Druck eine wichtige Rolle spielt. Im dritten Satz wird auch von Slice gesprochen, jedoch in einem vollkommen anderen Kontext als in Satz 1. Der Satz 2 erwähnt weder Slicing noch Voron. Durch das eintrainierte Wissen kann das OpenAI Embeddings-Modell jedoch erkennen, dass die Sätze 1 und 2 einen thematischen Zusammenhang haben, Satz 3 jedoch etwas ganz anderes bedeutet. Die Ähnlichkeit von Satz 1 und 2 ist 0.333 während der Vergleich von Satz 1 und 3 nur 0.263 ergibt.
Ähnlichkeitswerte sind keine Prozentwerte
Die Ähnlichkeitswerte aus den oben dargestellten Vergleichen sind die Kosinusähnlichkeit der jeweiligen Embeddings. Obwohl die Werte der Kosinusähnlichkeit in einem Bereich von -1 bis 1 liegen, mit 1 als maximaler Ähnlichkeit und -1 als maximaler Unähnlichkeit, sind sie nicht direkt als Prozentzahlen der Übereinstimmung zu interpretieren. Stattdessen sind diese Werte im Kontext ihrer relativen Vergleiche zu betrachten. In Anwendungen, wie beispielsweise dem Durchsuchen von Textabschnitten in einer Wissensdatenbank, werden die Kosinusähnlichkeitswerte dazu verwendet, die Textabschnitte in Bezug auf ihre Ähnlichkeit zu einem gegebenen Query zu sortieren. Dabei ist es wichtig, die Werte im Verhältnis zueinander zu sehen. Ein höherer Wert deutet auf eine größere Ähnlichkeit hin, aber die genaue Bedeutung des Wertes ergibt sich erst im Vergleich mit anderen ermittelten Ähnlichkeitswerten. Diese relative Betrachtungsweise ermöglicht es, die relevantesten und ähnlichsten Textabschnitte effektiv zu identifizieren und zu priorisieren.
Embeddings und RAG-Lösungen
Embeddings spielen eine entscheidende Rolle in Retrieval-Augmented Generation (RAG) Lösungen, einem Ansatz in der künstlichen Intelligenz, der die Fähigkeiten von Informationsabruf (Retrieval) und Textgenerierung kombiniert. In RAG-Systemen werden Embeddings verwendet, um relevante Informationen aus großen Datensätzen oder Wissensdatenbanken abzurufen. Es ist dabei nicht notwendig, dass diese Datenbanken in das ursprüngliche Training der Embedding-Modelle eingeflossen sind. Es kann sich um interne Datenbestände handeln, die nicht im öffentlichen Internet abrufbar sind.
Bei RAG-Lösungen werden Anfragen oder Eingabetexte in Embeddings umgewandelt. Anschließend wird die Kosinusähnlichkeit zu den in der Datenbank vorhandenen Dokument-Embeddings berechnet, um die relevantesten Textabschnitte aus der Datenbank zu identifizieren. Diese abgerufenen Informationen werden dann von einem Textgenerierungsmodell wie ChatGPT genutzt, um kontextuell relevante Antworten oder Inhalte zu generieren.
Vektordatenbanken spielen eine zentrale Rolle in der Funktionsweise von RAG-Systemen. Sie sind darauf ausgerichtet, hochdimensionale Vektoren effizient zu speichern, zu indizieren und abzufragen. Im Kontext von RAG-Lösungen und ähnlichen Systemen dienen Vektordatenbanken als Speicher für die Embeddings von Dokumenten oder Datenstücken, die aus einer großen Informationsmenge stammen. Wenn ein Nutzer eine Anfrage stellt, wird diese Anfrage zuerst in einen Embedding-Vektor transformiert. Die Vektordatenbank wird dann genutzt, um schnell die am engsten mit diesem Anfragevektor korrespondierenden Vektoren zu finden – also jene Dokumente oder Informationen, die die höchste Ähnlichkeit aufweisen. Dieser Prozess des schnellen Auffindens ähnlicher Vektoren in großen Datensätzen ist bekannt als Nearest Neighbor Search.
Herausforderung: Aufsplitten von Dokumenten
Eine ausführliche Erklärung der Funktionsweise von RAG-Lösungen würde den Rahmen dieses Artikels sprengen. Die Erläuterungen bezüglich Embeddings sind aber hoffentlich hilfreich für den Einstieg in weitere Recherchen zum Thema RAG.
Auf einen spezifischen Punkt soll jedoch zum Abschluss dieses Artikels noch hingewiesen werden: Eine besondere und häufig unterschätzte Herausforderung bei der Entwicklung von RAG-Systemen, die über Hello-World-Prototypen hinausgehen, ist das Aufsplitten längerer Texte. Das Aufsplitten ist notwendig, da die OpenAI Embeddings-Modelle auf etwas mehr als 8.000 Token beschränkt sind. Ein Token entspricht in etwa 4 Zeichen in der englischen Sprache (siehe auch [5]).
Es ist nicht einfach, eine gute Strategie für das Splitten von Dokumenten zu finden. Naive Ansätze wie das Teilen nach einer gewissen Anzahl an Zeichen können dazu führen, dass der Kontext von Textabschnitten verloren geht oder verfälscht wird. Anaphorische Verbindungen sind ein typisches Beispiel dafür. Ein Beispiel sind folgende zwei Sätze:
VX-2000 requires regular lubrication to maintain its smooth operation.
The machine requires the DX97 oil, as specified in the maintenance section of this manual.
The machine im zweiten Satz ist eine anaphorische Verbindung zum ersten Satz. Dort steht die Typenbezeichnung der (fiktiven) Maschine VX-2000. Würde man den Text nach dem ersten Satz aufteilen, ginge wesentlicher Kontext verloren, nämlich dass das Öl DX97 für die Maschine vom Typ VX-2000 notwendig ist.
Es gibt verschiedene Lösungsansätze für dieses Problem, auf die aus Platzgründen hier nicht eingegangen wird. Wesentlich für Entwickler:innen solcher Softwaresysteme ist jedoch, dass sie ein Bewusstsein für die Problemstellung haben und verstehen, wie sich das Splitten großer Texte auf Embeddings auswirkt.
Embeddings spielen eine fundamentale Rolle in der modernen KI-Landschaft, insbesondere im Bereich der natürlichen Sprachverarbeitung. Durch die Transformation komplexer, unstrukturierter Daten in hochdimensionale Vektorräume ermöglichen Embeddings ein tiefgreifendes Verständnis und eine effiziente Verarbeitung von Informationen. Sie bilden die Grundlage für fortschrittliche Technologien wie RAG-Systeme und erleichtern Aufgaben wie Information Retrieval, Kontextanalyse und datengestützte Entscheidungsfindung.
Die jüngsten Neuerungen von OpenAI im Bereich der Embeddings, vorgestellt Ende Januar 2024, markieren einen signifikanten Fortschritt in dieser Technologie. Mit der Einführung der neuen Modelle text-embedding-3-small und text-embedding-3-large bietet OpenAI nun leistungsfähigere und kosteneffizientere Optionen für Entwickler:innen. Diese Modelle zeigen nicht nur verbesserte Leistungen in standardisierten Benchmarks, sondern bieten auch durch anpassbare Embedding-Größen die Fähigkeit, die projektspezifisch richtige Balance zwischen Leistung und Speicheranforderungen zu finden.
Embeddings sind eine Schlüsselkomponente in der Entwicklung intelligenter Systeme, die darauf abzielen, eine nutzbringende Verarbeitung von Sprachinformationen zu erreichen.
[1] https://colab.research.google.com/gist/rstropek/f3d4521ed9831ae5305a10df84a42ecc/embeddings.ipynb
[2] https://platform.openai.com/docs/api-reference/embeddings/create
[3] https://openai.com/blog/new-embedding-models-and-api-updates