Nachricht

Warum ist das verzögerte Interaktionsmodell Standard für die nächste RAG-Generation?

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



Die AIxiv-Kolumne ist eine Kolumne, in der Machine Heart akademische und technische Inhalte veröffentlicht. In den letzten Jahren hat die Kolumne „Heart of the Machine AIxiv“ mehr als 2.000 Berichte erhalten, die Spitzenlabore großer Universitäten und Unternehmen auf der ganzen Welt abdecken und so den akademischen Austausch und die Verbreitung wirksam fördern. Wenn Sie hervorragende Arbeiten haben, die Sie teilen möchten, können Sie gerne einen Beitrag leisten oder uns für die Berichterstattung kontaktieren. E-Mail-Adresse: [email protected]; [email protected]

Zhang Yingfeng: Mitbegründer von Infra, mit langjähriger Erfahrung in den Bereichen Suche, KI und Infra-Infrastrukturentwicklung, arbeitet er derzeit an der Konstruktion der nächsten Generation von RAG-Kernprodukten.

Bei der Entwicklung des RAG-Systems ist ein gutes Reranker-Modell ein unverzichtbares Bindeglied und wird immer in verschiedenen Auswertungen verwendet. Dies liegt daran, dass bei Abfragen, die durch die Vektorsuche dargestellt werden, das Problem einer niedrigen Trefferquote auftritt, sodass Abhilfe geschaffen werden muss Dadurch entsteht eine zweistufige Sortierarchitektur, die die Vektorsuche als Grobsortierung und das Reranker-Modell als Feinsortierung verwendet.

Derzeit gibt es zwei Haupttypen von Architekturen für Ranking-Modelle:

1. Dual-Encoder. Am Beispiel des BERT-Modells kodiert es Abfragen und Dokumente getrennt und durchläuft schließlich eine Pooling-Schicht, sodass die Ausgabe nur einen Vektor enthält. In der Rangfolge-Phase der Abfrage müssen Sie nur die Ähnlichkeit zweier Vektoren berechnen, wie in der folgenden Abbildung dargestellt. Dual-Encoder können sowohl für die Ranking- als auch für die Reranking-Phase verwendet werden, und die Vektorsuche ist eigentlich dieses Ranking-Modell. Da der Dual-Encoder die Abfrage und das Dokument getrennt codiert, kann er die komplexe interaktive Beziehung zwischen der Abfrage und den Token des Dokuments nicht erfassen, und es kommt zu großen semantischen Verlusten, da zum Vervollständigen der Sortierung und des Dokuments nur eine Vektorsuche erforderlich ist Durch die Scoring-Berechnung wird die Ausführungseffizienz sehr stark verbessert.



2. Cross-Encoder. Cross-Encoder verwendet ein einziges Encodermodell, um Abfragen und Dokumente gleichzeitig zu codieren. Es kann die komplexe Interaktion zwischen Abfragen und Dokumenten erfassen und so genauere Suchergebnisse liefern. Cross-Encoder gibt nicht den Vektor aus, der dem Token der Abfrage und des Dokuments entspricht, sondern fügt einen Klassifikator hinzu, um die Ähnlichkeitsbewertung der Abfrage und des Dokuments direkt auszugeben. Der Nachteil besteht darin, dass Cross-Encoder nur zum Neuordnen der Endergebnisse verwendet werden kann, da jedes Dokument und jede Abfrage zum Zeitpunkt der Abfrage zusammen codiert werden müssen, was die Sortierung sehr verlangsamt. Beispielsweise dauert die Neuordnung der Top 10 der vorläufigen Screening-Ergebnisse immer noch Sekunden.



Seit diesem Jahr hat eine andere Art von Arbeit, die von ColBERT [Referenz 1] vertreten wird, in der RAG-Entwicklergemeinschaft große Aufmerksamkeit erregt. Wie in der folgenden Abbildung gezeigt, weist sie einige Merkmale auf, die sich erheblich von den beiden oben genannten Arten von Ranking-Modellen unterscheiden:

Einer davon ist, dass ColBERT im Vergleich zu Cross Encoder immer noch eine Dual-Encoder-Strategie verwendet, um Abfragen und Dokumente mit unabhängigen Encodern zu kodieren. Daher beeinflussen sich das Abfrage-Token und das Dokument-Token während der Kodierung nicht gegenseitig. Es kann offline verarbeitet werden und beim Abfragen wird nur die Abfrage codiert, sodass die Verarbeitungsgeschwindigkeit viel höher ist als bei Cross Encoder.

Der zweite Grund ist, dass ColBERT im Vergleich zum Dual-Encoder mehrere Vektoren anstelle eines einzelnen Vektors ausgibt, der direkt von der letzten Ausgabeschicht des Transformers erhalten wird, während der Dual-Encoder mehrere Vektoren über eine Pooling-Ebene in einen Vektor umwandelt. Dadurch geht etwas Semantik verloren.

Bei der Sortierberechnung führt ColBERT eine verzögerte interaktive Berechnungsähnlichkeitsfunktion ein und nennt sie maximale Ähnlichkeit (MaxSim). Die Berechnungsmethode ist wie folgt: Für jeden Abfrage-Token-Vektor wird die Ähnlichkeit mit den Vektoren berechnet, die allen Dokument-Tokens entsprechen Verfolgen Sie die maximale Punktzahl für jedes Abfragetoken. Die Gesamtpunktzahl für die Abfrage und das Dokument ist die Summe dieser maximalen Kosinuspunktzahlen. Beispielsweise müssen für eine Abfrage mit 32 Token-Vektoren (die maximale Abfragelänge beträgt 32) und ein Dokument mit 128 Tokens 32 * 128 Ähnlichkeitsoperationen durchgeführt werden, wie in der folgenden Abbildung dargestellt.

Im Vergleich dazu kann man Cross Encoder nennenFrühes Interaktionsmodell, und die von ColBERT vertretene Arbeit kann aufgerufen werdenSpätes Interaktionsmodell.



Die folgende Abbildung vergleicht die oben genannten Sortiermodelle hinsichtlich Leistung und Sortierqualität. Da das verzögerte Interaktionsmodell die Fähigkeit erfüllt, die komplexen Interaktionen zwischen Abfragen und Dokumenten während des Sortiervorgangs zu erfassen und außerdem den Aufwand für die Codierung von Dokument-Tokens vermeidet, kann es nicht nur gute Sortiereffekte gewährleisten, sondern auch eine schnellere Sortierleistung erzielen – Unter Bei gleicher Datenskala kann die Effizienz von ColBERT mehr als 100-mal höher sein als die von Cross Encoder. Daher ist das verzögerte Interaktionsmodell ein sehr vielversprechendes Sortiermodell. Eine natürliche Idee ist:Kann das verzögerte Interaktionsmodell direkt in RAG verwendet werden, um die zweistufige Sortierarchitektur aus Vektorsuche + Feinsortierung zu ersetzen?



Zu diesem Zweck müssen wir einige Probleme im ColBERT-Engineering berücksichtigen:

1. Die verzögerte interaktive Ähnlichkeitsfunktion von MaxSim von ColBERT hat eine viel höhere Recheneffizienz als Cross Encoder, aber im Vergleich zur gewöhnlichen Vektorsuche ist der Rechenaufwand immer noch sehr hoch: Da die Ähnlichkeit zwischen der Abfrage und dem Dokument eine Berechnung mit mehreren Vektoren ist, ist die Funktion von MaxSim die Der Overhead beträgt M * N-mal so viel wie bei einer gewöhnlichen Vektorähnlichkeitsberechnung (M ist die Anzahl der Token in der Abfrage, N ist die Anzahl der Token im Dokument). Als Reaktion darauf brachte der Autor von ColBERT im Jahr 2021 ColBERT v2 auf den Markt [Referenz 2], das die Qualität der generierten Einbettung durch Cross Encoder und Modelldestillation verbessert und Komprimierungstechnologie verwendet, um den generierten Dokumentvektor zu quantisieren und dadurch die Berechnung zu verbessern MaxSim-Leistung. Das auf der ColBERT v2-Verpackung basierende Projekt RAGatouille [Referenz 3] wird zu einer Lösung für die hochwertige RAG-Sortierung. Allerdings handelt es sich bei ColBERT v2 nur um eine Algorithmusbibliothek, und es ist immer noch schwierig, sie durchgängig in RAG-Systemen auf Unternehmensebene zu verwenden.

2. Da es sich bei ColBERT um ein vorab trainiertes Modell handelt und die Trainingsdaten aus Suchmaschinenabfragen und zurückgegebenen Ergebnissen stammen, sind diese Textdaten nicht groß. Beispielsweise beträgt die Anzahl der Abfrage-Tokens 32 und die Anzahl der Dokument-Tokens 128 , das sind typische Längengrenzen. Wenn ColBERT für echte Daten verwendet wird, wird daher die Länge, die das Limit überschreitet, abgeschnitten, was für den Abruf langer Dokumente nicht geeignet ist.

Basierend auf den oben genannten Problemen stellt die Open-Source-KI-native Datenbank Infinity den Tensor-Datentyp in der neuesten Version bereit und stellt nativ die End-to-End-ColBERT-Lösung bereit. Wenn Tensor als Datentyp verwendet wird, können mehrere durch ColBERT-Codierung ausgegebene Vektoren direkt in einem Tensor gespeichert werden, sodass die Ähnlichkeit zwischen Tensoren direkt den MaxSim-Score ableiten kann. Als Reaktion auf das Problem der großen Anzahl an Berechnungen von MaxSim hat Infinity zwei Lösungen zur Optimierung bereitgestellt: Eine davon ist die binäre Quantisierung, die den Raum des ursprünglichen Tensors auf nur 1/32 der ursprünglichen Größe bringen kann, die relative Reihenfolge jedoch nicht ändert Ergebnis der MaxSim-Berechnungen. Diese Lösung wird hauptsächlich für Reranker verwendet, da der entsprechende Tensor basierend auf den Ergebnissen der vorherigen Stufe des Grobscreenings extrahiert werden muss. Der andere ist Tensor Index. Es handelt sich tatsächlich um die vom Autor von ColBERT Infinity eingeführte Tensor-Index-Implementierung, die als Verbesserung von ColBERT v2 angesehen werden kann, hauptsächlich durch Quantisierungs- und Vorfilterungstechnologie Es werden Anweisungen zu wichtigen Vorgängen eingeführt, um die Umsetzung zu beschleunigen. Der Tensor-Index kann nur für Ranker und nicht für Reranker verwendet werden. Darüber hinaus führt Infinity für Langtexte, die das Token-Limit überschreiten, den Tensor-Array-Typ ein:



Ein Dokument, das die ColBERT-Grenze überschreitet, wird in mehrere Absätze unterteilt. Nach der Codierung bzw. Generierung von Tensoren werden diese in derselben Zeile wie das Originaldokument gespeichert. Bei der Berechnung von MaxSim werden die Abfrage und diese Absätze separat berechnet, und dann wird der Maximalwert als Bewertung des gesamten Dokuments verwendet. Wie nachfolgend dargestellt:



Daher kann mit Infinity ein verzögertes Interaktionsmodell durchgängig eingeführt werden, um RAG mit hoher Qualität zu bedienen. Sollte ColBERT also als Ranker oder Reranker verwendet werden? Im Folgenden verwenden wir Infinity, um eine Auswertung realer Datensätze durchzuführen. Da die neueste Version von Infinity die umfassendste hybride Suchlösung in der Geschichte implementiert, umfassen die Rückrufmethoden die Vektorsuche, die Volltextsuche, die spärliche Vektorsuche, den oben erwähnten Tensor und jede Kombination dieser Methoden und bieten eine Vielzahl von Reranker-Methoden , wie RRF und ColBERT Reranker, daher beziehen wir verschiedene Kombinationen aus Hybridsuche und Reranker in die Überprüfung ein.

Zur Auswertung nutzen wir den MLDR-Datensatz. MLDR ist ein Benchmark-Set, das von MTEB [Referenz 5] zur Bewertung der Qualität von Einbettungsmodellen verwendet wird. MLDR ist einer der Datensätze, der als Multi Long Document Retrieval bezeichnet wird und insgesamt 200.000 Langtextdaten enthält. Die Evaluierung verwendet BGE-M3 [Referenz 6] als Einbettungsmodell, Jina-ColBERT [Referenz 7] zur Generierung von Tensor, und das Evaluierungsskript wird auch im Infinity-Warehouse [Referenz 8] abgelegt.

Bewertung 1: Ist ColBERT als Reranker wirksam? Verwenden Sie BGE-M3, um dichte Vektoren und spärliche Vektoren aus 200.000 MLDR-Daten zu generieren und diese in die Infinity-Datenbank einzufügen. Die Datenbank enthält 4 Spalten, in denen Originaltext, Vektoren, spärliche Vektoren und Tensoren gespeichert werden und entsprechende Volltextindizes erstellt werden bzw. Vektoren. Index, spärlicher Vektorindex. Die Bewertung umfasst alle Rückrufkombinationen, einschließlich Einzelrückruf, Zweiwegrückruf und Dreiwegrückruf, wie folgt:



Der Bewertungsindex übernimmt nDCG@10. Weitere Parameter: Bei Verwendung von RRF Reranker beträgt die durch grobe Filterung zurückgegebene Top N = 1000, die Gesamtzahl der Abfragen beträgt 800 und die durchschnittliche Abfragelänge beträgt etwa 10 Token.



Wie aus der Abbildung ersichtlich ist, haben alle Rückruflösungen nach der Verwendung von ColBERT Reranker deutlich bessere Ergebnisse erzielt. Als verzögertes Interaktionsmodell kann ColBERT eine Ranking-Qualität liefern, die mit denen an der Spitze der Reranker-Rankings von MTEB vergleichbar ist, aber die Leistung ist 100-mal höher, sodass Rerankings in größerem Maßstab durchgeführt werden können. Die in der Abbildung gezeigten Ergebnisse gelten für Top 100 Reranker, und Top 1000 wird für die Neuordnung von ColBERT verwendet. Die Werte ändern sich nicht wesentlich und die Leistung sinkt erheblich, daher wird dies nicht empfohlen. Traditionell kommt es bei der Verwendung eines externen Rerankers auf Basis von Cross Encoder zu einer Verzögerung der zweiten Ebene. Infinity implementiert jedoch den leistungsstarken ColBERT Reranker intern Die Erfahrung wird jedoch nicht beeinträchtigt, der Umfang der Erinnerung wird jedoch erheblich erhöht, sodass der endgültige Ranking-Effekt erheblich verbessert werden kann. Darüber hinaus muss diese ColBERT-Reranker-Berechnung nur auf einer reinen CPU-Architektur ausgeführt werden, was auch die Bereitstellungskosten erheblich senkt.

Bewertung 2: Der Vergleich basiert auf ColBERT als Ranker und nicht als Reranker. Daher ist es notwendig, einen Tensorindex für die Tensorspaltendaten zu erstellen. Gleichzeitig wurde auch eine Brute-Force-Suche durchgeführt, um den durch den Tensor-Index verursachten Genauigkeitsverlust zu bewerten.



Es ist ersichtlich, dass es im Vergleich zu Reranker selbst bei Verwendung einer Brute-Force-Suche ohne Genauigkeitsverlust keine signifikante Verbesserung gibt und die Sortierqualität basierend auf dem Tensor-Index sogar noch geringer ist als bei Verwendung von Reranker. Allerdings ist die Abfragezeit als Ranker viel langsamer: Der MLDR-Datensatz enthält 200.000 Dokumentdaten, was etwa 2 GB entspricht. Nach der Konvertierung mit Jina-ColBERT in Tensor-Daten sind es bis zu 320 GB Der Tensor-Datentyp ist ein Dokument, das gespeichert werden muss. Die Dimension des ColBERT-Modells beträgt 128 Dimensionen, sodass sich das Standarddatenvolumen um zwei Größenordnungen erweitert , dauert es durchschnittlich 7 Sekunden, so viele Daten abzufragen. Gibt eine Abfrage zurück, liefert aber keine besseren Ergebnisse.

Daher ist es offensichtlich, dass ColBERT als Reranker viel profitabler ist als als Ranker. Die derzeit beste RAG-Abruflösung besteht darin, ColBERT Reranker auf Basis einer 3-Wege-Hybridsuche (Volltextsuche + Vektor + Sparse-Vektor) hinzuzufügen. Einige Partner fragen sich möglicherweise, dass für die Verwendung von ColBERT Reranker eine separate Tensor-Spalte hinzugefügt werden muss und die Spalte im Vergleich zum ursprünglichen Datensatz um zwei Größenordnungen erweitert wird. Erstens: Infinity bietet eine binäre Quantisierungsmethode für Tensor. Als Reranker hat sie keinen großen Einfluss auf die Sortierergebnisse, kann aber dazu führen, dass die endgültigen Daten nur 1/32 der ursprünglichen Tensorgröße betragen. Zweitens werden einige Leute dennoch denken, dass dieser Aufwand zu hoch ist. Aus Anwendersicht lohnt es sich jedoch immer noch, mehr Speicher zu nutzen, um im Gegenzug eine höhere Sortierqualität und günstigere Kosten zu erhalten (der Sortiervorgang erfordert keine GPU). Abschließend glaube ich, dass bald ein Late-Interaction-Modell mit leicht reduzierter Leistung, aber stark reduziertem Speicheraufwand eingeführt wird. Da es sich um eine Dateninfrastruktur handelt, ist es für diese Änderungen transparent und es ist eine kluge Entscheidung, diese Kompromisse an die Benutzer weiterzugeben.

Das Obige basiert auf der Mehrkanal-Rückrufbewertung von Infinity für den MLDR-Datensatz. Die Bewertungsergebnisse für andere Datensätze können unterschiedlich sein, aber die allgemeine Schlussfolgerung wird sich nicht ändern – 3-Wege-Hybridsuche + Tensor-basierte Neuordnung ist Der aktuelle Rückruf Methode mit den hochwertigsten Suchergebnissen.

Daraus ist ersichtlich, dass ColBERT und sein verzögertes Interaktionsmodell in RAG-Szenarien einen großen Anwendungswert haben. Die oben genannten Arbeiten zur Generierung von Textdialoginhalten haben kürzlich auch in multimodalen Szenarien Anerkennung gefunden. Dies ist ColPali [Referenz 9], das den Workflow von RAG ändert, wie in der folgenden Abbildung dargestellt:



Wenn RAG mit Dokumenten in komplexen Formaten konfrontiert wird, verwendet der aktuelle SOTA ein Dokumenterkennungsmodell, um das Layout des Dokuments zu identifizieren, und ruft dann das entsprechende Modell für die identifizierten Teilstrukturen wie Diagramme, Bilder usw. auf, um sie in das entsprechende umzuwandeln Der Text wird dann in verschiedenen Formaten in der RAG-unterstützenden Datenbank gespeichert. ColPali eliminiert diese Schritte und verwendet direkt multimodale Modelle, um Einbettungsinhalte zu generieren. Wenn Sie Fragen stellen, können Sie diese direkt anhand der Diagramme im Dokument beantworten:



Das Training des ColPali-Modells ähnelt ColBERT. Es verwendet ebenfalls die Form von Abfrage-Dokument-Seitenpaaren, um die semantische Assoziation zwischen multimodalen Abfrage- und Dokumentdaten zu erfassen, verwendet jedoch PaliGemma [Referenz 10], um multimodale Einbettung zu generieren. Im Vergleich zu BiPali, das nicht den Late Interaction-Mechanismus verwendet, sondern auch PaliGemma zum Generieren von Einbettungen verwendet, beträgt der Bewertungsindex-Vergleich von nDCG@5 81,3 vs. 58,8. Diese Lücke ist der Unterschied zwischen „ausgezeichnet“ und „funktioniert überhaupt nicht“.



Obwohl seit dem Erscheinen von ColBERT bereits vier Jahre vergangen sind, hat die Anwendung des Late Interaction-Modells in RAG gerade erst begonnen. Es wird definitiv die Verwendungsszenarien von RAG erweitern und eine qualitativ hochwertige semantische Erinnerung in komplexen RAG-Szenen ermöglichen. Infinity ist bereits bereit für seine End-to-End-Anwendung. Willkommen bei Star Infinity, https://github.com/infiniflow/infinity, und hat sich zum Ziel gesetzt, die beste native KI-Datenbank zu werden!

Verweise

1. Colbert: Effiziente und effektive Passagensuche durch kontextualisierte späte Interaktion über Bert, SIGIR 2020.

2. Colbertv2: Effektiver und effizienter Abruf durch leichte späte Interaktion, arXiv:2112.01488, 2021.

3. RAGatouille https://github.com/bclavie/RAGatouille

4. Effizientes Multi-Vektor-Dichte-Retrieval mit Bit-Vektoren, ECIR 2024.

5. https://huggingface.co/mteb

6. https://huggingface.co/BAAI/bge-m3

7. https://huggingface.co/jinaai/jina-colbert-v1-en

8. https://github.com/infiniflow/infinity/tree/main/python/benchmark/mldr_benchmark

9. ColPali: Effizienter Dokumentenabruf mit Vision Language Models, arXiv:2407.01449, 2024.

10. https://github.com/google-research/big_vision/tree/main/big_vision/configs/proj/paligemma