1. Einführung in Embeddings
1.1. Was sind Embeddings
Embeddings sind in dem Bereich des maschinellen Lernens, insbesondere bei der Bearbeitung von Problemen im Bereich der natürlichen Sprachverarbeitung (NLP), eine Technik zur Umwandlung von Textdaten in numerische Vektoren. In der menschlichen Sprache wird die Bedeutung von Wörtern und Phrasen durch ihren Kontext und ihre Verwendung bestimmt. Das Ziel von Embeddings ist es, die Semantik dieser sprachlichen Einheiten zu erfassen, um Computern zu ermöglichen, sie zu verstehen und zu verarbeiten.
Die Kernidee von Embeddings besteht darin, Wörter mit ähnlichen Bedeutungen auf nahe gelegene Punkte in einem mathematischen Raum abzubilden und Wörter als Punkte in einem hochdimensionalen Raum darzustellen. Auf diese Weise werden Wörter mit ähnlichen semantischen Bedeutungen (z.B. "König" und "Königin") im Raum nahe beieinander liegen. Embeddings bestehen in der Regel aus Fließkommazahlen-Arrays, sodass auch sehr unterschiedliche Textfragmente (wie "Hund" und "Kanine") ähnliche Einbettungsrepräsentationen haben können.
Tipp: Als Anwendungsentwickler kannst du einfach verstehen, dass für zwei Textsätze mit ähnlichen Bedeutungen, deren Einbettungsvektor-Ähnlichkeit hoch ist.
1.2. Anwendungen von Embeddings
Embeddings werden in verschiedenen Szenarien weit verbreitet eingesetzt, hier sind einige primäre Anwendungsfälle:
- Suche: Verwendung von Einbettungsmerkmalen, um Suchergebnisse basierend auf der Relevanz zum Anfragesatz zu ranken.
- Clustering: Embeddings können dabei helfen, semantisch ähnliche Textfragmente zu identifizieren und zu kategorisieren.
- Empfehlungssysteme: Das Empfehlen von Elementen auf der Grundlage von Ähnlichkeiten kann dabei helfen, andere ähnliche Elemente zu entdecken und zu empfehlen.
- Anomalieerkennung: Embeddings können dazu verwendet werden, Datenpunkte zu identifizieren, die signifikant von dem Hauptdatensatz abweichen.
- Diversitätsmessung: Embeddings können auch dazu verwendet werden, die Ähnlichkeitsverteilung zwischen verschiedenen Texten zu analysieren.
- Klassifizierung: Vergleich von Text mit einer Reihe bekannter Label-Embeddings, um ihn in die ähnlichste Kategorie zu klassifizieren.
2. Einführung in OpenAI Embeddings
2.1. Übersicht über OpenAI Embedding-Modelle
OpenAI bietet Einbettungsmodelle der dritten Generation an, darunter text-embedding-3-small
und text-embedding-3-large
. Diese Modelle basieren auf OpenAIs einzigartiger Deep-Learning-Technologie und zielen darauf ab, eine hochgradig multilinguale Leistung zu bieten, während gleichzeitig versucht wird, die Kosten zu senken.
Diese Modelle weisen einzigartige Eigenschaften bei der Verarbeitung von Einbettungen auf. Beispielsweise bietet text-embedding-3-small
1536-dimensionale Einbettungsvektoren, während text-embedding-3-large
3072-dimensionale Einbettungsvektoren bereitstellt, um komplexere Textmerkmale abzudecken. Durch die Anpassung von Parametern kann die Dimensionalität von Einbettungen kontrolliert werden, um den spezifischen Anforderungen von Anwendungsszenarien gerecht zu werden.
2.2. Modellauswahl und Verwendung
Die Auswahl des geeigneten Einbettungsmodells hängt von den spezifischen Anforderungen der Anwendung ab. Hier erfahren Sie, wie die Auswahl in verschiedenen Anwendungsszenarien getroffen werden kann:
-
In leistungsorientierten Szenarien: Wenn Sie detailliertere semantische Informationen erfassen müssen, beispielsweise in feinkörnigen Empfehlungssystemen oder hochpräzisen Textklassifikationen, wird in der Regel empfohlen,
text-embedding-3-large
zu verwenden. Obwohl es teurer ist als die kleineren Modelle, kann es eine reichhaltigere Repräsentation von Textmerkmalen bieten. -
In kostenorientierten Anwendungen: Für Anwendungen, die eine große Menge an Daten verarbeiten müssen, aber keine besonders hohen Präzisionsanforderungen haben, wie beispielsweise bei der ersten Datenexploration oder beim schnellen Prototyping, ist
text-embedding-3-small
eine wirtschaftlichere Wahl. Es behält eine relativ hohe Leistung bei und reduziert gleichzeitig die Kosten erheblich. -
Multilinguale Umgebungen: Diese Einbettungsmodelle weisen eine hohe multilinguale Leistung auf, was sie besonders nützlich in sprachübergreifenden oder mehrsprachigen Szenarien macht und sie zu einer idealen Wahl für globale Anwendungen.
Die Auswahl des richtigen Einbettungsmodells hängt von spezifischen Anforderungen, Datenkomplexität und dem gewünschten Gleichgewichtspunkt zwischen Leistung und Kosten ab.
3. Wie man Embeddings verwendet
3.1 Verwendung von curl
zum Aufrufen der Embeddings-API
curl
ist ein häufig verwendetes Befehlszeilenwerkzeug zum Senden von HTTP-Anfragen. Das folgende Beispiel zeigt, wie man curl
verwendet, um die Einbettungsdarstellung von Text zu erhalten:
curl https://api.openai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"input": "Maschinelles Lernen ist ein Zweig der künstlichen Intelligenz.",
"model": "text-embedding-3-small"
}'
Im obigen Befehl enthält die Variable $OPENAI_API_KEY
den OpenAI-API-Schlüssel des Benutzers, der für tatsächliche Verwendung durch einen gültigen Schlüssel ersetzt werden sollte.
Nach Ausführung dieses Befehls gibt die OpenAI Embeddings-API eine Antwort zurück, die die Einbettungsdarstellung des Textes enthält. Hier ist ein Beispiel für das Ergebnis eines API-Aufrufs:
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [ // Hier ist der Merkmalsvektor
-0.006929283495992422,
-0.005336422007530928,
... // Übrige Zahlen zur Anzeige weggelassen
-4.547132266452536e-05,
-0.024047505110502243
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
}
}
3.2 Verwenden des Python-Clients zum Aufrufen der Embeddings-API
Neben der direkten Verwendung von curl
zum Aufrufen der API von der Befehlszeile aus, kann auch ein Python-Client verwendet werden. Hierzu muss zunächst die offizielle openai
-Bibliothek installiert werden. Hier ist ein Beispiel, wie man Texteinbettungen mit Python erhält:
import openai
openai.api_key = 'DEIN_OPENAI_API-SCHLÜSSEL' # Ersetze durch deinen OpenAI-API-Schlüssel
response = openai.Embedding.create(
input="Künstliche Intelligenz verändert die Welt.",
model="text-embedding-3-small"
)
einbettungsvektor = response['data'][0]['embedding']
print(einbettungsvektor)
Durch Ausführen dieses Python-Skripts erhält man einen ähnlichen Einbettungsvektor wie bei Verwendung von curl
. Dieser Vektor ist eine Liste von Gleitkommazahlen, die die numerische Darstellung des Eingabetextes im Einbettungsraum darstellen.
Das Ergebnis des Aufrufs ist wie folgt:
[-0.0032198824, 0.0022555287, ..., 0.0015886585, -0.0021505365]
3.2 Bearbeitung von Einbettungsvektoren
OpenAI bietet nur das Textvektorisierungsrechenmodell Embeddings an. Wenn Sie Embeddings verwenden möchten, um Funktionen wie die Ähnlichkeitssuche von Texten zu implementieren, müssen Sie sich mit Vektordatenbanken wie Qdrant, Chroma und Milvus vertraut machen.
Bitte beachten Sie die folgenden Tutorials zu Vektordatenbanken: