Как рассчитать объем оперативной памяти, необходимый для обслуживания X N-мерных векторов с помощью pgvector (HNSW)?
Я пытаюсь определить функцию, где количество векторов и количество векторных измерений, так что для любогоx
,n
,f(x, n)
больше, чем объем оперативной памяти, необходимый для обслуживания этих векторов через базу данных pgvector с индексом HNSW.
Я немного погуглил, но
- Я не могу найти формулу для размера индекса.
- Я вижу, что некоторые базы данных (например, Qdrant) могут использовать файлы, отображенные в памяти, как для векторов, так и для индексов, чтобы уменьшить потребление оперативной памяти, но я не вижу таких вариантов для pgvector. Требуется ли хранить в памяти весь индекс HNSW? Если нет, то как определить необходимый объем памяти?
В этой статье говорится:
Третий компромисс для индексов HNSW заключается в том, что они значительны: индекс для 1 млн строк вложений ИИ может составлять 8 ГБ или больше. Из соображений производительности вам понадобится весь этот индекс в памяти.
хотя в этой статье говорится, что Qdrant, использующий тот же алгоритм индексации HNSW, требует всего около 1 ГБ ОЗУ для обслуживания 1 миллиона векторов (без сопоставления памяти). Почему такая разница?