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