Skip to content
 
 

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAG по отзывам покупателей о женской одежде и аксессуарах

Учебный RAG-проект на русскоязычных отзывах покупателей.

Проект показывает полный pipeline:

данные → документы → чанки → индекс → поиск → demo-ответ с источниками

Что делает проект

Система принимает вопрос пользователя, ищет релевантные фрагменты в отзывах покупателей и показывает demo-ответ на основе найденных источников.

В интерфейсе Streamlit отображаются:

  • вопрос пользователя;
  • найденные фрагменты top-k;
  • doc_id;
  • score;
  • текст найденного фрагмента;
  • итоговый demo-ответ;
  • отказ, если релевантного контекста нет.

Данные

В проекте используется открытый датасет RuReviews с русскоязычными отзывами о женской одежде и аксессуарах.

Источник: https://github.com/sismetanin/rureviews

В текущей версии в data/raw/datasets.json сохранено 1000 текстовых отзывов.

Подробнее данные описаны в файле:

doc/DATA.md

Быстрый старт

uv sync
uv run python scripts/build_index.py
uv run streamlit run app/main.py

После запуска приложение открывается в браузере.
В GitHub Codespaces нужно открыть forwarded port 8501 или другой порт, указанный Streamlit.

Demo-вопросы

Тип вопроса Вопрос Ожидание
Demo Что пишут о качестве? Ответ по отзывам про качество товара, внешний вид, пошив или общее впечатление
Demo Что пишут о доставке? Ответ по отзывам, где покупатели упоминают доставку, сроки или получение заказа
Demo Что пишут о ткани? Ответ по отзывам, где покупатели описывают ткань, материал или ощущения от товара
Negative Как оформить ипотеку? Отказ, потому что в данных нет информации об ипотеке

Результаты проверки

Сборка индекса

Индекс был собран командой:

uv run python scripts/build_index.py

Результат:

Документов: 1000, чанков: 1121, матрица: (1121, 4781)
Индекс сохранён -> /workspaces/rag-tutorial/data/index

Тесты

Тесты были запущены командой:

uv run pytest tests/ -v

Результат:

11 passed

Скриншоты проверки

Скриншоты расположены в папке:

doc/screenshots/

1. Сборка индекса

На скриншоте показана сборка индекса по 1000 документам.

Сборка индекса

2. Прохождение тестов

На скриншоте показан результат запуска тестов.

Тесты прошли

3. Demo-вопрос про качество

На скриншоте показан вопрос Что пишут о качестве?, найденные фрагменты, doc_id, score и demo-ответ.

Demo-вопрос про качество

4. Demo-вопрос про доставку

На скриншоте показан вопрос Что пишут о доставке?, найденные фрагменты, doc_id, score и demo-ответ.

Demo-вопрос про доставку

5. Demo-вопрос про ткань

На скриншоте показан вопрос Что пишут о ткани?, найденные фрагменты, doc_id, score и demo-ответ.

Demo-вопрос про ткань

6. Negative-вопрос

На скриншоте показан вопрос Как оформить ипотеку?. Система не находит релевантные фрагменты и отказывается отвечать по данным.

Negative-вопрос

Проверка через консоль

uv run pytest tests/ -v

Ограничения MVP

  • Поиск реализован через TF-IDF, поэтому качество зависит от совпадения слов.
  • Внешняя LLM не используется.
  • Ответ формируется только на основе найденных фрагментов.
  • Если релевантных фрагментов нет, система отказывается отвечать.

Возможные улучшения

  • Использовать embeddings вместо TF-IDF для более качественного семантического поиска.
  • Добавить LLM-генерацию ответа на основе найденных фрагментов.
  • Добавить фильтры по тональности отзывов.
  • Добавить отдельную оценку качества retrieval на заранее подготовленных вопросах.

About

Задание для семинара Big Data и искусственный интеллект

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages