Система интеллектуального поиска по учебной литературе с адаптивным сжатием контекста.
Этот проект разработан в рамках дипломной работы и представляет собой современный RAG-пайплайн (Retrieval-Augmented Generation), оптимизированный для работы с большими объемами текста, формулами и отсканированными документами.
- 🗜️ умное сжатие контекста: Использование LLMLingua-2 для интеллектуального сокращения длинных фрагментов текста. Система сохраняет 100% смысла, уменьшая при этом количество токенов в 2-4 раза.
- 🛡️ Защита формул и определений: Кастомная логика защиты гарантирует, что математические выражения, физические законы и ключевые определения не будут повреждены при сжатии.
- 🔍 OCR-Fallback (Apple Vision): Автоматическое распознавание текста для "картиночных" PDF. Если в файле нет текстового слоя, система сама запустит OCR через нативный Apple Vision Framework (библиотека
ocrmac). - ⚡ Мгновенные ответы: Интеграция с Groq API позволяет получать ответы от модели Llama-3.1-8b практически мгновенно (в среднем за 1-2 секунды).
- 📈 Три режима работы:
- Compressed: Максимальная экономия токенов без потери качества.
- Full RAG: Классический поиск без сжатия.
- Baseline: Прямой запрос к LLM (для сравнения результатов).
- 🌐 Оффлайн-модель эмбеддингов: Использование
multilingual-e5-smallс поддержкой русского языка, работающей локально (даже без интернета).
- Python 3.11+
- Poetry (для управления зависимостями)
- macOS (для работы OCR через Apple Vision)
# Клонирование репозитория
git clone https://github.com/ars667/adaptive-context-compression.git
cd adaptive-context-compression
# Установка зависимостей
poetry installСоздайте файл .env в корне проекта и добавьте свой ключ Groq:
GROQ_API_KEY=gsk_your_key_herePYTHONPATH=. poetry run streamlit run app.py- Frontend: Streamlit (интерактивный чат + загрузка файлов).
- Retrieval: FAISS (векторная база данных) + E5 Embeddings.
- Compression: LLMLingua-2 (фильтрация токенов по важности).
- LLM: Llama-3.1 via Groq.
- Document Processing: PyMuPDF (текстовые PDF) + ocrmac (сканы).
├── app.py # Интерфейс Streamlit
├── src/
│ ├── pipeline.py # Главный оркестратор системы
│ ├── retrieval/ # Векторный поиск и FAISS
│ ├── compression/ # Логика сжатия контекста
│ ├── document_proc/ # Загрузка и обработка PDF/OCR
│ └── llm/ # Клиент для работы с Groq API
├── data/
│ ├── raw/ # Место для хранения учебников
│ └── indexes/ # Векторные индексы
└── README.md # Этот файлРазработано для дипломного проекта. 2026.