Vor der Implementierung von Embeddings
Bei der Auswahl eines Embeddings-Anbieters gibt es mehrere Faktoren, die Sie je nach Ihren Bedürfnissen und Präferenzen berücksichtigen können:- Datensatzgröße & Domänenspezifität: Größe des Modell-Trainingsdatensatzes und seine Relevanz für die Domäne, die Sie einbetten möchten. Größere oder domänenspezifischere Daten erzeugen im Allgemeinen bessere domäneninterne Embeddings
- Inferenz-Performance: Geschwindigkeit der Embedding-Suche und End-to-End-Latenz. Dies ist eine besonders wichtige Überlegung für groß angelegte Produktionsbereitstellungen
- Anpassung: Optionen für fortgesetztes Training auf privaten Daten oder Spezialisierung von Modellen für sehr spezifische Domänen. Dies kann die Leistung bei einzigartigen Vokabularen verbessern
Wie man Embeddings mit Anthropic erhält
Anthropic bietet kein eigenes Embedding-Modell an. Ein Embeddings-Anbieter, der eine große Vielfalt an Optionen und Fähigkeiten hat, die alle oben genannten Überlegungen umfassen, ist Voyage AI. Voyage AI erstellt hochmoderne Embedding-Modelle und bietet angepasste Modelle für spezifische Industriedomänen wie Finanzen und Gesundheitswesen oder maßgeschneiderte fein abgestimmte Modelle für einzelne Kunden. Der Rest dieses Leitfadens ist für Voyage AI, aber wir ermutigen Sie, eine Vielzahl von Embeddings-Anbietern zu bewerten, um die beste Lösung für Ihren spezifischen Anwendungsfall zu finden.Verfügbare Modelle
Voyage empfiehlt die Verwendung der folgenden Text-Embedding-Modelle:| Modell | Kontextlänge | Embedding-Dimension | Beschreibung |
|---|---|---|---|
voyage-3-large | 32.000 | 1024 (Standard), 256, 512, 2048 | Die beste allgemeine und mehrsprachige Retrieval-Qualität. Siehe Blog-Post für Details. |
voyage-3.5 | 32.000 | 1024 (Standard), 256, 512, 2048 | Optimiert für allgemeine und mehrsprachige Retrieval-Qualität. Siehe Blog-Post für Details. |
voyage-3.5-lite | 32.000 | 1024 (Standard), 256, 512, 2048 | Optimiert für Latenz und Kosten. Siehe Blog-Post für Details. |
voyage-code-3 | 32.000 | 1024 (Standard), 256, 512, 2048 | Optimiert für Code-Retrieval. Siehe Blog-Post für Details. |
voyage-finance-2 | 32.000 | 1024 | Optimiert für Finanz-Retrieval und RAG. Siehe Blog-Post für Details. |
voyage-law-2 | 16.000 | 1024 | Optimiert für rechtliche und lange Kontext-Retrieval und RAG. Auch verbesserte Leistung in allen Domänen. Siehe Blog-Post für Details. |
| Modell | Kontextlänge | Embedding-Dimension | Beschreibung |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | Reichhaltiges multimodales Embedding-Modell, das verschachtelten Text und inhaltsreiche Bilder wie Screenshots von PDFs, Folien, Tabellen, Abbildungen und mehr vektorisieren kann. Siehe Blog-Post für Details. |
Erste Schritte mit Voyage AI
Um auf Voyage-Embeddings zuzugreifen:- Registrieren Sie sich auf der Website von Voyage AI
- Erhalten Sie einen API-Schlüssel
- Setzen Sie den API-Schlüssel als Umgebungsvariable für die Bequemlichkeit:
voyageai Python-Paket oder HTTP-Anfragen erhalten, wie unten beschrieben.
Voyage Python-Bibliothek
Dasvoyageai-Paket kann mit dem folgenden Befehl installiert werden:
result.embeddings wird eine Liste von zwei Embedding-Vektoren sein, die jeweils 1024 Gleitkommazahlen enthalten. Nach dem Ausführen des obigen Codes werden die beiden Embeddings auf dem Bildschirm ausgegeben:
embed()-Funktion angeben.
Für weitere Informationen zum Voyage Python-Paket siehe die Voyage-Dokumentation.
Voyage HTTP API
Sie können auch Embeddings erhalten, indem Sie die Voyage HTTP API anfordern. Zum Beispiel können Sie eine HTTP-Anfrage über dencurl-Befehl in einem Terminal senden:
AWS Marketplace
Voyage-Embeddings sind auf dem AWS Marketplace verfügbar. Anweisungen für den Zugang zu Voyage auf AWS sind hier verfügbar.Schnellstart-Beispiel
Jetzt, da wir wissen, wie man Embeddings erhält, schauen wir uns ein kurzes Beispiel an. Angenommen, wir haben ein kleines Korpus von sechs Dokumenten, aus denen wir abrufen könneninput_type="document" und input_type="query" für das Einbetten des Dokuments bzw. der Abfrage verwenden. Weitere Spezifikationen finden Sie hier.
Die Ausgabe wäre das 5. Dokument, das tatsächlich am relevantesten für die Abfrage ist:
FAQ
Warum haben Voyage-Embeddings überlegene Qualität?
Warum haben Voyage-Embeddings überlegene Qualität?
- Modellarchitektur
- Datensammlung
- Verlustfunktionen
- Optimierer-Auswahl
Welche Embedding-Modelle sind verfügbar und welches sollte ich verwenden?
Welche Embedding-Modelle sind verfügbar und welches sollte ich verwenden?
voyage-3-large: Beste Qualitätvoyage-3.5-lite: Niedrigste Latenz und Kostenvoyage-3.5: Ausgewogene Leistung mit überlegener Retrieval-Qualität zu einem wettbewerbsfähigen Preis
input_type-Parameter, um anzugeben, ob der Text eine Abfrage oder ein Dokumenttyp ist.Domänenspezifische Modelle:- Rechtliche Aufgaben:
voyage-law-2 - Code und Programmierdokumentation:
voyage-code-3 - Finanzbezogene Aufgaben:
voyage-finance-2
Welche Ähnlichkeitsfunktion sollte ich verwenden?
Welche Ähnlichkeitsfunktion sollte ich verwenden?
- Kosinus-Ähnlichkeit ist äquivalent zur Skalarprodukt-Ähnlichkeit, während letztere schneller berechnet werden kann.
- Kosinus-Ähnlichkeit und euklidische Entfernung führen zu identischen Rankings.
Was ist die Beziehung zwischen Zeichen, Wörtern und Token?
Was ist die Beziehung zwischen Zeichen, Wörtern und Token?
Wann und wie sollte ich den input_type-Parameter verwenden?
Wann und wie sollte ich den input_type-Parameter verwenden?
input_type-Parameter verwendet wird, um anzugeben, ob der Eingabetext eine Abfrage oder ein Dokument ist. Lassen Sie input_type nicht weg oder setzen Sie input_type=None. Die Angabe, ob Eingabetext eine Abfrage oder ein Dokument ist, kann bessere dichte Vektordarstellungen für Retrieval erstellen, was zu besserer Retrieval-Qualität führen kann.Bei Verwendung des input_type-Parameters werden spezielle Prompts dem Eingabetext vor dem Einbetten vorangestellt. Spezifisch:📘 Prompts im Zusammenhang mitinput_type
- Für eine Abfrage lautet der Prompt “Represent the query for retrieving supporting documents: ”.
- Für ein Dokument lautet der Prompt “Represent the document for retrieval: ”.
- Beispiel
- Wenn
input_type="query", wird eine Abfrage wie “Wann ist Apples Telefonkonferenz geplant?” zu “Represent the query for retrieving supporting documents: Wann ist Apples Telefonkonferenz geplant?”- Wenn
input_type="document", wird eine Abfrage wie “Apples Telefonkonferenz zur Diskussion der Ergebnisse des vierten Geschäftsquartals und Geschäftsupdates ist für Donnerstag, den 2. November 2023 um 14:00 Uhr PT / 17:00 Uhr ET geplant.” zu “Represent the document for retrieval: Apples Telefonkonferenz zur Diskussion der Ergebnisse des vierten Geschäftsquartals und Geschäftsupdates ist für Donnerstag, den 2. November 2023 um 14:00 Uhr PT / 17:00 Uhr ET geplant.”
voyage-large-2-instruct, wie der Name schon sagt, ist darauf trainiert, auf zusätzliche Anweisungen zu reagieren, die dem Eingabetext vorangestellt werden. Für Klassifikation, Clustering oder andere MTEB-Unteraufgaben verwenden Sie bitte die Anweisungen hier.Welche Quantisierungsoptionen sind verfügbar?
Welche Quantisierungsoptionen sind verfügbar?
output_dtype-Parameter:float: Jedes zurückgegebene Embedding ist eine Liste von 32-Bit (4-Byte) Einzelpräzisions-Gleitkommazahlen. Dies ist der Standard und bietet die höchste Präzision / Retrieval-Genauigkeit.int8unduint8: Jedes zurückgegebene Embedding ist eine Liste von 8-Bit (1-Byte) Ganzzahlen im Bereich von -128 bis 127 bzw. 0 bis 255.binaryundubinary: Jedes zurückgegebene Embedding ist eine Liste von 8-Bit-Ganzzahlen, die bit-gepackte, quantisierte Ein-Bit-Embedding-Werte darstellen:int8fürbinaryunduint8fürubinary. Die Länge der zurückgegebenen Liste von Ganzzahlen beträgt 1/8 der tatsächlichen Dimension des Embeddings. Der binäre Typ verwendet die Offset-Binär-Methode, über die Sie mehr in der FAQ unten erfahren können.
Beispiel für binäre Quantisierung Betrachten Sie die folgenden acht Embedding-Werte: -0.03955078, 0.006214142, -0.07446289, -0.039001465, 0.0046463013, 0.00030612946, -0.08496094 und 0.03994751. Mit binärer Quantisierung werden Werte kleiner oder gleich null zu einer binären Null quantisiert und positive Werte zu einer binären Eins, was zu der folgenden binären Sequenz führt: 0, 1, 0, 0, 1, 1, 0, 1. Diese acht Bits werden dann in eine einzige 8-Bit-Ganzzahl gepackt, 01001101 (mit dem linkesten Bit als dem signifikantesten Bit).
ubinary: Die binäre Sequenz wird direkt umgewandelt und als vorzeichenlose Ganzzahl (uint8) 77 dargestellt.binary: Die binäre Sequenz wird als vorzeichenbehaftete Ganzzahl (int8) -51 dargestellt, berechnet mit der Offset-Binär-Methode (77 - 128 = -51).
Wie kann ich Matryoshka-Embeddings kürzen?
Wie kann ich Matryoshka-Embeddings kürzen?
voyage-code-3, die mehrere Ausgabedimensionen unterstützen, generieren solche Matryoshka-Embeddings. Sie können diese Vektoren kürzen, indem Sie die führende Teilmenge von Dimensionen behalten. Zum Beispiel zeigt der folgende Python-Code, wie man 1024-dimensionale Vektoren auf 256 Dimensionen kürzt: