Indeksiranje vektora u Postgresu: Zašto je pao naš AI agent s 10M vektora
Uvod u problem
Naš autonomni AI agent, izgrađen na RiNET platformi, koristio je Postgres s pgvector ekstenzijom kao primarni memorijski sloj. Sve je funkcioniralo besprijekorno dok nismo pokušali indeksirati 10 milijuna vektora. Tada je sustav doživio potpuni kolaps. U ovom članku analiziramo što je pošlo po zlu i kako smo riješili problem.
Što se dogodilo?
Prilikom pokretanja indeksiranja 10 milijuna vektora dimenzionalnosti 1536, pgvector je pokušao izgraditi IVFFlat indeks s neodgovarajućim parametrima. Proces je potrošio svu dostupnu RAM memoriju (64 GB) i uzrokovao OOM (Out of Memory) kill od strane operativnog sustava. Posljedica: potpuni prekid rada agenta i gubitak neindeksiranih podataka.
Korijenski uzrok
- Pogrešan odabir tipa indeksa: IVFFlat zahtijeva pažljivo podešavanje parametra lists. Zadana vrijednost (100) bila je preniska za 10M vektora, što je dovelo do prekomjernog korištenja memorije.
- Nedostatak progresivnog indeksiranja: Pokušali smo indeksirati sve odjednom umjesto u manjim batchovima.
- Nepostojanje monitoringa resursa: Nismo imali alate za praćenje potrošnje memorije u stvarnom vremenu.
Kako smo riješili problem
Nakon detaljne analize, implementirali smo sljedeća poboljšanja:
- Prebacivanje na HNSW indeks: HNSW (Hierarchical Navigable Small World) indeks je memorijski učinkovitiji i brži za velike skupove podataka. Koristimo ga s m=16 i ef_construction=200.
- Progresivno indeksiranje: Indeksiranje se odvija u batchovima od 100.000 vektora, s pauzama za garbage collection.
- Implementacija monitoringa: Uveli smo Prometheus i Grafana za praćenje memorije, CPU-a i I/O operacija.
- Optimizacija konfiguracije Postgres-a: Povećali smo shared_buffers na 16 GB i work_mem na 256 MB.
Rezultati
Nakon primjene ovih promjena, uspješno smo indeksirali 100 milijuna vektora bez ijednog prekida. Vrijeme upita smanjilo se s 500 ms na 50 ms za najbliže susjede. Sustav je sada robustan i skalabilan.
Zaključak
Postgres s pgvectorom može biti izvrsna autonomna memorija za AI agente, ali zahtijeva pažljivo planiranje i optimizaciju. Naš postmortem pokazuje da su pravi alati i pristup ključni za izbjegavanje katastrofalnih kvarova.
Zanima vas ovakva AI tehnologija?
RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.
Kontaktirajte nas →
Komentari