pg_vectorsearch — это расширение PostgreSQL для высокопроизводительного приближённого поиска ближайших соседей (ANN). Оно опубликовано на GitHub и обсуждалось на Hacker News. В настоящее время расширение находится в альфа-версии и предназначено для тестирования, а не для промышленной эксплуатации. Обновление между предварительными выпусками может быть невозможным, поэтому пользователям следует планировать удаление и повторное создание расширения и его индексов. В журнале изменений перечислены известные проблемы.
Индекс PRISM (Partitioned Routing Index for Similarity Matching) расширения представляет собой метод доступа к индексам, концептуально похожий на IVFFlat из pgvector, но построенный на основе квантования RaBitQ, иерархической маршрутизации и секционирования. Он реализован на языке C и поддерживает вычисление расстояний с использованием SIMD (AVX2, AVX512, NEON), динамические вставки, обновления и удаления, а также перебалансировку списков постингов с помощью prism_rebalance. Проект утверждает, что PRISM значительно быстрее IVFFlat и HNSW из pgvector как при выполнении запросов, так и при построении индекса, а на наборе данных из 100 миллионов векторов превосходит HNSW при эквивалентной полноте поиска на экземпляре с четвертью памяти.
PRISM использует иерархическое дерево центроидов для разбиения векторов на кластеры и опирается на буферный кеш PostgreSQL, чтобы держать это дерево «горячим». Векторы квантуются с помощью RaBitQ и хранятся в списках постингов. Границы ошибок позволяют поиску исключать векторы, которые не могут быть ближайшими соседями, сокращая количество необходимых переранжирований с полной точностью.
Пользователи могут хранить векторы в нативных столбцах vec32 или vec16 либо создавать индекс PRISM непосредственно на существующих столбцах vector или halfvec из pgvector, не меняя свои таблицы и запросы. Оба варианта используют одни и те же операторы и параметры настройки, например prism.nprobe, позволяющий регулировать соотношение полноты и скорости.
Источник: Hacker News · Сводку подготовил HeadlinesBriefing