Поиск по Telegram до сих пор как в 2000-х — я попытался это исправить

У Telegram миллиард пользователей. Но искать внутри него до сих пор часто приходится как в интернете 2000-х: по ключевым словам, через каталоги, рубрики и вручную собранные подборки, а также, конечно, по знакомству.

Меня это давно раздражало, поэтому я собрал свой самый масштабный pet project — что-то вроде Google для Telegram.

Учим французский в Telegram
Учим французский в Telegram

Я взял индекс Common Crawl, вытащил оттуда миллионы ссылок вида t.me, а потом написал на Rust скрапер, который превращает список юзернеймов в данные о каналах, публичных чатах и ботах. Для каналов я собирал описания и последние сообщения из превью на t.me, для ботов — стартовое сообщение и список команд через юзербота.

Но этого мне показалось мало, поэтому я добавил в индекс даже визуальные сигналы: прогнал аватарки через image-to-text и включил их текстовые описания в документ, по которому потом считались эмбеддинги.

Потом я извлёк все репосты и упоминания юзернеймов и повторил цикл.

Снова.

Снова.

В итоге получилось больше, чем я рассчитывал: 1 млн каналов, 170 тыс. публичных чатов и около 150 тыс. ботов.

Для всей этой базы я посчитал эмбеддинги на виртуалке с vast.ai, поднял гибридный поиск через ParadeDB и сделал веб-интерфейс.

Так появился semagram.io и Telegram-бот @SemagramBot.

Что в этом поиске интересно:

  • он ищет и по ключевым словам, и по смыслу;
  • умеет кросс-языковой поиск;
  • умеет фильтровать результаты по языку через директивы вроде "lang:fr";
  • умеет искать похожие каналы, чаты и ботов по запросу вида "@username".

Например:

  • запрос "Лентач" находит одноимённый канал;
  • запрос "блог lang:fr" находит французские блоги, хотя основная часть запроса вообще на русском;
  • запрос "@oldlentach lang:fr" находит французские новостные паблики, похожие по смыслу.

Я, например, с его помощью наконец-то нашёл французских Telegram-блогеров — а я как раз учу французский.

На Reddit проект встретили тепло, но самое активное Telegram-сообщество, как мне кажется, всё-таки русскоязычное. Поэтому пришёл сюда за фидбеком.

Как вам идея? Что бы вы добавили в такой поиск? И главное — кому, кроме меня, это может быть реально нужно?

2
1 комментарий