Полнофункциональная система RAG (Retrieval-Augmented Generation) с веб-интерфейсом для поиска и генерации ответов на основе документов.
- Docker и Docker Compose
- OpenAI API ключ
- Клонируйте репозиторий:
git clone <repository-url>
cd rag_oozo- Создайте файл переменных окружения:
cp env.example .env- Настройте OpenAI API ключ в
.env:
OPENAI_API_KEY=your_openai_api_key_here- Добавьте документы в папку
docs/:
# Поместите .docx файлы в папку docs/
cp your_documents/*.docx docs/- Запустите систему:
docker-compose up --build- Откройте приложение:
- Фронтенд: http://localhost:3000
- API документация: http://localhost:8000/docs
- Состояние системы: http://localhost:8000/health
Система состоит из двух основных компонентов:
- FastAPI - веб-фреймворк для API
- LangChain - фреймворк для RAG пайплайнов
- FAISS - векторная база данных для поиска
- HuggingFace Embeddings - модель эмбеддингов multilingual-e5-large
- OpenAI - языковая модель для генерации ответов
- React - пользовательский интерфейс
- Современный UI - красивый и отзывчивый дизайн
- Чат интерфейс - интуитивное взаимодействие с системой
rag_oozo/
├── backend/ # FastAPI бэкенд
│ ├── app/
│ │ ├── api/ # API роутеры
│ │ ├── config.py # Конфигурация
│ │ ├── schemas.py # Pydantic модели
│ │ ├── rag_system.py # Основная RAG система
│ │ └── document_processor.py # Обработка документов
│ ├── scripts/ # CLI скрипты
│ ├── data/ # FAISS индекс
│ ├── main.py # Точка входа
│ └── requirements.txt # Python зависимости
├── frontend/ # React фронтенд
│ ├── src/
│ │ ├── components/ # React компоненты
│ │ ├── services/ # API сервисы
│ │ └── config/ # Конфигурация
│ └── package.json # Node.js зависимости
├── docs/ # Документы для индексации (.docx)
├── docker-compose.yml # Docker конфигурация
└── README.md # Документация
| Переменная | Описание | По умолчанию |
|---|---|---|
OPENAI_API_KEY |
API ключ OpenAI | - |
EMBEDDING_MODEL_NAME |
Модель эмбеддингов | intfloat/multilingual-e5-large |
CHUNK_SIZE |
Размер чанка | 1000 |
CHUNK_OVERLAP |
Перекрытие чанков | 200 |
OPENAI_MODEL_NAME |
Модель OpenAI | gpt-3.5-turbo |
MAX_TOKENS |
Максимум токенов | 4000 |
TEMPERATURE |
Температура генерации | 0.7 |
POST /api/query- Обработка запроса пользователяGET /health- Проверка состояния системыGET /api/stats- Статистика коллекции документовGET /api/info- Информация о системеPOST /api/similarity- Поиск похожих документовPOST /api/ingest- Переиндексация документов
# Отправка запроса
curl -X POST "http://localhost:8000/api/query" \
-H "Content-Type: application/json" \
-d '{"question": "Что такое RAG?", "return_sources": true}'
# Проверка состояния
curl "http://localhost:8000/health"
# Получение статистики
curl "http://localhost:8000/api/stats"Система автоматически индексирует документы при первом запуске.
# Через API
curl -X POST "http://localhost:8000/api/ingest"
# Через CLI скрипт
docker exec rag-backend python scripts/ingest_documents.py --verbose- .docx - Microsoft Word документы
- Откройте http://localhost:3000
- Введите ваш вопрос в поле чата
- Получите ответ с источниками
import requests
response = requests.post("http://localhost:8000/api/query", json={
"question": "Ваш вопрос здесь",
"return_sources": True
})
result = response.json()
print(f"Ответ: {result['answer']}")
print(f"Источники: {len(result['sources'])}")cd backend
python -m venv venv
source venv/bin/activate # Linux/Mac
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm start- Новые эндпоинты - создайте роутер в
backend/app/api/ - Новые форматы документов - расширьте
document_processor.py - Новые модели - обновите конфигурацию в
config.py
# Просмотр логов бэкенда
docker logs rag-backend
# Просмотр логов фронтенда
docker logs rag-frontend
# Просмотр всех логов
docker-compose logs -f# Проверка здоровья системы
curl http://localhost:8000/health
# Статистика системы
curl http://localhost:8000/api/stats- Проверьте правильность API ключа
- Убедитесь в наличии средств на счете
- Проверьте лимиты API
- Убедитесь, что документы в формате .docx
- Проверьте права доступа к папке docs/
- Проверьте логи бэкенда
- Уменьшите размер чанков
- Используйте более легкую модель эмбеддингов
- Ограничьте количество документов
- Используйте SSD для хранения индекса
- Увеличьте RAM для больших коллекций
- Настройте размер чанков под ваши документы
- Используйте Redis для кэширования
- Разверните несколько экземпляров бэкенда
- Используйте балансировщик нагрузки
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Создайте Pull Request
Этот проект распространяется под лицензией MIT.
Если у вас возникли проблемы:
- Проверьте раздел "Устранение неполадок"
- Просмотрите логи системы
- Создайте Issue в репозитории
RAG Oozo System - мощная система для работы с документами и генерации ответов на основе RAG технологии.