Вам нужно умножить записи для соответствующих слов в векторе, поэтому для слов должен быть глобальный порядок. Это означает, что в теории ваши векторы должны быть одинаковой длины.
На практике, если один документ был просмотрен раньше другого, слова во втором документе могли быть добавлены в глобальный порядок после просмотра первого документа, поэтому даже если векторы имеют одинаковый порядок, первый документ может быть короче, поскольку в нем нет записей для слов, которых не было в этом векторе.
Документ 1: Быстрая коричневая лиса перепрыгнула через ленивую собаку.
Global order: The quick brown fox jumped over the lazy dog
Vector for Doc 1: 1 1 1 1 1 1 1 1 1
Документ 2: Бегун был быстрым.
Global order: The quick brown fox jumped over the lazy dog runner was
Vector for Doc 1: 1 1 1 1 1 1 1 1 1
Vector for Doc 2: 1 1 0 0 0 0 0 0 0 1 1
В этом случае, теоретически, вам нужно заполнить вектор Документа 1 нулями в конце. На практике при вычислении скалярного произведения вам нужно только умножить элементы до конца вектора 1 (поскольку пропуск дополнительных элементов вектора 2 и умножение их на ноль абсолютно одинаковы, но посещение дополнительных элементов происходит медленнее).
Затем вы можете вычислить величину каждого вектора в отдельности, и для этого векторы не обязательно должны быть одинаковой длины.