# Database Infrastructure

Данная директория содержит инфраструктуру для развертывания базы данных и связанных инструментов для проекта LightRAG.

## Структура проекта

```
database/
├── age-viewer/          # Веб-интерфейс для визуализации графовой базы данных
└── postgres/            # PostgreSQL с расширениями AGE и pgvector
```

## Компоненты

### PostgreSQL (`postgres/`)

Настроенный контейнер PostgreSQL 15 с предустановленными расширениями для работы с графовыми данными и векторным поиском.

**Расширения:**
- **AGE (Apache AGE)** v1.5.0 - Расширение для работы с графовой базой данных, добавляет поддержку Cypher-запросов
- **pgvector** v0.8.0 - Расширение для векторного поиска и хранения эмбеддингов
- **btree_gin** - Оптимизация индексов для полнотекстового поиска

### AGE Viewer (`age-viewer/`)

Веб-интерфейс для визуализации и исследования графовых данных, хранящихся в AGE.
Доступен по ссылке: `http://localhost:3000`

**Особенности:**
- Основан на Node.js 14
- Веб-интерфейс на порту `3000`
- Автоматическое исправление проблем совместимости с cytoscape
- Управление через PM2

## Быстрый старт

### Запуск PostgreSQL
```bash
cd postgres/
make build
make run
```

### Запуск AGE Viewer
```bash
cd age-viewer/
make clone    # Клонирование репозитория AGE Viewer
make build
make run
```

## Инициализация базы данных

При первом запуске PostgreSQL автоматически выполняются скрипты инициализации:

1. **00-configure-auth.sh** - Настройка аутентификации (trust для локальных подключений)
2. **init.sql** - Создание расширений и настройка производительности:
   - Увеличение timeout для deadlock до 5 секунд
   - Увеличение memory для maintenance операций до 1GB
   - Настройка параллельных воркеров
   - Увеличение лимита блокировок

## Возможности

### Графовая база данных (AGE)
- Хранение данных в виде графа с узлами и рёбрами
- Поддержка Cypher-запросов (как в Neo4j)
- Интеграция с PostgreSQL экосистемой

### Векторный поиск (pgvector)
- Хранение и поиск по векторным эмбеддингам
- Поддержка различных метрик расстояния
- Оптимизированные индексы для быстрого поиска

### Визуализация данных
- Графический интерфейс для исследования графовых структур
- Интерактивная визуализация узлов и связей
- Выполнение Cypher-запросов через веб-интерфейс
