Skip to content

Alex777Russia/mlsd-code-rag

Repository files navigation

Code-RAG

License: MIT Python Version

Code-RAG — это open-source фреймворк для создания Q&A систем над кодовыми базами. Загрузите ссылку на GitHub репозиторий, и сервис позволит вам задавать вопросы о коде, его структуре и даже генерировать новый код на основе контекста.

✨ Основные возможности (Features)

  • Импорт репозиториев: Укажите URL любого публичного GitHub репозитория для начала анализа.
  • Умный парсинг и чанкинг: Автоматическое распознавание языков программирования (.py, .cpp, .js, .java, .go, .md и др.) и разделение файлов на осмысленные чанки (функции, классы) с сохранением метаданных.
  • Векторизация: Создание векторных представлений (embeddings) для кода и их хранение в векторной базе данных.
  • Гибкий Q&A:
    • Вопросы на естественном языке: Получайте объяснения по архитектуре, логике работы компонентов и связям между файлами.
    • Генерация кода: Просите систему написать юнит-тесты, дополнить существующую функцию или исправить баг.
  • Продвинутый RAG-пайплайн: Включает в себя модули, такие как Reranker, RAG_Fusion и Query_Rewriter для повышения релевантности ответов.
  • Поддержка любых LLM: Интеграция с моделями через OpenAI-совместимый API.

🛠 Технологический стек (предполагаемый)

  • Бэкенд: Python
  • Обработка данных и RAG: LangChain / LangGraph / Tree-sitter
  • Векторная БД: QDrant
  • LLM: Любая модель с OpenAI API (Gemini, Qwen3, etc.)
  • Веб-интерфейс (UI): Gradio

На время тестирования решение доступно по ссылке: http://138.124.66.50:8501

🚀 Как начать (Getting Started)

Вы можете использовать готовый Docker-Compose файл, либо установить все зависимости вручную.

Прежде всего необходимо склонировать репозиторий:

git clone https://github.com/Alex777Russia/mlsd-code-rag.git

1. Docker (рекомендуемый способ)

Положить в файл docker/.env свой API ключ Openrouter/Jina (в текущей версии используется Openrouter), пример можно посмотреть - здесь.

Установка зависимостей:

bash docker/build.sh

Запуск приложения:

bash docker/run.sh

В конце нужно открыть приложение в браузере по ссылке:

http://0.0.0.0:8501

Чтобы остановить приложение:

bash docker/stop.sh

2. Вручную

Положить в файл .env свой API ключ Openrouter/Jina (в текущей версии используется Openrouter), пример можно посмотреть - здесь.

Установка uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Установка зависимостей:

uv sync

Затем необходимо загрузить образ базы данных Qdrant:

docker pull qdrant/qdrant

Затем нужно в отдельном терменале запустить сервер с Qdrant:

docker run -p 6333:6333 -p 6334:6334 -v qdrant_storage:/qdrant/storage qdrant/qdrant

И затем запустить приложение:

uv run python app.py

В конце нужно открыть приложение в браузере по ссылке:

http://0.0.0.0:8501

Чтобы остановить приложение нужно остановить нажать CTLR + C и остановить контейнер с Qdrant:

docker stop <qdrant_container_id> (id можно посмотреть с помощью команды docker ps)

🗺️ Дорожная карта (Roadmap)

  • [ 01/2026 ] MVP 1.0: Базовый пайплайн: загрузка, парсинг, векторизация и Q&A для одного репозитория.
  • [ TODO ] Реализация модуля Reranker.
  • [ TODO ] Реализация RAG_Fusion для более точного поиска.
  • [ TODO ] Реализация Query_Rewriter для поддержки диалогового режима.
  • [ TODO ] Разработка простого UI на Streamlit/Gradio.
  • [ TODO] Поддержка инкрементального обновления индекса.

🤝 Участие в проекте (Contributing)

Мы приветствуем любой вклад! Если вы хотите улучшить проект, пожалуйста, создайте Issue для обсуждения или Pull Request с вашими изменениями.

📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.

About

Репозиторий учебного проекта в рамках курса «ML System Design» ИТМО AITH

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors