Как рассчитать объем оперативной памяти, необходимый для обслуживания X N-мерных векторов с помощью pgvector (HNSW)?

Я пытаюсь определить функцию, где количество векторов и количество векторных измерений, так что для любогоx,n,f(x, n)больше, чем объем оперативной памяти, необходимый для обслуживания этих векторов через базу данных pgvector с индексом HNSW.

Я немного погуглил, но

  1. Я не могу найти формулу для размера индекса.
  2. Я вижу, что некоторые базы данных (например, Qdrant) могут использовать файлы, отображенные в памяти, как для векторов, так и для индексов, чтобы уменьшить потребление оперативной памяти, но я не вижу таких вариантов для pgvector. Требуется ли хранить в памяти весь индекс HNSW? Если нет, то как определить необходимый объем памяти?

В этой статье говорится:

Третий компромисс для индексов HNSW заключается в том, что они значительны: индекс для 1 млн строк вложений ИИ может составлять 8 ГБ или больше. Из соображений производительности вам понадобится весь этот индекс в памяти.

хотя в этой статье говорится, что Qdrant, использующий тот же алгоритм индексации HNSW, требует всего около 1 ГБ ОЗУ для обслуживания 1 миллиона векторов (без сопоставления памяти). Почему такая разница?

0 ответов

Другие вопросы по тегам