Wie verkleinert die Vektorquantisierung einen Suchindex für zu Hause?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Vektorquantisierung verkleinert einen Heimsuchindex, indem sie hochpräzise Embedding-Werte durch kompakte Codes ersetzt, die die ursprünglichen Vektoren annähern.

Ein privater Suchserver kann Hunderttausende oder Millionen von Chunks aus Notizen, OCR-Texten, Handbüchern, Fotometadaten, Transkripten und Anwendungsdaten indizieren. Wenn jedes Embedding als Gleitkommawert mit voller Präzision gespeichert wird, kann die Vektordatenmenge größer werden als der Quelltext selbst. Die Quantisierung ändert die für die Suche verwendete Darstellung jedes Vektors, sodass er weniger Bytes belegt. Dafür wird eine kontrollierte Annäherung gegen einen geringeren Speicher- und Festplattenbedarf eingetauscht.

Embeddings mit voller Präzision benötigen mehrere Bytes für jede Dimension

Ein Embedding ist ein Array numerischer Koordinaten. Ein 1.024-dimensionaler Vektor, der als 32-Bit-Gleitkommazahl gespeichert wird, benötigt für seine Rohwerte 4.096 Bytes, bevor Graphverknüpfungen, IDs, Nutzdaten, Overhead des Speicherzuweisers oder Replikate berücksichtigt werden.

komprimierte Vektordarstellungen reduzieren die für den Vektoranteil eines Index benötigte Bytezahl. Dadurch kann ein größerer durchsuchbarer Arbeitsbestand auf einem speicherbeschränkten Heimserver im Arbeitsspeicher gehalten werden.

Multipliziert man diese Rohgröße mit einer Million Chunks, nähern sich allein die unkomprimierten Vektorwerte mehreren Gigabytes. Mehrere Sammlungen, Replikate und resident gehaltene Suchindizes vergrößern den Speicherbedarf auf dem Heimserver zusätzlich. Die Quantisierung zielt auf diese numerische Darstellung ab. Sie komprimiert nicht automatisch Quell-PDFs, Nutzdatenmetadaten, invertierte Indizes oder jede Graphkante rund um diese Vektoren.

Quantisierung ordnet detaillierte Koordinaten einer kleineren Menge von Darstellungen zu

Die Grundidee besteht darin, viele mögliche Gleitkommawerte durch eine kleinere Zahl darstellbarer Zustände zu ersetzen. Die genaue Zuordnung hängt davon ab, ob das System skalare, binäre, Produkt-, Rotations- oder eine andere Quantisierungsfamilie verwendet.

Verschiedene Vektorquantisierungsmodi reduzieren die Darstellungsgröße auf unterschiedliche Weise. Daher haben skalare, binäre und Produktverfahren keinen einheitlichen Kompromiss zwischen Genauigkeit und Leistung.

Ein skalares Verfahren kann die Präzision jeder Koordinate reduzieren. Binäre Verfahren kodieren deutlich gröbere Richtungsinformationen. Die Produktquantisierung, die separat behandelt wird, teilt einen Vektor in Unterräume auf und speichert Kennungen von Codebüchern.

Das gemeinsame Ergebnis ist dasselbe: Die Suchmaschine kann eine kompakte Näherung in ihrem schnellen Arbeitsbestand halten, anstatt das ursprüngliche Array mit voller Präzision durch jeden Kandidatenvergleich zu führen.

Kleinere Vektoren reduzieren sowohl den residenten Arbeitsspeicher als auch den Datenverkehr bei Distanzberechnungen

Bei der Suche werden Kandidatenvektoren wiederholt geladen und mit der Suchanfrage verglichen. Wenn diese Darstellungen kleiner sind, passen mehr Kandidaten in den CPU-Cache oder den Speicher eines Beschleunigers, und es müssen weniger Daten durch die Speicherhierarchie bewegt werden.

kompakte Näherungsvektoren reduzieren Speicherbedarf und Speicherverkehr während der breiten Kandidatensuche. Ihre Distanzen nähern jedoch die Beziehungen an, die in den ursprünglichen Embeddings mit voller Präzision kodiert sind.

Auf einem Heimserver besteht der Vorteil oft eher darin, den aktiven Index im Arbeitsspeicher zu halten, als in den beworbenen Kompressionsraten. Das Vermeiden von Speicherdruck kann wiederholte Seitenfehler von der Festplatte oder Konkurrenz mit dem lokalen LLM, der Datenbank und anderen Containern verhindern.

Ob sich die Latenz verbessert, hängt von der Suchmaschine, den CPU-Befehlen, der Indexstruktur und zusätzlichen Dekodierungs- oder Neuberechnungsstufen ab.

Näherungsvektoren können die Reihenfolge der Nachbarn verändern

Quantisierung ist in der Regel verlustbehaftet. Mehrere unterschiedliche Vektoren mit voller Präzision können auf ähnliche oder identische kompakte Darstellungen abgebildet werden. Daher bewahren Näherungsdistanzen nicht jede ursprüngliche Rangfolge exakt.

verlustbehaftete Suche im komprimierten Bereich tauscht die exakte numerische Darstellung gegen einen kleineren oder schnelleren Arbeitsbestand für die Ähnlichkeitssuche ein. Deshalb muss der Recall nach der Komprimierung gemessen werden.

Ein relevanter Chunk, der bei voller Präzision nur knapp näher lag als ein anderer, kann nach der Komprimierung in der Rangfolge zurückfallen. Die Wirkung hängt von der Datenverteilung, dem Embedding-Modell, dem Quantisierer, der Codegröße und dem Schwierigkeitsgrad der Anfrage ab. Deshalb sind Recall-Tests unverzichtbar. Eine Kompressionseinstellung, die bei allgemeinen semantischen Anfragen sicher wirkt, kann sich bei sehr ähnlichen Produkthandbüchern oder eng beieinanderliegenden Passagen verschiedener Versionen anders verhalten.

Oversampling und Neuberechnung können die Genauigkeit eines kompakten ersten Durchlaufs wiederherstellen

Ein häufig verwendeter Ansatz durchsucht den komprimierten Index nach mehr Kandidaten als den endgültigen Top-k und berechnet anschließend die exakten oder höherpräzisen Distanzen für diese kleinere Menge mithilfe der ursprünglichen Vektoren neu.

Oversampling und Neuberechnung können eine komprimierte Darstellung breit durchsuchen und anschließend die Distanzen für eine kleinere Kandidatenmenge mit höherer Präzision neu berechnen, bevor die endgültige Rangfolge erstellt wird.

Dieser hybride Ablauf hält die aufwendigen vollständigen Vektoren aus der breiten Kandidatensuche heraus und ermöglicht trotzdem, Grenzfälle zu korrigieren, bevor die Belege das RAG-System erreichen.

Der Kompromiss besteht darin, dass die Aufbewahrung ursprünglicher Vektoren zusätzlichen Speicherplatz oder Arbeitsspeicher benötigt und die Neuberechnung pro Anfrage zusätzlichen Aufwand verursacht. Ein Heimserver sollte daher den gesamten Speicherbedarf messen, statt nur die komprimierten Bytes zu zählen.

Quantisierung löst die Vektorgröße, aber nicht jedes Nadelöhr eines Suchindexes

Ein HNSW-Index speichert auch die Verbindungen des Graphen. Gleichzeitig beanspruchen Metadatenfilter, Textindizes, Dokumentnutzdaten, Caches und Anfragepuffer eigene Ressourcen.

Infrastruktur für die semantische Suche umfasst Embeddings, Indizierung, Filterung und Abruf. Die Verkleinerung der Vektoren wirkt sich daher nur auf eine Ressourcenschicht der vollständigen Suchpipeline zu Hause aus.

Ein HNSW-Index enthält sowohl Vektoren als auch einen Verbindungsgraphen. Deshalb kann die Vektorkomprimierung den gesamten Index nicht im gleichen Verhältnis verkleinern wie die rohen Embedding-Bytes.

Tech- & KI-Zentrum

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.