Vor der Implementierung von Embeddings

Bei der Auswahl eines Embedding-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 Modelltrainingsdatensatzes und seine Relevanz für die Domäne, die Sie einbetten möchten. Größere oder domänenspezifischere Daten produzieren im Allgemeinen bessere In-Domain-Embeddings
  • Inferenzleistung: Embedding-Nachschlagegeschwindigkeit und End-to-End-Latenz. Dies ist besonders wichtig für großangelegte Produktionsimplementierungen
  • Anpassung: Optionen für fortgesetztes Training mit 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 Embedding-Anbieter, der eine große Vielfalt an Optionen und Fähigkeiten bietet, die alle oben genannten Überlegungen umfassen, ist Voyage AI.

Voyage AI erstellt hochmoderne Embedding-Modelle und bietet angepasste Modelle für spezifische Industriebereiche wie Finanzen und Gesundheitswesen oder maßgeschneiderte feinabgestimmte Modelle für einzelne Kunden.

Der Rest dieses Leitfadens bezieht sich auf Voyage AI, aber wir ermutigen Sie, verschiedene Embedding-Anbieter zu prüfen, um die beste Lösung für Ihren spezifischen Anwendungsfall zu finden.


Erste Schritte mit Voyage AI

Schauen Sie sich unser Embeddings-Notebook an, um ein Beispiel für eine Voyage AI-Implementierung zu sehen.

Um auf Voyage-Embeddings zuzugreifen:

  1. Registrieren Sie sich auf der Voyage AI-Website
  2. Erhalten Sie einen API-Schlüssel
  3. Setzen Sie den API-Schlüssel zur Vereinfachung als Umgebungsvariable:
Python
export VOYAGE_API_KEY="<your secret key>"

Sie können die Embeddings entweder mit dem offiziellen voyageai Python-Paket oder über HTTP-Anfragen erstellen, wie unten beschrieben.

Voyage Python-Paket

Das voyageai-Paket kann mit folgendem Befehl installiert werden:

Python
pip install -U voyageai

Dann können Sie ein Client-Objekt erstellen und damit beginnen, Ihre Texte einzubetten:

Python
import voyageai

vo = voyageai.Client()
# Dies verwendet automatisch die Umgebungsvariable VOYAGE_API_KEY.
# Alternativ können Sie vo = voyageai.Client(api_key="<your secret key>") verwenden

texts = ["Beispieltext 1", "Beispieltext 2"]

result = vo.embed(texts, model="voyage-2", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings wird eine Liste von zwei Embedding-Vektoren sein, die jeweils 1024 Fließkommazahlen enthalten.

Nach Ausführung des obigen Codes werden die beiden Embeddings auf dem Bildschirm ausgegeben:

Python
[0.02012746, 0.01957859, ...]  # Embedding für "Beispieltext 1"
[0.01429677, 0.03077182, ...]  # Embedding für "Beispieltext 2"

Bei der Erstellung der Embeddings können Sie der embed()-Funktion einige weitere Argumente übergeben. Hier ist die Spezifikation:

voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)

  • texts (List[str]) - Eine Liste von Texten als Liste von Strings, wie ["Ich mag Katzen", "Ich mag auch Hunde"]. Aktuell beträgt die maximale Länge der Liste 128, und die Gesamtzahl der Token in der Liste ist höchstens 320K für voyage-2 und 120K für voyage-large-2/voyage-code-2.
  • model (str) - Name des Modells. Empfohlene Optionen: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, optional, Standard ist None) - Typ des Eingabetexts. Standard ist None. Andere Optionen: query, document
    • Wenn input_type auf None gesetzt ist, wird der Eingabetext direkt vom Voyage-Embedding-Modell kodiert. Alternativ können die Benutzer bei Dokumenten oder Abfragen input_type auf query oder document setzen. In solchen Fällen wird Voyage eine spezielle Aufforderung dem Eingabetext voranstellen und die erweiterten Eingaben an das Embedding-Modell senden
    • Für Abruf-/Suchanwendungsfälle empfehlen wir, dieses Argument beim Kodieren von Abfragen oder Dokumenten anzugeben, um die Abrufqualität zu verbessern. Embeddings, die mit und ohne das input_type-Argument generiert wurden, sind kompatibel
  • truncation (bool, optional, Standard ist None) - Ob die Eingabetexte gekürzt werden sollen, um in die Kontextlänge zu passen.
    • Wenn True, werden zu lange Eingabetexte gekürzt, um in die Kontextlänge zu passen, bevor sie vom Embedding-Modell vektorisiert werden
    • Wenn False, wird ein Fehler ausgegeben, wenn ein Text die Kontextlänge überschreitet
    • Wenn nicht angegeben (Standard ist None), wird Voyage den Eingabetext kürzen, bevor er an das Embedding-Modell gesendet wird, wenn er die Kontextfensterlänge leicht überschreitet. Wenn er die Kontextfensterlänge deutlich überschreitet, wird ein Fehler ausgegeben

Voyage HTTP-API

Sie können Embeddings auch durch Anfragen an die Voyage HTTP-API erhalten. Zum Beispiel können Sie eine HTTP-Anfrage über den curl-Befehl in einem Terminal senden:

Shell
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-2"
  }'

Die Antwort, die Sie erhalten würden, ist ein JSON-Objekt, das die Embeddings und die Token-Nutzung enthält:

Shell
{
  "object": "list",
  "data": [
    {
      "embedding": [0.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-2",
  "usage": {
    "total_tokens": 10
  }
}

Der Embedding-Endpunkt von Voyage AI ist https://api.voyageai.com/v1/embeddings (POST). Der Anfrage-Header muss den API-Schlüssel enthalten. Der Anfrage-Body ist ein JSON-Objekt mit folgenden Argumenten:

  • input (str, List[str]) - Ein einzelner Textstring oder eine Liste von Texten als Liste von Strings. Aktuell beträgt die maximale Länge der Liste 128, und die Gesamtzahl der Token in der Liste ist höchstens 320K für voyage-2 und 120K für voyage-large-2/voyage-code-2.
  • model (str) - Name des Modells. Empfohlene Optionen: voyage-2, voyage-large-2, voyage-code-2.
  • input_type (str, optional, Standard ist None) - Typ des Eingabetexts. Standard ist None. Andere Optionen: query, document
  • truncation (bool, optional, Standard ist None) - Ob die Eingabetexte gekürzt werden sollen, um in die Kontextlänge zu passen
    • Wenn True, werden zu lange Eingabetexte gekürzt, um in die Kontextlänge zu passen, bevor sie vom Embedding-Modell vektorisiert werden
    • Wenn False, wird ein Fehler ausgegeben, wenn ein Text die Kontextlänge überschreitet
    • Wenn nicht angegeben (Standard ist None), wird Voyage den Eingabetext kürzen, bevor er an das Embedding-Modell gesendet wird, wenn er die Kontextfensterlänge leicht überschreitet. Wenn er die Kontextfensterlänge deutlich überschreitet, wird ein Fehler ausgegeben
  • encoding_format (str, optional, Standard ist None) - Format, in dem die Embeddings kodiert sind. Voyage unterstützt derzeit zwei Optionen:
    • Wenn nicht angegeben (Standard ist None): Die Embeddings werden als Listen von Fließkommazahlen dargestellt
    • "base64": Die Embeddings werden in Base64-Kodierungen komprimiert

Voyage Embedding-Beispiel

Nachdem wir nun wissen, wie man Embeddings mit Voyage erstellt, lassen Sie uns ein kurzes Beispiel in Aktion sehen.

Angenommen, wir haben ein kleines Korpus von sechs Dokumenten, aus denen wir abrufen möchten

Python
documents = [
    "Die mediterrane Ernährung betont Fisch, Olivenöl und Gemüse, von denen man glaubt, dass sie chronische Krankheiten reduzieren.",
    "Photosynthese in Pflanzen wandelt Lichtenergie in Glukose um und produziert lebenswichtigen 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 wichtig sind.",
    "Apples Telefonkonferenz zur Besprechung der Ergebnisse des vierten Geschäftsquartals und Geschäftsaktualisierungen 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' überdauern in der Literatur."
]

Wir werden zuerst Voyage verwenden, um jeden von ihnen in einen Embedding-Vektor umzuwandeln

Python
import voyageai

vo = voyageai.Client()

# Dokumente einbetten
doc_embds = vo.embed(
    documents, model="voyage-2", input_type="document"
).embeddings

Die Embeddings ermöglichen uns, semantische Suche / Abruf im Vektorraum durchzuführen. Wir können dann eine Beispielabfrage,

Python
query = "Wann ist Apples Telefonkonferenz geplant?"

in ein Embedding umwandeln und dann eine Nächste-Nachbarn-Suche durchführen, um das relevanteste Dokument basierend auf der Distanz im Embedding-Raum zu finden.

Python
import numpy as np

# Abfrage einbetten
query_embd = vo.embed(
    [query], model="voyage-2", input_type="query"
).embeddings[0]

# Ähnlichkeit berechnen
# Voyage-Embeddings sind auf Länge 1 normalisiert, daher sind Skalarprodukt
# und Kosinus-Ähnlichkeit gleich.
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 Besprechung der Ergebnisse des vierten Geschäftsquartals und Geschäftsaktualisierungen ist für Donnerstag, den 2. November 2023 um 14:00 Uhr PT / 17:00 Uhr ET geplant.

Verfügbare Voyage-Modelle

Voyage empfiehlt die Verwendung der folgenden Embedding-Modelle:

ModellKontextlängeEmbedding-DimensionBeschreibung
voyage-large-2160001536Voyage AIs leistungsfähigstes generalistisches Embedding-Modell.
voyage-code-2160001536Optimiert für Code-Abruf (17% besser als Alternativen) und auch SoTA auf allgemeinen Korpora. Siehe diesen Voyage Blog-Beitrag für Details.
voyage-240001024Basis-generalistisches Embedding-Modell, optimiert für sowohl Latenz als auch Qualität.
voyage-lite-02-instruct40001024Anweisungsabgestimmt für Klassifizierung, Clustering und Satz-Textähnlichkeitsaufgaben, welche die einzigen empfohlenen Anwendungsfälle für dieses Modell sind.

voyage-2 und voyage-large-2 sind generalistische Embedding-Modelle, die domänenübergreifend Spitzenleistungen erzielen und hohe Effizienz beibehalten. voyage-code-2 ist für den Code-Bereich optimiert und bietet die 4-fache Kontextlänge für flexiblere Nutzung, allerdings mit einer relativ höheren Latenz.

Voyage entwickelt aktiv fortschrittlichere und spezialisierte Modelle und bietet auch Fine-Tuning-Dienste an, um maßgeschneiderte Modelle für einzelne Kunden anzupassen. Senden Sie eine E-Mail an Ihren Anthropic Account Manager oder kontaktieren Sie den Anthropic Support für weitere Informationen zu maßgeschneiderten Modellen.

  • voyage-finance-2: kommt bald
  • voyage-law-2: kommt bald
  • voyage-multilingual-2: kommt bald
  • voyage-healthcare-2: kommt bald

Voyage im AWS Marketplace

Voyage-Embeddings sind auch im AWS Marketplace verfügbar. Hier sind die Anweisungen für den Zugriff auf Voyage auf AWS:

  1. Abonnieren Sie das Modellpaket
    1. Navigieren Sie zur Modellpaket-Listenseite und wählen Sie das zu implementierende Modell
    2. Klicken Sie auf die Schaltfläche Continue to subscribe
    3. Überprüfen Sie sorgfältig die Details auf der Seite Subscribe to this software. Wenn Sie mit der Standard-Endbenutzer-Lizenzvereinbarung (EULA), den Preisen und Support-Bedingungen einverstanden sind, klicken Sie auf “Accept Offer”
    4. Nachdem Sie Continue to configuration ausgewählt und eine Region gewählt haben, wird Ihnen eine Produkt-Arn präsentiert. Dies ist die Modellpaket-ARN, die für die Erstellung eines implementierbaren Modells mit Boto3 erforderlich ist
      1. Kopieren Sie die ARN, die Ihrer ausgewählten Region entspricht, und verwenden Sie sie in der nachfolgenden Zelle
  2. Implementieren Sie das Modellpaket

Von hier aus erstellen Sie einen JupyterLab-Bereich in Sagemaker Studio, laden Voyages Notebook hoch und folgen den darin enthaltenen Anweisungen.


FAQ


Preisgestaltung

Besuchen Sie Voyages Preisseite für die aktuellsten Preisdetails.