Wird geladen

Nachdem ein Dokument in Chunks aufgeteilt wurde, besteht der nächste Schritt in einer RAG-Pipeline darin, herauszufinden, welche Chunks für die Frage eines Nutzers am relevantesten sind. Dies ist im Wesentlichen ein Suchproblem – du musst alle deine Text-Chunks durchsuchen und diejenigen identifizieren, die sich auf das beziehen, wonach der Nutzer fragt.

Der gängigste Ansatz zum Finden relevanter Chunks ist die semantische Suche. Im Gegensatz zur schlüsselwortbasierten Suche, die nach exakten Wortübereinstimmungen sucht, verwendet die semantische Suche Text-Embeddings, um die Bedeutung und den Kontext sowohl der Frage des Nutzers als auch jedes Text-Chunks zu verstehen.

Text-Embeddings

Ein Text-Embedding ist eine numerische Darstellung der Bedeutung, die in einem Text enthalten ist. Stell es dir als Umwandlung von Wörtern und Sätzen in ein Format vor, mit dem Computer mathematisch arbeiten können.

So funktioniert der Prozess:

  • Du gibst Text in ein Embedding-Modell ein
  • Das Modell gibt eine lange Liste von Zahlen aus (das Embedding)
  • Jede Zahl liegt im Bereich von -1 bis +1
  • Diese Zahlen repräsentieren verschiedene Eigenschaften oder Merkmale des Eingabetexts

Die Zahlen verstehen

Jede Zahl in einem Embedding ist im Wesentlichen ein „Score" für eine bestimmte Eigenschaft des Eingabetexts. Hier ist jedoch der wichtige Vorbehalt: Wir wissen nicht genau, was jede Zahl repräsentiert.

Es ist zwar hilfreich, sich vorzustellen, dass eine Zahl repräsentieren könnte, „wie fröhlich der Text ist" oder „wie viel der Text über Ozeane spricht", aber das sind nur konzeptionelle Beispiele. Die tatsächliche Bedeutung jeder Dimension wird vom Modell während des Trainings erlernt und ist für Menschen nicht direkt interpretierbar.

VoyageAI für Embeddings

Da Anthropic derzeit keine Embedding-Generierung anbietet, ist der empfohlene Anbieter VoyageAI. Du musst:

  • Dich für ein separates VoyageAI-Konto anmelden
  • Einen API-Key besorgen (kostenloser Einstieg möglich)
  • Den Key zu deinen Umgebungsvariablen hinzufügen

Füge in deiner .env-Datei Folgendes hinzu:

bash
VOYAGE_API_KEY="your_key_here"

Implementierung

Installiere zunächst die VoyageAI-Bibliothek:

bash
%pip install voyageai

Richte dann den Client ein und erstelle eine Funktion zum Generieren von Embeddings:

python
from dotenv import load_dotenv
import voyageai

load_dotenv()
client = voyageai.Client()

def generate_embedding(text, model="voyage-3-large", input_type="query"):
    result = client.embed([text], model=model, input_type=input_type)
    return result.embeddings[0]

Wenn du diese Funktion auf einen Text-Chunk anwendest, erhältst du eine Liste von Gleitkommazahlen zurück, die das Embedding repräsentieren. Der Prozess ist schnell und unkompliziert – die eigentliche Herausforderung besteht darin zu verstehen, wie man diese Embeddings effektiv in deiner RAG-Pipeline nutzt, um die relevantesten Inhalte zu finden.

Der nächste Schritt besteht darin zu lernen, wie man Embeddings vergleicht, um zu bestimmen, welche Chunks der Frage eines Nutzers am ähnlichsten sind, was den Kern des semantischen Suchprozesses bildet.