955f51842961f23683c3c25b37211b2351d67cb3
RAG Service
Сервис векторного скоринга текстов с использованием ruBERT.
Возможности
- Скоринг — оценка текстов на основе векторного сходства с примерами
- Примеры — добавление положительных и отрицательных примеров для обучения
- Персистентность — автоматическое сохранение векторов на диск
- API авторизация — защита через API ключ
Быстрый старт
# Клонировать репозиторий
git clone <repository-url>
cd rag-service
# Создать .env файл
cp env.example .env
# Сгенерировать API ключ
python -c "import secrets; print(secrets.token_urlsafe(32))"
# Добавить ключ в .env (RAG_API_KEY=...)
# Запустить
docker-compose up -d --build
API
Endpoints
| Метод | URL | Описание | Авторизация |
|---|---|---|---|
| GET | /api/v1/health |
Проверка здоровья | Нет |
| POST | /api/v1/score |
Расчет скора текста | Да |
| POST | /api/v1/examples/positive |
Добавить положительный пример | Да |
| POST | /api/v1/examples/negative |
Добавить отрицательный пример | Да |
| GET | /api/v1/stats |
Статистика сервиса | Да |
| POST | /api/v1/warmup |
Прогрев модели | Да |
| POST | /api/v1/save |
Сохранить векторы | Да |
Авторизация
Передавать API ключ в заголовке X-API-Key:
curl -H "X-API-Key: YOUR_API_KEY" http://localhost/api/v1/stats
Примеры запросов
# Health check
curl http://localhost/api/v1/health
# Расчет скора
curl -X POST http://localhost/api/v1/score \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Текст для оценки"}'
# Добавить положительный пример
curl -X POST http://localhost/api/v1/examples/positive \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Хороший пост"}'
Конфигурация
Переменные окружения (см. env.example):
| Переменная | Описание | По умолчанию |
|---|---|---|
RAG_API_KEY |
API ключ для авторизации | — |
RAG_MODEL |
Модель HuggingFace | DeepPavlov/rubert-base-cased |
RAG_MAX_EXAMPLES |
Макс. количество примеров | 10000 |
RAG_AUTOSAVE_INTERVAL |
Интервал автосохранения (сек) | 600 |
Swagger UI
Документация API доступна по адресу /docs.
Технологии
- Python 3.11
- FastAPI
- Transformers (ruBERT)
- NumPy
- Docker
Description
Languages
Python
98.7%
Dockerfile
1.3%