Я добавил рекомендации в GitHub

Браузерное расширение добавит пять похожих репозиториев прямо на страницу с кодом.

Я добавил рекомендации в GitHub

Интро

Мне всегда было трудно найти интересные репозитории на GitHub. Кроме того, когда я искал какие-то open-source инструменты или библиотеки, мне приходилось открывать кучу ссылок и вкладок, чтобы посмотреть похожие репозитории.

Тогда-то я и решил, что Гитхабу не хватает рекомендаций на странице репозитория. Как и в любой другой социальной сети, когда вы открываете какой-нибудь пост, то видите еще кучу рекомендуемых постов или видео для повышения вовлеченности. Я подумал, что было бы неплохо иметь список похожих репозиториев прям на странице репозитория.

Немного деталей

Первой проблемой, которую нужно было решить, было получение базы данных с популярными репозиториями гитхаба для использования в качестве пула рекомендаций. Короче говоря, я написал скраппер на python, который загружал все страницы репозиториев гитхаба с более чем 100 звездами и опубликованных за последние 8 лет. Так я хотел избавиться от бесполезного шума в данных и нерелевантных репозиториев.

Следующей задачей было каким-то образом сравнить описания и содержание репозиториев для предоставления рекомендаций. Это работа для текстовых эмбеддингов.

Получение текстовых эмбеддингов
Получение текстовых эмбеддингов

Подробнее о векторных эмбеддингах вы можете прочитать в статье OpenAI. Вкратце, это метод преобразования текста или описания на гитхабе в точку (а точнее вектор) в каком-то векторном пространстве. Что интересно, эти вектора сохраняют некоторую информацию исходного текста. Например, если два текста имеют схожий смысл, их эмбеддинги будут близки друг к другу в векторном пространстве.

В целом, мне нужен был только один запрос к API, поэтому я решил использовать flask в качестве простого и легкого бэкенда. Что касается фронтенда, я подумал, что делать отдельный сайт для рекомендации репозиториев будет неудобно для пользователей (да и мне лень), поэтому я решил сделать его в виде расширения для Chrome и расширения для Firefox.

Вся эта история конечно же не коммерческая, так что весь код открыт для всех желающих: код бэкенд и расширения на гитхабе.

По всем вопросам 👉 github.com/ovyan

------------------

Ссылка на секретный телеграм канал

99
48 комментариев