Embeddings
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. |
Zusätzlich werden die folgenden multimodalen Embedding-Modelle empfohlen:
| 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. |
Benötigen Sie Hilfe bei der Entscheidung, welches Text-Embedding-Modell Sie verwenden sollen? Schauen Sie sich die FAQ an.
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:
export VOYAGE_API_KEY="<your secret key>"Sie können die Embeddings entweder mit dem offiziellen voyageai Python-Paket oder HTTP-Anfragen erhalten, wie unten beschrieben.
Voyage Python-Bibliothek
Das voyageai-Paket kann mit dem folgenden Befehl installiert werden:
pip install -U voyageaiDann können Sie ein Client-Objekt erstellen und es verwenden, um Ihre Texte einzubetten:
import voyageai
vo = voyageai.Client()
# Dies wird automatisch die Umgebungsvariable VOYAGE_API_KEY verwenden.
# Alternativ können Sie vo = voyageai.Client(api_key="<your secret key>") verwenden
texts = ["Beispieltext 1", "Beispieltext 2"]
result = vo.embed(texts, model="voyage-3.5", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])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:
[-0.013131560757756233, 0.019828535616397858, ...] # embedding für "Beispieltext 1"
[-0.0069352793507277966, 0.020878976210951805, ...] # embedding für "Beispieltext 2"Beim Erstellen der Embeddings können Sie einige andere Argumente für die 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 den curl-Befehl in einem Terminal senden:
curl https://api.voyageai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $VOYAGE_API_KEY" \
-d '{
"input": ["Beispieltext 1", "Beispieltext 2"],
"model": "voyage-3.5"
}'Die Antwort, die Sie erhalten würden, ist ein JSON-Objekt, das die Embeddings und die Token-Nutzung enthält:
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858, ...],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805, ...],
"index": 1
}
],
"model": "voyage-3.5",
"usage": {
"total_tokens": 10
}
}
Für weitere Informationen zur Voyage HTTP API siehe die Voyage-Dokumentation.
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önnen
documents = [
"Die Mittelmeerdiät betont Fisch, Olivenöl und Gemüse, von denen angenommen wird, dass sie chronische Krankheiten reduzieren.",
"Photosynthese in Pflanzen wandelt Lichtenergie in Glukose um und produziert essentiellen Sauerstoff.",
"Innovationen des 20. Jahrhunderts, von Radios bis zu Smartphones, konzentrierten sich auf elektronische Fortschritte.",
"Flüsse liefern Wasser, Bewässerung und Lebensraum für Wasserarten, die für Ökosysteme lebenswichtig sind.",
"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.",
"Shakespeares Werke, wie 'Hamlet' und 'Ein Sommernachtstraum', bestehen in der Literatur fort."
]
Wir werden zuerst Voyage verwenden, um jedes von ihnen in einen Embedding-Vektor umzuwandeln
import voyageai
vo = voyageai.Client()
# Einbetten der Dokumente
doc_embds = vo.embed(
documents, model="voyage-3.5", input_type="document"
).embeddingsDie Embeddings ermöglichen es uns, semantische Suche / Retrieval im Vektorraum durchzuführen. Bei einer Beispielabfrage,
query = "Wann ist Apples Telefonkonferenz geplant?"wandeln wir sie in ein Embedding um und führen eine Nächste-Nachbarn-Suche durch, um das relevanteste Dokument basierend auf der Entfernung im Embedding-Raum zu finden.
import numpy as np
# Einbetten der Abfrage
query_embd = vo.embed(
[query], model="voyage-3.5", input_type="query"
).embeddings[0]
# Berechnen der Ähnlichkeit
# Voyage-Embeddings sind auf Länge 1 normalisiert, daher sind Skalarprodukt
# und Kosinus-Ähnlichkeit dasselbe.
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])Beachten Sie, dass wir input_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:
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.Wenn Sie nach einem detaillierten Satz von Kochbüchern suchen, wie man RAG mit Embeddings macht, einschließlich Vektordatenbanken, schauen Sie sich unser RAG-Kochbuch an.
FAQ
Preise
Besuchen Sie Voyages Preisseite für die aktuellsten Preisdetails.