Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Adaptive Context Compression RAG

Система интеллектуального поиска по учебной литературе с адаптивным сжатием контекста.

Этот проект разработан в рамках дипломной работы и представляет собой современный 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 с поддержкой русского языка, работающей локально (даже без интернета).

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

1. Требования

  • Python 3.11+
  • Poetry (для управления зависимостями)
  • macOS (для работы OCR через Apple Vision)

2. Установка

# Клонирование репозитория
git clone https://github.com/ars667/adaptive-context-compression.git
cd adaptive-context-compression

# Установка зависимостей
poetry install

3. Настройка

Создайте файл .env в корне проекта и добавьте свой ключ Groq:

GROQ_API_KEY=gsk_your_key_here

4. Запуск

PYTHONPATH=. 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.

About

📚 Adaptive RAG pipeline for academic texts: LLMLingua-2 context compression, OCR fallback via Apple Vision, Llama 3.1 on Groq

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages