Адаптивная поисково-вычислительная система на базе LangGraph. Система автоматически выбирает между поиском по локальной базе знаний (PDF, EPUB, TXT, DOCX), выполнением вычислений через локальный Python REPL / Wolfram Alpha и механизмами самоисправления ответов (Self-RAG).
Проект построен по модульному принципу чистой архитектуры. Каждый компонент изолирован и может тестироваться независимо:
src/
├── evaluation/ # Модуль оценки системы
├── generation/ # Модуль генерации ответов и контроля качества (Self-RAG)
├── graph/ # Модуль оркестрации LangGraph
├── ingestion/ # Модуль индексации (загрузка и чанкинг)
├── memory/ # Модуль управления контекстом и историей сессий
├── query/ # Модуль обработки и трансформации запросов
├── retrieval/ # Модуль поиска, фильтрации и реранкинга документов
└── router/ # Модуль маршрутизации и внешних инструментов
Сырые данные (PDF, DOCX, HTML, arXiv, Web)
↓
Парсинг (Nougat / Grobid / Unstructured / ArXiv / WebScraper)
↓
Нормализация (MathNormalizer: защита LaTeX, очистка шума)
↓
Дедупликация (MinHash / SimHash)
↓
Чанкинг (Fixed / Recursive / Semantic / Adaptive / Parent-Child)
↓
Обогащение (Keywords → Topic → Difficulty → TheoremLinker)
↓
Векторизация (OpenAI / Local / FineTuned / Sparse)
↓
Индексация (Flat / Hierarchical / Graph / Hybrid) → Valkey
Пользовательский запрос
↓
Препроцессинг (Expander / Transformer / Router / IntentClassifier)
↓
Поиск (Vector / FullText / Hybrid / Hierarchical / GraphTraversal) → Valkey
↓
Постпроцессинг (Reranker / MetadataFilter / ContextCompressor / Deduplicator)
↓
Контекст + Запрос → LLM
↓
Генерация (Self-RAG / Vanilla / CoT)
↓
Ответ пользователю
↓
Оценка (RetrievalMetrics / MathAccuracy / LLMJudge / Latency)
# запуск бд
docker run -d --name valkey -p 6379:6379 valkey/valkey:latest
# индексация
uv run python -m scripts.run_ingestion --source data/raw/sample_math.txt --output-index math_rag_v1
# переключение чанкера без изменения кода
uv run python -m scripts.run_ingestion --source data/raw/sample_math.txt ingestion/chunker=fixed
# поиск
uv run python -m scripts.run_search "теорема Лагранжа"
# эксперимент
uv run python -m scripts.run_experiment --matrix config/experiments/chunking_matrix.yaml
uv run python -m scripts.run_evaluation --benchmark data/benchmarks/math_qa.json- в папке
notebooks/находятся Jupyter-ноутбуки для подбора оптимального размера чанков (experiment_chunking.ipynb) и валидации качества реранкера (experiment_rerank.ipynb).