Программист за выходные создал собственный интернет-поисковик, потратив $10
Британский программист за выходные создал простой поисковый каталог интернет-ресурсов на полмиллиона страниц на интересующую его тематику. Работающей локально системе с веб-интерфейсом достаточно 1 ГБ на диске. На облачный GPU ушло $10. Об этом сообщает «СNews».
«Британский программист Алекс Морли-Финч из Ноттингема создал простую поисковую систему для собственных нужд», — пишет The Register.
Поисковый индекс содержит информацию о 560 тыс. страниц в интернете. Он сформирован при помощи Marlin, инструмента с открытым исходным кодом, который Морли-Финч построил самостоятельно, потратив всего несколько дней и около $10 на аренду GPU в облаке. Система работает локально и занимает менее 1 ГБ на жестком диске. Исходный код Marlin, написанный на языке программирования TypeScript, опубликован на GitHub и распространяется на условиях свободной лицензии MIT. Автор не скрывает, что при создании инструмента использовались ИИ-помощники, и заранее предупреждает об отказе от ответственности за результаты использования своего труда.
Построение индекса осуществляется при помощи Marlin, работа которого распределена между четырьмя процессами. Процесс-сборщик поглощает первоначальный список адресов сайтов для индексации, а затем сам идет по внешним ссылкам, размещенным на этих сайтах, попутно индексируя связанные страницы. Обработчик обращается к локальной языковой модели, совместимой с OpenAI, и «скармливает» ей содержимое, полученное сборщиком. Модель его анализирует и в результате генерирует набор метаданных, характеризующих проиндексированную веб-страницу. Распорядитель перед добавлением в базу данных поисковика проверяет сгенерированные метаданные и отсекает несоответствующие заданным критериям качества.
Программистом также реализован API и веб-интерфейс, позволяющий вести мониторинг работы системы, а также вести поиск по сформированному индексу. Первую версию движка Морли-Финч набросал всего за несколько часов. Индекс формировался на основе веб-страниц не из того сегмента интернета, на который рассчитывал разработчик. Вместо небольших сайтов в выборке доминировали корпоративные веб-ресурсы и документация. Вместо принудительного исключения неподходящих адресов Морли-Финч выбрал более гибкий подход, предполагающий динамическую оценку приоритета страниц на основе весов при формировании очереди на индексацию.
Для выполнения этой ресурсозатратной процедуры программист арендовал облачный GPU. Завершенной процедуру Морли-Финч счел, когда количество страниц в индексе перевалило за 560 тыс. Аренда обошлась ему примерно в $10. Еще одна серьезная проблема, с которой разработчик столкнулся в процессе, — проблема категоризации и присвоения тегов обнаруженного контента. Ошибкой оказалось отдать все это на откуп языковой модели. Она самостоятельно «придумала» 671 отдельную категорию, во многие из которых попала всего лишь одна веб-страница, а также 121 тыс. тегов, более половины из которых были задействованы единожды. Морли-Финчу пришлось написать утилиту для объединения похожих категорий и тегов, в избытке сгенерированных моделью. Подобное поведение модели натолкнуло разработчика на мысль о плохой масштабируемости, созданной им системы. Тем не менее, по его мнению, шероховатости Marlin не должны отпугивать готовых потратить выходные на его доработку. Разработчик считает, что получить приемлемый результат при помощи результата можно, затратив на это пару свободных дней. Сопутствующие финансовые расходы на построение собственного локального поисковика нельзя называть неприемлемыми.
Подписывайтесь на наш Telegram-канал, чтобы быть в курсе всех новостей и событий Рунета.