Skip to content

Batterlake/media-digital-rag

Repository files navigation

🔍 Мультимодальный поиск по базе документов

fp

🎯 Постановка задачи

📊 Рекламные агентства ежедневно работают с огромными массивами данных:

  • 📑 Маркетинговые исследования
  • 📊 Аналитические отчеты
  • 📈 Презентации
  • 🎨 Креативные материалы

❌ Ключевые проблемы:

  • 🏗️ Отсутствие единой системы управления знаниями
  • ⏳ Медленный поиск нужной информации
  • 📉 Снижение эффективности работы
  • 🔍 Сложность поиска в визуальных материалах
  • 📚 Постоянно растущий объем данных

💼 Требования к решению:

  • 🤖 Чат-бот с веб-интерфейсом
  • 🔎 Быстрый поиск по всем типам материалов
  • 🔗 Предоставление ссылок на источники
  • ⬆️ Возможность пополнения базы знаний
  • 🎯 Точная локализация релевантной информации

🎁 Результат внедрения:

  • ⚡ Ускорение принятия решений
  • 📈 Повышение эффективности работы
  • 💪 Усиление конкурентных преимуществ
  • 🚀 Более быстрая разработка стратегий

💡 Решение нашей команды

Мы разработали интеллектуальную систему поиска, которая:

  • 🤖 Понимает естественно-языковые запросы
  • 🖼️ Работает одновременно с текстом и изображениями
  • 🎯 Точно определяет релевантные фрагменты документов
  • 🔍 Визуализирует процесс принятия решений через карты внимания
  • 📚 Легко масштабируется на новые документы

⚡ Ключевые особенности

  • Мультимодальный поиск: единый поиск по тексту и изображениям
  • Работа без предварительного OCR
  • Точная локализация информации с визуализацией
  • Естественно-языковой интерфейс
  • Открытый исходный код

🛠️ Технологический стек

  • ColPali: Умный анализ документов с построением множественных векторных представлений
  • Qdrant: Высокопроизводительный поиск по мультивекторным данным
  • Qwen2vl: Мультимодальная модель для понимания контекста

📂 Структура проекта

.
├── app/                  # Main application code
│   ├── main.py          # FastAPI application entry point
│   ├── routers/         # API endpoints
│   ├── retriever/       # ColPali service
│   ├── templates/       # HTML templates
│   └── static/          # Static assets
├── pybooks/             # Jupyter notebooks for development
├── tools/               # Utility scripts
├── docker-compose.yaml  # Docker services configuration
├── Dockerfile          # Web-service build configuration
├── pyproject.toml      # Python dependencies managed by poetry
└── vllm.env           # Environment variables for docker-compose

📌 Основные папки:

  • app/: Основной код веб-интерфейса с FastAPI
  • pybooks/: Ноутбуки для разработки и демонстрации
  • tools/: Вспомогательные скрипты
  • qdrant_data/: Хранилище векторной базы данных
  • uploads/: Хранилище исходных pdf-файлов, загруженных в систему
  • previews/: Хранилище изображений, полученных из исходных pdf-файлов

Подробная документация по каждому компоненту доступна в соответствующих директориях.

🚀 Установка и запуск

Предварительные требования

  • 🐳 Docker и Docker Compose
  • 🖥️ NVIDIA GPU с поддержкой CUDA
  • 📦 Минимум 32GB GPU памяти для минимальной конфигурации и 80GB GPU для продвинутой
  • 💾 Достаточно места на диске для кэша моделей

🔧 Установка и запуск

  1. Подготовка окружения
# Клонируем репозиторий
git clone [repository-url]
cd [repository-name]

# Создаем файл с переменными окружения
touch vllm.env
  1. Настройка vllm.env
# Добавьте необходимые переменные окружения для VLLM
HUGGING_FACE_HUB_TOKEN= #для загрузки моделей с huggingface
VLLM_API_KEY= #для ограничения доступа к vllm api
  1. Сборка и запуск сервисов
docker-compose up --build -d

🔍 Проверка работоспособности

После запуска будут доступны следующие сервисы:

  • 🌐 Веб-интерфейс: http://localhost:6340
  • 📊 Интерфес Qdrant: http://localhost:6333/dashboard
  • 🤖 VLLM API, совместимый с openai: http://localhost:6336/v1
  • 🔍 ColPali api: http://localhost:6339

📝 Важные примечания

  • Запуск данной сборки предусматривается на видеокарте NVIDIA Tesla A100 с 80Гб видеопамяти. Это обеспечивает лучший баланс используемых ресурсов и качества ответов
  • Запуск сервиса возможен на двух видеокартах с 16ГБ видеопамяти (3080Ti, 4070Ti и мощнее). При этом рекомендуется использовать менее параметризованную версию Qwen2VL-7B-Instruct
  • Сервис использует GPU с индексом 0 (можно изменить в docker-compose.yaml)
  • Для Qdrant используется персистентное хранилище в ./qdrant_data
  • Кэш Hugging Face моделей сохраняется между запусками
  • VLLM настроен на использование 75% доступной GPU памяти

🔄 Перезапуск сервисов

docker-compose down
docker-compose up -d

📊 Мониторинг

# Просмотр логов всех сервисов
docker-compose logs -f

# Просмотр логов конкретного сервиса
docker-compose logs -f [service-name]

🌟 Преимущества нашего решения

  • 🏢 Возможность развертывания на собственной инфраструктуре
  • 🔐 Полный контроль над данными
  • 📈 Возможность дообучения на корпоративных материалах
  • 🔄 Простая интеграция с существующими системами

🔥 Примеры работы

Развернуть список примеров
  • Запрос: "Как за 10 лет изменилось количество телепрограмм, привлекающих более 4-х млн. зрителей в Великобритании?" 1

  • Визуализация внимания модели при ответе на предыдущий вопрос 1

  • Запрос: "AiData.me обновление и пополнение базы данных" 2

  • Визуализация внимания модели при ответе на предыдущий вопрос 2

  • Запрос: "Как развивался размер рынка инфлюенс-маркетинга в мире с 2016 по 2024 год?" 3

  • Визуализация внимания модели при ответе на предыдущий вопрос 3

  • Запрос: "Что написано в ячейках таблицы?" 4

  • Визуализация внимания модели при ответе на предыдущий вопрос 4

  • Запрос: "Количество пользователей социалных сетей в мире?" 5

  • Визуализация внимания модели при ответе на предыдущий вопрос 5

🔮 Дальнейшее развитие

  1. Расширение модальностей

    • Поддержка аудио и видео контента
    • Улучшение работы с таблицами и графиками
  2. Улучшение пользовательского опыта

    • Настраиваемые фильтры поиска
    • История поисковых запросов
  3. Расширение функционала

    • Автоматическое составление краткого содержания документов
    • Генерация презентаций на основе найденной информации
    • Система рекомендаций связанных документов
  4. Технические улучшения

    • Оптимизация скорости индексации
    • Улучшение точности локализации информации
    • Оптимизация объема используемых ресурсов
    • Дообучение моделей под специальные сценарии
  5. Интеграционные возможности

    • API для интеграции с популярными системами документооборота
    • Плагины для офисных приложений
    • Мобильное приложение

👥 Команда "Экспрессо-тоник"

👨‍💻 batterlake | Team Lead

  • 🎯 Руководство проектом
  • 🤖 Интеграция языковых моделей
  • 🔍 Разработка векторной базы данных
  • 🚀 Развертывание сервисов

👨‍💻 yozice | Full Stack Developer

  • ⚡ Разработка бэкенда
  • 🎨 Создание веб-интерфейса
  • 🔄 Клиент-серверная архитектура
  • 🌐 API интеграция

👨‍💻 sleeplessuser | ML Engineer

  • 🧠 Моделирование
  • 📊 Развертывание ColPali
  • 🎯 Оптимизация моделей
  • 📈 Подготовка финального решения

📝 License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •