ТЕХНОЛОГИИ

Индекс halfvec в pgvector: полные векторы для финального ранжирования

В этом материале
ГЛАВНОЕ ЗА МИНУТУ

Индекс по приведению к halfvec может сохранить исходные векторы для повторной оценки, в отличие от замены хранимого столбца.

Expression-индекс halfvec позволяет искать по представлению пониженной точности, не заменяя исходные векторы в таблице. Это различие важно для оценки размера индекса и итогового ранжирования: хранение half precision и индексация приведения типа являются разными решениями.

Выбрать сокращаемое представление

README pgvector описывает и столбец halfvec, и expression-индекс над приведением существующего embedding. Во втором случае исходные значения сохраняются для другого этапа оценки. Замена типа столбца меняет сами остающиеся данные. До сравнения объёмов определите, какая операция предполагается, и сохраните ревизию модели вместе с размерностью вектора. Эти сведения необходимы для обоих вариантов, даже если внешнее имя поля осталось прежним после изменения схемы.

Согласовать выражение индекса

PostgreSQL использует выражение, объявленное в индексе, а не общее намерение искать с пониженной точностью. Это различие объясняет документация expression-индексов. Учебный индекс для трёхмерных данных может использовать embedding::halfvec(3) с соответствующим классом операторов. Поиску нужны согласованные выражение и операция расстояния. Это пример структуры, а не рекомендация размерности для настоящего корпуса. Сохраните его отдельно от рабочего профиля, чтобы иллюстрация не стала случайной производственной схемой.

Проверить контракт типа и операции

SQL-определения расширения показывают функции, приведения и операторы halfvec. Сохраняйте выбранное расстояние: не заменяйте cosine другой метрикой одновременно с изменением точности. Такой опыт не позволит установить причину изменения порядка. Проверьте версию расширения и фактический план выполнения. Синтаксически правильный запрос способен использовать другой путь, когда его выражение или условия стоимости отличаются от предполагаемой конфигурации индекса.

Разделить shortlist и финальный порядок

Подготовьте диагностический корпус с почти одинаковыми фрагментами и небольшим набором размеченных запросов. Представлением half precision выберите кандидатов, затем вычислите нужное финальное расстояние по исходным векторам. Сохраните оба порядка и идентификаторы кандидатов. Точное повторное ранжирование не вернёт документ, отсутствующий в shortlist. Напротив, перемена промежуточного порядка может оказаться безвредной, если требуемые доказательства остаются доступны итоговому этапу обработки.

ЭтапСохраняемое представление
Исходное хранениеОригинальный вектор
Индекс кандидатовЯвное выражение halfvec
Финальная оценкаОбъявленная метрика оригинального вектора

Измерить не только файлы индекса

Отдельно запишите размер индекса, исходной таблицы, рабочие выделения и поведение запроса. Меньший индекс не удаляет оригинальные данные и не ускоряет автоматически каждый запрос. Для reranking нужно прочитать полные векторы; стоимость зависит также от локальности нагрузки. Оценивайте полноту кандидатов и финальную релевантность вместе со временем. Потеря точности, опубликованная для другого корпуса, не является гарантией поведения собственного распределения близких соседей.

Сохранить контроль миграции

Оставьте точный поиск по исходным векторам как контроль на небольшом наборе. Сначала меняйте индексируемое представление при неизменных запросах, фильтрах и финальном скоринге. Изменение точности хранения требует другого опыта и своих данных отката. Итог должен объяснять, какое представление сокращено и какая информация остаётся доступной, а не просто объявлять, что база теперь использует вдвое меньше памяти.

Связанные материалы: PostgreSQL и pgvector для RAG: когда хватит существующего сервера; Размерность эмбеддингов: как посчитать память индекса.

← Все материалы