A Weaviate új vektorindexe kevesebb memóriával dolgozik

A Weaviate bemutatta a HFresh nevű, lemezalapú vektorindexet, amely a csúcssebesség helyett az alacsonyabb memóriahasználatra és a nagyobb adathalmazok kezelésére helyezi a hangsúlyt. A megoldás alapértelmezett a Weaviate Cloud Free Tier csomagjában, a Cost Optimized profil használatakor.
- A HFresh lemezalapú vektorindex, amely az alacsonyabb memóriahasználatot célozza.
- A keresés egy memóriabeli centroidindexszel és lemezen tárolt postingokkal működik.
- A rendszer helyi újraegyensúlyozással kerüli el a teljes index-újraépítést.
- Az RQ8 a centroidok, az RQ1 a postingok tömörítésére szolgál.
- A Weaviate Cloud Free Tier Cost Optimized profilja alapértelmezetten HFresh-t használ.
A HNSW memóriaigényére ad választ
A hasonlósági keresésben a HNSW, vagyis a Hierarchical Navigable Small World, gyors és pontos gráfalapú indexként terjedt el. A Weaviate szerint ugyanakkor a milliós adathalmazok milliárdos méretűvé növekedésével egy fontos korlátja is láthatóvá válik: a gráfot és a vektorok gyorsítótárát memóriában kell tartani.
A HFresh azokhoz az alkalmazásokhoz készült, amelyek a kisebb memóriahasználatot és a nagyobb léptéket előbbre sorolják a lehető legalacsonyabb késleltetésnél és a legmagasabb lekérdezési áteresztőképességnél. A Weaviate szerint ez a kompromisszum kis, korlátozott erőforrású alkalmazásoknál és nagy adathalmazoknál egyaránt hasznos lehet.
Kétlépcsős keresés lemezen tárolt régiókkal
A HFresh a vektorokat nem egyetlen, minden elemet összekapcsoló globális gráfban rendezi el. Sok kisebb, egymáshoz közeli vektorokat tartalmazó régióra, úgynevezett postingra osztja őket, ezeket pedig egy LSM-tárolóban lemezen tárolja.
A keresés első szakaszában egy tömör, memóriában működő centroidindex választja ki a lekérdezés szempontjából releváns régiókat. Ezután a rendszer csak a kapcsolódó postingokat olvassa be a lemezről, és ezeken végez részletes keresést. A Weaviate szerint a lemezműveletek ilyen korlátozása kiszámíthatóbb késleltetést tesz lehetővé akkor is, amikor az adathalmaz milliárdnyi vektorra nő.
A HFresh a SPFresh kutatási tanulmányban bemutatott elképzelésekre épít, de a Weaviate meglévő, kipróbált komponenseihez igazítja azokat. A cél a helyi karbantartás, az irányított lekérdezési lemezműveletek, valamint a memóriában működő útválasztási réteg és a lemezen tárolt postingok szétválasztása.
Frissítés teljes újraépítés nélkül
A hagyományos partícióalapú indexeknél a frissítések idővel eltolhatják a partíciók határait, ami a keresési pontosság és a késleltetés helyreállításához teljes újraépítést tehet szükségessé. A Weaviate által ismertetett megközelítés szerint egy vektor beszúrása vagy törlése jellemzően csak a vektortér egy kisebb környezetét érinti.
A HFresh ezért fokozatos újraegyensúlyozást használ. A háttérben a rendszer felosztja a túl nagy postingokat, egyesíti a túl kicsiket, és áthelyezi a vektorokat, amikor a régiók határai módosulnak. Ezek a műveletek többnyire aszinkron módon futnak, így a rendszer helyi korrekciókkal tarthatja egyensúlyban az indexet, teljes újraépítési ciklusok nélkül.
A centroidindexhez a HFresh HNSW-t használ, mivel ez a Weaviate egyik legelterjedtebb és leginkább kipróbált vektorindexe. A centroidokat RQ8 kvantálással tömörítik, ami a Weaviate szerint négyszeresére csökkenti a memóriaigényt. A lemezen tárolt postingok RQ1-et használnak, amely a 32 bites lebegőpontos vektorokhoz képest akár 32-szeres adattömörítést biztosíthat. A végső rangsort a rendszer a legjobb jelöltek eredeti, tömörítetlen vektoraival számolja újra.
Weaviate: HFresh: Memory-Efficient Vector Search


