Система агентного поиска и генерации ответов (RAG) с поддержкой векторных баз данных и индексации документов.
Система состоит из 5 основных сервисов:
- Qdrant Domains - векторная база данных для хранения эмбеддингов
- MCP Server Qdrant - сервер для взаимодействия с Qdrant через MCP протокол
- Indexing API - API для индексации и загрузки документов
- Agentic RAG - основной сервис для агентного поиска и генерации ответов
- Admin Panel - веб-интерфейс для управления системой
- Docker и Docker Compose
- Python 3.11+ (для локальной разработки)
- Embedding модель (например, Text Embedding Inference)
git clone https://github.com/Ivanlasich/agentic_rag.git
cd agentic_ragmkdir -p uploads domains_summaryСоздайте файл .env в корне проекта (опционально):
# Настройки для embedding модели
EMBEDDING_MODEL_URL=http://172.17.0.1:8089
# Настройки OpenAI API (если используете локальный сервер)
OPENAI_BASE_URL=http://172.17.0.1:19000/v1
OPENAI_API_KEY=your-api-key
# Настройки Qdrant
QDRANT_URL=http://qdrant-domains:6333docker-compose -f docker-compose-domains.yml up --buildПосле запуска сервисы будут доступны по следующим адресам:
- Qdrant Dashboard: http://localhost:6335
- Indexing API: http://localhost:8009
- Agentic RAG API: http://localhost:8663
- MCP Server: http://localhost:8007
- Admin Panel: http://localhost:3001
| Сервис | Внешний порт | Внутренний порт | Описание |
|---|---|---|---|
| Qdrant | 6335 | 6333 | HTTP API |
| Qdrant | 6336 | 6334 | gRPC API |
| MCP Server | 8007 | 8000 | MCP протокол |
| Indexing API | 8009 | 8009 | REST API |
| Agentic RAG | 8663 | 8663 | REST API |
| Admin Panel | 3001 | 80 | Web интерфейс |
- Стандартные настройки Qdrant
QDRANT_URL- URL для подключения к QdrantCOLLECTION_NAME- имя коллекции (пустое значение позволяет выбирать коллекции)EMBEDDING_PROVIDER- провайдер эмбеддингов (tei/fastembed)EMBEDDING_MODEL- URL модели эмбеддингов
QDRANT_URL- URL для подключения к QdrantEMBEDDING_MODEL_URL- URL модели эмбеддинговUPLOAD_DIR- директория для загруженных файловDOMAINS_SUMMARY_DIR- директория для сводок доменовCHUNK_SIZE- размер чанков для обработки
UPLOADS_PATH- путь к загруженным файламSUMMARY_PATH- путь к сводкам доменовOPENAI_BASE_URL- базовый URL для OpenAI APIOPENAI_API_KEY- API ключ для OpenAI
- Веб-интерфейс на React с Nginx
- Аутентификация пользователей
- Управление доменами и индексацией
- Мониторинг системы
Загрузите документы через Indexing API:
curl -X POST "http://localhost:8009/upload" \
-H "Content-Type: multipart/form-data" \
-F "file=@your-document.pdf"Используйте Agentic RAG API для поиска и генерации ответов:
curl -X POST "http://localhost:8663/search" \
-H "Content-Type: application/json" \
-d '{"query": "ваш запрос"}'MCP сервер предоставляет интерфейс для работы с Qdrant через MCP протокол. Подключитесь к http://localhost:8007.
Откройте Admin Panel по адресу http://localhost:3001 для:
- Управления пользователями и аутентификацией
- Мониторинга индексации документов
- Управления доменами и коллекциями
- Просмотра статистики системы
Для локальной разработки установите зависимости:
# Indexing API
cd indexing_api
pip install -r requirements.txt
# Agentic RAG
cd ../agentic_rag
pip install -r requirements.txt
# MCP Server
cd ../mcp-server-qdrant
pip install -e .agentic_rag/
├── agentic_rag/ # Основной сервис RAG
│ ├── Dockerfile
│ ├── qdrant_msp_use_agent.py
│ └── test_streaming_api.py
├── indexing_api/ # API для индексации документов
│ ├── Dockerfile
│ ├── indexing_api.py
│ ├── auth_api.py
│ ├── auth_jwt.py
│ ├── auth_models.py
│ └── file_parser.py
├── mcp-server-qdrant/ # MCP сервер для Qdrant
│ ├── Dockerfile
│ ├── src/
│ └── pyproject.toml
├── admin-panel/ # Веб-интерфейс администрирования
│ ├── Dockerfile
│ ├── package.json
│ ├── src/
│ │ ├── components/
│ │ └── App.js
│ └── nginx.conf
├── docker-compose-domains.yml
├── requirements.txt
└── README.md
Просмотр логов всех сервисов:
docker-compose -f docker-compose-domains.yml logs -fПросмотр логов конкретного сервиса:
docker-compose -f docker-compose-domains.yml logs -f qdrant-domainsdocker-compose -f docker-compose-domains.yml downДля полной очистки (включая volumes):
docker-compose -f docker-compose-domains.yml down -vЕсли порты заняты, измените их в docker-compose-domains.yml:
ports:
- "6336:6333" # Измените внешний портУбедитесь, что embedding модель запущена и доступна по указанному URL:
curl http://172.17.0.1:8089/healthСоздайте необходимые директории с правильными правами:
sudo mkdir -p uploads domains_summary
sudo chown -R $USER:$USER uploads domains_summaryПроект распространяется под лицензией MIT.
При возникновении проблем создайте issue в репозитории GitHub.