- 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.