Reaper MCP Server
by dschuler36
- docs
# Анализ баз данных для MCP сервера
## Требования к хранилищу данных
1. Быстрый поиск по контенту промптов и ресурсов
2. Эффективное хранение и индексация больших объемов текстовых данных
3. Поддержка векторного поиска для семантического сходства
4. Масштабируемость и производительность
5. Кэширование часто используемых данных
6. Поддержка агрегаций и аналитики
## Сравнительный анализ
### MongoDB
#### Преимущества
- Гибкая схема данных
- Хорошая производительность для операций чтения/записи
- Простота использования
- Поддержка шардинга
#### Недостатки
- Ограниченные возможности полнотекстового поиска
- Нет встроенной поддержки векторного поиска
- Более сложное масштабирование для поисковых операций
### Redis
#### Преимущества
- Экстремально быстрые операции в памяти
- Отличное решение для кэширования
- Поддержка различных структур данных
- Встроенная поддержка TTL
#### Недостатки
- Ограниченный объем данных (зависит от RAM)
- Нет полнотекстового поиска
- Нет встроенной поддержки векторного поиска
### Elasticsearch
#### Преимущества
- Мощный полнотекстовый поиск
- Встроенная поддержка векторного поиска (dense vectors)
- Отличная масштабируемость
- Богатые возможности агрегации
- Интеграция с LangChain и другими AI инструментами
- Поддержка аналитики в реальном времени
#### Недостатки
- Более сложная настройка и обслуживание
- Требует больше ресурсов
- Может быть избыточным для простых случаев
## Выбранное решение
### Основная архитектура
1. **Elasticsearch** как основное хранилище:
- Хранение промптов, ресурсов и метаданных
- Полнотекстовый и векторный поиск
- Аналитика и агрегации
2. **Redis** для кэширования:
- Кэширование часто используемых промптов
- Хранение сессий и временных данных
- Очереди для асинхронных операций
### Обоснование выбора
1. **Elasticsearch**:
- Лучшая поддержка поисковых операций
- Интеграция с AI инструментами (LangChain)
- Масштабируемость и производительность
- Поддержка векторного поиска для семантического поиска
2. **Redis**:
- Улучшение производительности через кэширование
- Эффективное управление сессиями
- Поддержка очередей для асинхронных задач
### Схема данных
#### Elasticsearch индексы
```json
{
"prompts": {
"mappings": {
"properties": {
"name": { "type": "keyword" },
"description": { "type": "text" },
"content": { "type": "text" },
"arguments": { "type": "nested" },
"vector": { "type": "dense_vector", "dims": 384 },
"created_at": { "type": "date" },
"updated_at": { "type": "date" }
}
}
},
"resources": {
"mappings": {
"properties": {
"uri": { "type": "keyword" },
"name": { "type": "text" },
"content": { "type": "text" },
"mime_type": { "type": "keyword" },
"vector": { "type": "dense_vector", "dims": 384 },
"metadata": { "type": "object" }
}
}
}
}
```
#### Redis структуры
```
# Кэш промптов
prompt:{id} -> {prompt_data}
prompt:recent -> [list of recent prompt ids]
# Кэш ресурсов
resource:{uri} -> {resource_data}
resource:popular -> [sorted set of popular resources]
# Сессии
session:{id} -> {session_data}
```
## План миграции
1. Настройка Elasticsearch и Redis
2. Создание индексов и маппингов
3. Миграция данных из PostgreSQL
4. Обновление сервисного слоя
5. Тестирование производительности
6. Постепенный переход на новую архитектуру
## Мониторинг и оптимизация
1. Elasticsearch метрики:
- Время поиска
- Использование индексов
- Размер шардов
2. Redis метрики:
- Hit/miss ratio
- Использование памяти
- Эвикция ключей