: обычные векторные отпечатки документов в 32-битных числах слишком тяжёлые. Их либо нужно держать в памяти (и тогда это сотни гигабайт), либо постоянно гонять с диска (и тогда теряется скорость). Поэтому практический трюк здесь — хранить один и тот же “портрет” текста сразу в двух очень компактных видах и использовать их по очереди: сначала максимально быстро отфильтровать почти всё, а потом точно проверить совсем немного кандидатов. Для корпуса масштаба Википедии (около 41 млн фрагментов) это делается так. Документ один раз превращают в числовой вектор, а затем делают два “сжатия”. Первое — битовое: от каждого числа оставляют только знак, получая крошечный битовый отпечаток. Из таких отпечатков строится индекс, который реально держать в оперативной памяти даже на 8 ГБ, потому что хранение получается на уровне “несколько байт на координаты”, а не “четыре байта на координату”, и FAISS (библиотека с открытым исходным кодом для эффективного поиска сходства и кластеризации плотных вектор
Когда пытаешься сделать семантический поиск по десяткам миллионов текстов, всё упирается не в “умные модели”, а в банальную физику данных
9 января9 янв
49
2 мин