Hoeveel RAM is nodig voor een meertalige RAG-index voor gezinnen?

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Een meertalige RAG-index voor een gezin past vaak in 16–32 GB RAM, maar het aantal chunks en het indexontwerp zijn belangrijker dan alleen het aantal talen.

Een thuisarchief met 500.000 chunks kan één meertalige embedding per chunk gebruiken in plaats van één kopie per taal. Het geheugenverbruik groeit nog steeds door vectordimensies, grafiekverbindingen, metadata, caches, rerankers en het generatiemodel. Het nuttige doel is daarom een gemeten piek in de werkset met voldoende marge, niet een regel van “gigabytes per taal” bij piekbelasting.

Begin met vectoren en voeg daarna de zoekstructuur toe

Het geheugengebruik van ruwe vectoren is het aantal chunks vermenigvuldigd met de dimensies en het aantal bytes per waarde. Bij float32 bevatten 500.000 vectoren met 768 dimensies ongeveer 1,54 GB aan coördinaten. Float16 halveert die coördinatenbelasting, hoewel ondersteuning door de database en het effect op de nauwkeurigheid moeten worden gecontroleerd.

Een overzicht van HNSW-graafindexering legt uit waarom HNSW een grafiek met buurverbindingen bijhoudt voor snelle benaderende zoekopdrachten. Die verbindingen, ID's, uitlijning en overhead van de allocator komen boven op de berekening voor ruwe vectoren.

Metadat filters, document-ID's, tekstcaches en dubbele structuren tijdens het bouwen kunnen de verwachtingen overtreffen. Een database die op schijf werkt, kan nog steeds vaak gebruikte grafiekpagina's in het geheugen houden, terwijl een engine in het geheugen vrijwel de volledige index kan behouden. Ruwe vectoren vormen de ondergrens, niet de uiteindelijke RAM-behoefte.

Meertalige dekking verandert het aantal chunks meer dan de rekenkundige berekening

Een meertalig embeddingmodel brengt meerdere talen onder in één vectorruimte, dus het toevoegen van een taal dupliceert niet automatisch elke vector. Het RAM-verbruik stijgt wanneer vertaalde kopieën afzonderlijk worden gechunked, taalspecifieke indexen worden bijgehouden of tokenisatie meer chunks oplevert voor dezelfde documenten.

Onderzoek naar meertalige embeddings evalueert gedeelde representaties voor veel talen en ondersteunt ontwerpen met één index wanneer het gekozen model die talen goed genoeg op elkaar afstemt. De kwaliteit van de dekking kan per taal verschillen, ook wanneer het geheugenverbruik niet verandert.

Het generatiemodel en de reranker gebruiken eveneens systeemgeheugen. Een server met 16 GB kan een gematigde index bevatten, maar veel naar schijf gaan zodra een LLM, OCR-proces en databasecache tegelijk actief zijn. Meer RAM corrigeert geen zwakke meertalige zoekresultaten; het voorkomt alleen dat geheugendruk de test verstoort.

Waar het bereik van 16–32 GB niet meer geldt

Zestien gigabyte is haalbaar voor honderdduizenden compacte vectoren met tekst op schijf en een klein lokaal model. Tweeëndertig gigabyte is een veiliger startpunt voor ongeveer één miljoen vectoren met 768 dimensies plus services. Hogere dimensies, meerdere replica's, afzonderlijke taalindexen of een groter permanent geladen LLM kunnen 64 GB of meer rechtvaardigen.

Een bespreking van HNSW-indexgeheugen laat zien dat het aantal bytes van ruwe vectoren slechts een fractie van het totale HNSW-geheugen kan zijn zodra grafiekstructuren worden meegerekend. Implementatiekeuzes maken elke universele verhouding onbetrouwbaar.

Deze bereiken gaan niet op wanneer de database compressie, geheugentoewijzing, productkwantisatie of een heel anders geconfigureerde grafiek gebruikt. Ze gaan ook niet op tijdens het bouwen van de index als de builder tijdelijk oude en nieuwe kopieën vasthoudt. Meet pieken tijdens stabiel zoeken en opnieuw bouwen afzonderlijk.

Stem RAM af op een gemeten werkset

Bereken eerst de ruwe vectoren en verwerk daarna tien procent van het beoogde corpus met de definitieve dimensies, metadata en indexparameters. Meet het residente geheugen na zoeken met een opgewarmde cache, gelijktijdige query's en één keer opnieuw bouwen. Vermenigvuldig alleen de componenten die lineair schalen en reserveer vervolgens minstens 25 procent operationele marge.

Voer het prototype uit naast de geplande vectordatabasetaak voor thuis, omdat pieken van het model en de database kunnen samenvallen. Houd swapactiviteit en de foutfrequentie van geheugenpagina's bij.

Kies 16 GB alleen wanneer de geëxtrapoleerde piek onder ongeveer 12 GB blijft; kies 32 GB wanneer die onder ongeveer 24 GB blijft. Ga hoger wanneer opnieuw bouwen of gelijktijdige inferentie die grens overschrijdt. Bereken alles opnieuw na wijzigingen in chunking of embeddingdimensies.

Tech & AI HUB

Meer om te lezen

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.