Hur mycket vektorlagring kräver en miljon dokumentsegment från hemmet?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

En miljon chunkar kräver ungefär 1,5–6,1 GB enbart för vanliga float32-vektorer, innan grafindex, metadata, text, repliker och arbetsutrymme räknas med.

Beräkningen börjar med dimensionerna, inte antalet dokument: en miljon 768-dimensionella float32-vektorer innehåller 768 miljoner fyrabytevärden, det vill säga cirka 3,07 GB i decimal notation. En driftsklar lagring behöver mer eftersom den måste identifiera vektorer, söka effektivt i dem, filtrera metadata, bevara chunktext och klara indexunderhåll under både sökningar och underhållsåtgärder på servern.

Råvektorernas byteantal utgör den reproducerbara miniminivån

Multiplicera antalet chunkar med inbäddningsdimensionerna och antalet byte per koordinat. För en miljon float32-vektorer använder 384 dimensioner 1,536 GB, 768 använder 3,072 GB och 1 536 använder 6,144 GB. Binära gigabyte ser ut att vara cirka sju procent mindre i visade enheter.

En översikt över skalning visar samma samband för rå vektorlagring: antalet dimensioner multiplicerat med värdets bitbredd bestämmer koordinatnyttolasten innan databasstrukturer räknas med.

Float16 kan halvera vektorkomponenten, och int8 eller produktkvantisering kan minska den ytterligare. Komprimering kan påverka träffsäkerheten och kräver stöd i databasen. Källdokumenten och den genererade chunktexten ingår inte i dessa siffror.

Index och metadata kan vara lika omfattande som koordinaterna

Platt sökning lägger till relativt lite indexstruktur men skannar många vektorer. HNSW lagrar grannlänkar och flera grafnivåer för att minska sökarbetet. Vektor-ID:n, markeringar för borttagna poster, filter, justering och databassidor medför ytterligare overhead.

En introduktion till HNSW-anslutningar beskriver varför grafanslutningar snabbar upp ungefärlig sökning samtidigt som de kräver extra minne och lagring. Det konfigurerade antalet grannar ändrar denna kostnad direkt.

Metadata varierar ännu mer. Ett kompakt dokument-ID och en språkkod kan lägga till tiotals byte; upprepade sökvägar, behörigheter och fullständig chunktext kan lägga till hundratals eller tusentals. Lagra texten konsekvent antingen en gång eller i vektordatabasen innan du jämför totalsummor.

Där en enda lagringsuppskattning inte räcker

Ett praktiskt planeringsintervall för en miljon 768-dimensionella float32-chunkar är ofta 5–12 GB för vektorer plus ett approximativt index, innan omfattande text och repliker räknas med. Detta är ett budgeteringsintervall, inte en garanti för ett visst format.

En jämförelse av vektorarkitekturer uppskattar HNSW:s lagringsöverhead till betydligt mer än råkoordinaterna för vissa HNSW-konfigurationer. Motorns standardinställningar och grafparametrar avgör den verkliga multiplikatorn.

Intervallet blir missvisande med flera inbäddningar per chunk, hybrida nyckelordsindex, replikering, ögonblicksbilder eller ombyggnader som tillfälligt duplicerar data. Det kan också överskatta en komprimerad diskbaserad lagring. ”En miljon chunkar” är otillräckligt om inte dimension, datatyp, index, metadata och antal kopior anges.

-15% OFF
Single board computer zimaboard2

Extrapolera från ett indexprov på tio procent

Infoga 100 000 representativa chunkar med den slutliga inbäddningsdatatypen, metadataschemat och indexparametrarna. Mät råvektorkolumn, index, metadata, text, skriv-ahead-logg och ögonblicksbildens storlek separat efter komprimering. Extrapolera skalbara komponenter med tio och lägg till marginal för ombyggnad och säkerhetskopiering.

Placera testet på den avsedda lagringsnivån för lagringens arbetsutrymme, eftersom komprimering och filsystemets allokering påverkar de fysiska totalsummorna. Undvik att extrapolera från tomma databasfiler.

Budgetera minst den uppmätta stabila totalsumman plus en tillfällig indexkopia och 20 procent ledigt utrymme. Om replikering är aktiverad ska du bara multiplicera de replikerade komponenterna. Upprepa provet varje gång dimensioner, metadata eller HNSW:s granninställningar ändras.

Teknik- och AI-hubb

Mer att läsa

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.