В данном репозитории находится пример реализации вопросно-ответной системы для сотрудников пунктов выдачи заказов крупного маркетплейса. Система использует RAG-подход и основана на следующих технологиях:
- Фреймворк: Haystack;
- Эмбеддер: модель multilingual-e5-large-instruct, дотренированная на парах похожих вопросов из датасета Wildberries, т.е. таких, на которые были даны одинаковые ответы;
- LLM: Дообученная на парах "Вопрос-ответ" из датасета Wildberries Saiga3, точнее её Llama.cpp-версия;
- FastAPI+PostgreSQL - для функционирования микросервиса;
- PGVector - расширение для PostgreSQL для хранения в базе эмбеддингов документов (только для локальной версии).
Система реализована в двух режимах: в виде Jupyter-ноутбука для Google Colab и в виде микросервиса на FastAPI с минималистичным интерфейсом. Второй вариант подходит для более продолжительной и надёжной работы системы и не использует видеокарту для инференса LLM.
- Откройте тетрадку с реализованной системой в Google Colab;
- Убедитесь, что в качестве среды выполнения установлена среда с GPU;
- Поместите Excel-файлы с оригинальными данными в сессионное хранилище и выполните первые две ячейки; это создаст каталог
data
и поместит туда ваши данные; - Последовательно выполните все остальные ячейки, дождитесь, пока установятся зависимости и подготовятся данные, в т.ч. создадутся эмбеддинги для документов.
- Во фрейме в последней ячейке отобразиться интерфейс Gradio. В появившемся поле можно задавать вопросы и получать ответы;
- Пока запущена среда и ячейка с Gradio, вы можете поделиться публичной ссылкой для демонстрации модели всем желающим; ссылка будет расположена в информации в верху фрейма.
Внимание! В этом режиме ответы с помощью LLM генерируются существенно медленно, поскольку не используется видеокарта. Кроме того, если в системе нет видеокарты, вычисление эмбеддингов для документов может занимать до 40 минут. Для работы системы необходим дистрибутив Linux, можно WSL.
- Склонируйте репозиторий и перейдите в каталог проекта:
git clone https://github.com/Futyn-Maker/wb_project.git
cd wb_project
- Создайте каталог
data
и поместите туда оригинальные данные в виде XLSX-таблиц, не меняя их названия.
mkdir data
- Установите переменные среды:
cp .env.example .env
nano .env
Здесь укажите параметры для подключения к вашей PostgreSQL-базе: имя пользователя, пароль, название базы.
- Если у вас отсутствует модуль venv, установите его:
sudo apt install python3-venv
. - Запустите скрипт подготовки среды и данных, дождитесь, пока он завершит работу - это может занять продолжительное время:
bash prepare.sh
Этот скрипт:
- Создаст и активирует новую виртуальную среду;
- Установит зависимости;
- Установит PostgreSQL, если ранее сервис отсутствовал;
- Создаст указанного в
.env
пользователя и базу данных; - Установит PGVector;
- Запустит серию скриптов для подготовки данных и создания эмбеддингов документов;
- Скачает дообученную языковую модель
- Запустите сервис:
bash run.sh
- Ищите интерфейс на http://127.0.0.1:8000/static/index.html;
- Если необходимо обратиться напрямую к API, делается это следующим образом:
http://127.0.0.1:8000/get_answer/?question=Привет!