16 Punkte von xguru 2024-09-21 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Damit ein AI-Modell in einem bestimmten Kontext nützlich ist, muss es auf Hintergrundwissen zugreifen können
  • Entwickler verbessern das Wissen von AI-Modellen in der Regel mit Retrieval-Augmented Generation (RAG)
  • Traditionelle RAG-Lösungen entfernen beim Kodieren von Informationen den Kontext und können deshalb relevante Informationen oft nicht abrufen
  • Contextual Retrieval ist eine Methode, die die Retrieval-Phase von RAG deutlich verbessert, und nutzt zwei Untertechniken: Contextual Embeddings und Contextual BM25
  • Diese Methode kann die Ausfallrate bei der Suche um 49 % senken; in Kombination mit Reranking sogar um bis zu 67 %
  • Entwickler können mit Claude einfach ihre eigene Contextual-Retrieval-Lösung bereitstellen

Hinweise zur Verwendung langer Prompts

  • Wenn die Wissensbasis weniger als 200.000 Token umfasst, kann die gesamte Wissensbasis in den Prompt aufgenommen und dem Modell bereitgestellt werden
  • Anthropic hat kürzlich Prompt Caching für Claude eingeführt, wodurch dieser Ansatz deutlich schneller und kosteneffizienter wird
  • Wenn die Knowledge Base größer wird, ist eine besser skalierbare Lösung nötig — hier kommt Contextual Retrieval ins Spiel

RAG-Grundlagen: Skalierung auf große Wissensbasen

  • Für größere Wissensbasen, die nicht in das Kontextfenster passen, ist RAG die übliche Lösung
  • RAG zerlegt die Wissensbasis in kleinere Chunks, wandelt diese in Vektor-Embeddings um und speichert sie dann in einer Vektordatenbank, in der sie über semantische Ähnlichkeit durchsucht werden können
  • Embedding-Modelle sind hervorragend darin, semantische Beziehungen zu erfassen, können aber wichtige exakte Übereinstimmungen übersehen
  • BM25 ist eine Ranking-Funktion, die lexikalisches Matching verwendet, um exakte Wort- oder Phrasenübereinstimmungen zu finden, und ist besonders effektiv bei Abfragen mit eindeutigen Kennungen oder technischen Begriffen
  • RAG-Lösungen können die passendsten Chunks genauer abrufen, indem sie Embeddings und BM25 mit den folgenden Schritten kombinieren:
    • Zerlegung der Wissensbasis (des „Korpus“ von Dokumenten) in kleinere Text-Chunks, typischerweise mit einigen Hundert oder weniger Tokens
    • Erzeugung von TF-IDF-Kodierungen und semantischen Embeddings für diese Chunks
    • Verwendung von BM25, um anhand exakter Übereinstimmungen die Top-Chunks zu finden
    • Verwendung von Embeddings, um anhand semantischer Ähnlichkeit die Top-Chunks zu finden
    • Kombination der Ergebnisse aus (3) und (4) mit Rank-Fusion-Techniken und Entfernung von Duplikaten
    • Hinzufügen der Top-K-Chunks zum Prompt, um eine Antwort zu erzeugen

Einführung von Contextual Retrieval

  • In traditionellem RAG werden Dokumente in kleinere Chunks aufgeteilt, wodurch einzelnen Chunks oft ausreichend Kontext fehlt
  • Contextual Retrieval löst dieses Problem, indem jedem Chunk vorangestellter, chunkspezifischer Erklärungskontext hinzugefügt wird
  • Claude unterstützt die Implementierung von Contextual Retrieval mit einem Prompt, der anweist, auf Basis des Kontexts des gesamten Dokuments einen knappen, chunkspezifischen Kontext zur Beschreibung des Chunks bereitzustellen
  • Dank Prompt Caching ist Contextual Retrieval mit Claude kostengünstig nutzbar

Leistungsverbesserung

  • Contextual Embeddings reduzieren die Ausfallrate beim Abruf der Top-20-Chunks um 35 % (5,7 % → 3,7 %)
  • Die Kombination von Contextual Embeddings und Contextual BM25 reduziert die Ausfallrate um 49 % (5,7 % → 2,9 %)

Überlegungen bei der Implementierung

  • Berücksichtigen, wie Dokumente in Chunks aufgeteilt werden sollen
  • Contextual Retrieval verbessert die Leistung bei allen Embedding-Modellen, einige Modelle können jedoch stärker davon profitieren
  • Ein allgemeiner Prompt funktioniert gut, aber mit auf bestimmte Domänen oder Anwendungsfälle abgestimmten Prompts lassen sich bessere Ergebnisse erzielen
  • Wenn dem Kontextfenster mehr Chunks hinzugefügt werden, steigt die Wahrscheinlichkeit, relevante Informationen zu enthalten
  • Es sollten immer Evaluierungen durchgeführt werden, da die Übergabe kontextualisierter Chunks und die Unterscheidung zwischen Kontext und Chunk die Antwortgenerierung verbessern können

Zusätzliche Leistungssteigerung durch Reranking

  • Reranking ist eine häufig verwendete Filtertechnik, die sicherstellt, dass nur die relevantesten Chunks an das Modell weitergegeben werden
  • Zunächst wird eine erste Suche durchgeführt, um potenziell relevante Top-Chunks abzurufen
  • Die Top-N-Chunks und die Nutzeranfrage werden an ein Reranking-Modell übergeben
  • Das Reranking-Modell bewertet dann jeden Chunk nach Relevanz und Wichtigkeit für den Prompt, anschließend werden die Top-K-Chunks ausgewählt
  • Die Top-K-Chunks werden dem Modell als Kontext übergeben, um das Endergebnis zu erzeugen
  • Rerankte Contextual Embeddings und Contextual BM25 reduzieren die Ausfallrate beim Abruf der Top-20-Chunks um 67 % (5,7 % → 1,9 %)
  • Kosten- und Latenzüberlegungen
    • Reranking kann sich insbesondere dann auf Latenz und Kosten auswirken, wenn eine große Anzahl von Chunks neu sortiert wird
    • Es gibt einen Trade-off zwischen dem Reranking einer größeren Zahl von Chunks für bessere Leistung und dem Reranking einer kleineren Zahl für geringere Latenz und niedrigere Kosten

Fazit

  • Es wurden zahlreiche Tests mit verschiedenen Datensatztypen durchgeführt, in denen unterschiedliche Kombinationen aller oben beschriebenen Techniken verglichen wurden (Embedding-Modelle, Einsatz von BM25, Einsatz von Contextual Retrieval, Einsatz von Reranking, Gesamtzahl der abgerufenen Top-K-Ergebnisse)
  • Die Ergebnisse sind wie folgt:
    • Embeddings + BM25 sind besser als Embeddings allein
    • Unter den getesteten Embeddings schnitten Voyage und Gemini am besten ab
    • Die Übergabe der Top-20-Chunks an das Modell ist effektiver, als nur die Top 10 oder Top 5 zu übergeben
    • Das Hinzufügen von Kontext zu Chunks verbessert die Retrieval-Genauigkeit deutlich
    • Reranking ist besser als kein Reranking
    • Alle diese Vorteile addieren sich: Um die Leistungssteigerung zu maximieren, kann man Contextual BM25 mit kontextualisierten Embeddings (von Voyage oder Gemini) nach einem Reranking-Schritt kombinieren und 20 Chunks zum Prompt hinzufügen
  • Allen Entwicklern, die mit einer Knowledge Base arbeiten, wird empfohlen, mit dem bereitgestellten Cookbook diesen Ansatz auszuprobieren und ein neues Leistungsniveau zu erreichen

Noch keine Kommentare.

Noch keine Kommentare.