Go-Ragger

Go-Ragger - это веб-приложение для организации базы знаний на основе RAG (Retrieval-Augmented Generation) AI.
🚀 Демо
Работающее демо доступно здесь
✨ Возможности
- 🔐 Регистрация и авторизация пользователей
- 📂 Загрузка, просмотр и скачивание документов (PDF, DOCX, XLSX, PPTX, JPG, PNG и др.)
- 🤖 ИИ-ассистент для ответов на вопросы по документам
🛠️ Технологический стек
📝 Как это работает
- Пользователь загружает документы в хранилище
- Документы разбиваются на чанки "умными методами" с помощью сервиса Chunkr.ai
- Чанки векторизуются с помощью LLM и сохраняются в Milvus
- При запросе к ИИ-ассистенту:
- Векторная БД ищет релевантные запросу чанки
- Найденные чанки подаются в LLM как контекст для формирования ответа
⚙️ Требования
Для работы приложения необходимо:
- Доступ по API к сервису chunkr.ai (можно развернуть локально - инструкции)
- Доступ по API к OpenAI-совместимому API (например, Ollama)
- Установленный DevSpace
- Работающий Kubernetes-кластер (можно использовать Kind)
🚀 Запуск проекта
Первоначальная настройка
При первом запуске Devspace запросит необходимые переменные:
- Имя Docker Hub аккаунта
- Виртуальный хост для Ingress
- Модель для эмбеддинга (рекомендуется дефолтная)
- Модель для чата (рекомендуется дефолтная)
- URL OpenAI-совместимого сервиса
- API-ключ OpenAI-совместимого сервиса
- URL API сервиса Chunkr
- API-ключ сервиса Chunkr
Devspace сохранит введенные ответы для последующих запусков.
Для сброса переменных:
devspace reset vars
Разработка
- Запустить devspace deploy:
devspace deploy --namespace ragger
- создаст заданный namespace если не существует
- соберет докер-образы
- развернет prod деплоймент в заданном кластере и неймспейсе вместе с дополнительными сервисами (postgresql и milvus)
- Запустить devspace dev:
devspace dev
- заменит prod образ на dev в кластере
- запустит терминал в контейнере приложения.
- В терминале DevSpace выполнить:
task reset-all # Сгенерировать код, резетнуть и засидить бд
task # Запустить приложение в dev-режиме с hot-reload
- Приложение будет доступно по адресу: http://localhost:8383
Полезные команды разработки (в Taskfile.yml):
task db:seed # создать сиды в БД
task sqlc:generate # сгенерировать SQLC код
task reset-all # сбросить и засидить БД, перегенерировать код
Деплоймент
- Запустить devspace:
devspace reset vars # сбросить переменные devspace на всякий случай
devspace deploy --namespace ragger # запустить prod деплоймент в namespace ragger
- соберет prod-образ приложения и образ миграций
- развернет в заданном кластере и неймспейсе вместе с дополнительными сервисам (postgresql и milvus)
- запустит init-конейнер для применения миграций
- запустит приложение
- приложение будет доступно по адресу виртуального хоста
📄 Лицензия
MIT License - см. LICENSE