Skip to content

Быстрый поиск релевантных запросу статей на датасете 52К

License

Notifications You must be signed in to change notification settings

JuliaBars/fast_search_relevant_articles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cистема обратного поиска (reverse text search) для кратких описаний статей с ресурса Gazeta.ru


Система позволяет искать самые похожие на введённый пользователем запрос статьи.

Посмотреть как работает проект можно по ссылке


Особенности проекта:

  1. Использован датасет со статьями Gazeta.ru link (52K статей)

  2. Для получения эмбедингов рассмотрены 3 модели:

  • paraphrase-multilingual-mpnet-base-v2 (по ТЗ)
  • mstsb-paraphrase-multilingual-mpnet-base-v2
  • LaBSE (Language-agnostic BERT Sentence Embedding)
  1. Для быстрого поиска по эмбедингам использована библиотека FAISS, рассмотрена работа двух индексов, их можно попробовать через GUI:
  • IndexFlatIP (косинусное расстояние по ТЗ)
  • IndexFlatL2 (евклидово расстояние)
  1. Рассмотрена возможность использование большой языковой модели по API для переранжирования текстов по релевантности после поиска по векторным представлениям:
  • Использования внешнего API - дорого
  • Локально развернуть - невозможно из-за недостатка мощностей на бесплатном сервере Streamlit
  1. GUI разработан на фреймворке Streamlit.

  2. Добавлена возможность выбирать количество статей в выдаче.

  3. Выдача по двум индексам сохранена в файл result.txt

Пример работы проекта: image

Локально запустить проект можно:

  • используя Docker
docker build -t articles_search .
docker run --name articles  --rm -it -p 8501:8501 articles_search
http://localhost:8501/
  • используя виртуальное окружение
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
streamlit run app.py
http://localhost:8501/

Проблемы возникшие при разработке:

  • Очень краткая документации FAISS, много информации получено из исходного кода, wiki библиотеки и SO
  • Довольно медленная работа модели для эмбедингов без параллельности, проблему удалось решить, сохранив файл pkl с рассчитанными эмбедингами
  • На гит нельзя отправить файлы больше 100МB, пришлось разрезать файл c эмбедингами на части, а файл с исходных датасетом добавила в описание ссылкой
  • Проект задеплоен на бесплатных серверах Streamlit (к сожалению, иногда они отключаются)

About

Быстрый поиск релевантных запросу статей на датасете 52К

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published