Предположим, нам необходимо выполнить поиск в большой коллекции литературных произведений, используя запросы, требующие точного соответствия названия, автора или других легко индексируемых критериев. Такая задача хорошо подходит для реляционной базы данных и такого языка, как SQL. Однако, если мы хотим использовать более абстрактные запросы, такие как «Поэма о гражданской войне», становится невозможным полагаться на наивные метрики сходства вроде количества общих слов между двумя фразами. Например, запрос «научная фантастика» больше связан с «будущим», чем, например, с «наукой о Земле», несмотря на то, что в первом случае у нас нет общих слов, а во втором есть общекоренное слово к одному из слов запроса.
Машинное обучение значительно улучшило способность компьютеров понимать семантику языка и, следовательно, отвечать на эти абстрактные запросы. Современные модели машинного обучения могут преобразовывать входные данные, такие как текст и изображения, в эмбеддинги — многомерные векторы, обученные таким образом, чтобы более похожие входные данные располагались ближе друг к другу в векторном пространстве. Таким образом, для данного запроса мы можем вычислить его эмбеддинг и найти литературные произведения, эмбеддинги которых будут ближе всего к запросу. Так, машинное обучение превратило абстрактную и ранее трудно определяемую задачу в строго математическую. Однако остается проблема вычислений: как быстро найти ближайшие эмбеддинги набора данных для данного эмбеддинга запроса? Набор эмбеддингов часто слишком велик для поиска перебором, а его высокая размерность затрудняет оптимизацию отсечением.