С ростом значения ИИ в нашей повседневной жизни также важно оценивать производительность этих систем. Поиск на основе токенов является предшественником генеративного ИИ, такого как chat-gpt. Поиск на основе токенов отображает сходство между словами, чтобы получить общее представление о том, что сообщается в тексте. Токены хранятся в векторной базе данных, такой как pinecone. Каждый токен в фрагменте текста хранится как измерение в векторе. Запустив поиск по сходству, вы можете получить гораздо лучшие результаты поиска по сравнению с более традиционным текстовым поиском. Поиск подобия измеряет расстояние между наборами векторов/токенов в векторной базе данных. Двумя основными показателями для измерения поиска являются скорость и точность. Если поиск слишком медленный, он может не стоить лучших результатов. Если точность недостаточна, то дополнительная работа не стоит того по сравнению с текстовым поиском. Существует множество различных параметров, влияющих на скорость и точность поиска. Например, какой алгоритм токенизации используется, как разбивается набор данных и количество токенов в каждом разделе. Анализируя скорость и точность каждого изменения, мы можем найти лучший способ оптимизировать поиск на основе токенов/векторов.

Самое простое изменение — изменить способ разделения данных. Я решил разделить данные на основе количества предложений. Я проверил 3 разных точки разделения, 2 предложения с одним перекрывающимся предложением, 3 предложения с одним перекрывающимся предложением и 4 предложения с одним перекрывающимся предложением. Все три были очень похожи по времени запроса: 2+1 имел среднее время запроса 3459 мс, 3+1 имел среднее время запроса 3155 мс и 4+1 имел среднее время запроса 3615 мс. Совпадающая оценка также была очень похожей для всех трех размеров. Несмотря на то, что оценка совпадения очень похожа, оценка от 0 до 1, которую я дал, основываясь на том, насколько они полезны, не была одинаковой. 2+1 показали лучшие результаты в среднем с 0,80. 3+1 показали худшие результаты со средним баллом 0,72. 4+1 выступили между ними со средним баллом 0,77. Однако эти результаты, по-видимому, очень зависят от текста и предполагаемого использования. Если результаты должны использоваться без остального текста, а текст сосредоточен не столько на фактах, сколько на мнениях, больший размер фрагмента обеспечит лучшие результаты. Однако, если вы хотите знать, где найти информацию внутри текста, или если текст больше основан на фактах, лучше использовать меньший размер пакета. Количество векторов в базе данных соответствует ожидаемому: у 2+1 больше всего — 51, у 3+1 — посередине — 34, а у 4+1 — наименьшее — 25.

Изменение количества перекрывающихся предложений также оказало некоторое влияние на результаты. Используя два предложения плюс два перекрывающихся предложения, три предложения плюс два перекрывающихся предложения и четыре предложения плюс два перекрывающихся предложения. Результаты сильно отличались от отдельных перекрывающихся предложений. С 4+2 в среднем лучший личный рейтинг, но он был очень непостоянен, 3+2 был очень стабильным и занимал второе место по личному рейтингу, а 2+2 работал намного хуже, чем 2+1 и 3+2/4+2. . Все результаты матчей были очень похожими и не очень хорошо определяли качество результатов. Время выполнения запросов также было очень похожим и имело слишком много неконтролируемых переменных, чтобы можно было выделить явного победителя. Перекрытие +2 ухудшило большинство результатов, особенно для двух базовых предложений. Однако это действительно улучшило время запроса для всех запросов и номеров предложений.

Выбор различных алгоритмов встраивания также является еще одним вариантом. Однако, учитывая огромный скачок в технологиях за последний год, алгоритмы встраивания последнего поколения значительно медленнее и менее точны, чем те, что использовались в этом тесте (ada-02).

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