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 Modell-Trainingsdatensatzes und seine Relevanz für die Domäne, die Sie einbetten möchten. Größere oder domänenspezifischere Daten produzieren im Allgemeinen bessere domänenspezifische Embeddings
  • Inferenz-Performance: Embedding-Abrufgeschwindigkeit und End-to-End-Latenz. Dies ist besonders wichtig für Produktionsumgebungen im großen Maßstab
  • 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 entwickelt modernste 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.

Verfügbare Modelle

Voyage empfiehlt die Verwendung der folgenden Text-Embedding-Modelle:

ModelContext LengthEmbedding DimensionDescription
voyage-3-large32.0001024 (Standard), 256, 512, 2048Die beste allgemeine und mehrsprachige Abrufqualität.
voyage-332.0001024Optimiert für allgemeine und mehrsprachige Abrufqualität. Siehe Blog-Beitrag für Details.
voyage-3-lite32.000512Optimiert für Latenz und Kosten. Siehe Blog-Beitrag für Details.
voyage-code-332.0001024 (Standard), 256, 512, 2048Optimiert für Code-Abruf. Siehe Blog-Beitrag für Details.
voyage-finance-232.0001024Optimiert für Finanz-Abruf und RAG. Siehe Blog-Beitrag für Details.
voyage-law-216.0001024Optimiert für juristische und lange Kontext-Abruf und RAG. Auch verbesserte Leistung über alle Domänen hinweg. Siehe Blog-Beitrag für Details.

Zusätzlich werden die folgenden multimodalen Embedding-Modelle empfohlen:

ModelContext LengthEmbedding DimensionDescription
voyage-multimodal-3320001024Reichhaltiges multimodales Embedding-Modell, das verschachtelte Texte und inhaltsreiche Bilder wie Screenshots von PDFs, Präsentationen, Tabellen, Abbildungen und mehr vektorisieren kann. Siehe Blog-Beitrag für Details.

Brauchen 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:

  1. Registrieren Sie sich auf der Voyage AI Website
  2. Erhalten Sie einen API-Schlüssel
  3. 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 über das offizielle voyageai Python-Paket oder HTTP-Anfragen erhalten, wie unten beschrieben.

Voyage Python-Paket

Das voyageai-Paket kann mit folgendem Befehl installiert werden:

pip install -U voyageai

Dann können Sie ein Client-Objekt erstellen und es verwenden, um Ihre Texte einzubetten:

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-3", 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:

[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 auch einige andere Argumente für die embed()-Funktion angeben. Hier können Sie mehr über die Spezifikation lesen

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:

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

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.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-3",
  "usage": {
    "total_tokens": 10
  }
}

Mehr über den Embedding-Endpunkt können Sie in der Voyage-Dokumentation lesen

AWS Marketplace

Voyage Embeddings sind auch im AWS Marketplace verfügbar. Anweisungen für den Zugriff auf Voyage auf AWS finden Sie hier.

Schnellstart-Beispiel

Nachdem wir nun wissen, wie man Embeddings erhält, schauen wir uns ein kurzes Beispiel an.

Angenommen, wir haben einen kleinen Korpus von sechs Dokumenten, aus denen wir abrufen möchten

documents = [
    "Die mediterrane Ernährung betont Fisch, Olivenöl und Gemüse, von denen man glaubt, dass sie chronische Krankheiten reduzieren.",
    "Die 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

import voyageai

vo = voyageai.Client()

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

Die Embeddings ermöglichen uns semantische Suche / Abruf im Vektorraum. Gegeben eine Beispielanfrage,

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 Distanz im Embedding-Raum zu finden.

import numpy as np

# Anfrage einbetten
query_embd = vo.embed(
    [query], model="voyage-3", 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 Anfrage verwenden. Weitere Spezifikationen finden Sie hier.

Die Ausgabe wäre das 5. Dokument, das tatsächlich am relevantesten für die Anfrage 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.

Wenn Sie nach einem detaillierten Satz von Kochbüchern suchen, wie man RAG mit Embeddings durchführt, einschließlich Vektordatenbanken, schauen Sie sich unser RAG-Kochbuch an.

FAQ

Preisgestaltung

Besuchen Sie Voyage’s Preisseite für die aktuellsten Preisdetails.