> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yahont.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Описание системы

> Обзор компонентов Yahont на высоком уровне

## Обзор

Приложение Yahont — это набор контейнеров Docker, которые можно развернуть на любой инфраструктуре и в любом масштабе.

> [!TIP]
>
> Как проект с открытым исходным кодом,
> Yahont разработан с учётом безопасности и конфиденциальности данных как основополагающего принципа.
> Безопасность Yahont можно проверить по исходному коду, а не по заверениям поставщика.

## Архитектура системы

![Архитектура Yahont](https://mintcdn.com/yahont-ai/uOUoHpXrpfUMZdwx/assets/security/OnyxArchitecture.png?fit=max\&auto=format\&n=uOUoHpXrpfUMZdwx\&q=85\&s=0aae72a045f698364c62866b6926f3ff)

## Основные компоненты

### Уровень приложения

* **Веб-клиент (фронтенд)**: веб-приложение на Next.js, предоставляющее пользовательский интерфейс платформы
  Yahont
* **API-сервер**: веб-сервер на Python FastAPI для обработки бизнес-логики и запросов
* **Фоновые рабочие процессы**: рабочие процессы на Python для асинхронных задач,
  например получения обновлений документов и т. д.
* **Сервис выполнения кода** (`code-interpreter`): запускает код Python из чатов в отдельных изолированных контейнерах
  без доступа к сети (см. [Выполнение кода](/admins/actions/code_interpreter)).
  В Docker Compose сервис работает от имени `root` и использует сокет Docker хоста (`/var/run/docker.sock`).

> [!WARNING]
>
> Доступ к сокету Docker даёт управление Docker на хосте. Не публикуйте порты сервиса наружу.
> Чтобы запретить выполнение кода, отключите сервер на странице **Интерпретатор кода** в панели администратора.

### Серверы моделей

* **Сервер модели вывода**: обслуживает модели эмбеддинга и переранжирования, используемые во время запроса
  для получения и упорядочивания контекста
* **Сервер модели индексации**: выделенный сервер моделей, выполняющий эмбеддинг документов во время
  индексации и изолирующий тяжёлые нагрузки индексации от живого трафика запросов

### Уровень данных

* **Реляционная база данных**: база данных Postgres для хранения данных приложения, сессий пользователей и состояния
  системы
* **Поисковая система**: OpenSearch, обеспечивающий поиск по ключевым словам (BM25) и векторное хранилище для получения
  контекста по запросам
* **Кэш в памяти**: Redis, используется для оптимизации производительности
* **Файловое хранилище**: S3-совместимое хранилище SeaweedFS для загруженных пользователями файлов и документов,
  полученных из коннекторов

### Уровень инфраструктуры

* **Маршрутизатор запросов**: обратный прокси Nginx для балансировки нагрузки и маршрутизации запросов

## Замена компонентов

Некоторые компоненты стека Yahont легко заменить, другие — нет.

**SeaweedFS** можно заменить на S3, Google Cloud Storage,
Azure Blob Storage или любой S3-совместимый сервис объектного хранилища. Интерфейс файлового хранилища абстрагирован,
поэтому замена проста.

**Redis** можно заменить управляемым сервисом Redis, таким как AWS ElastiCache или Google Cloud Memorystore for Redis.
Другие кэши в памяти могут работать, но потребуют изменений в коде.

**Postgres** можно заменить управляемым сервисом Postgres, например AWS RDS.
Переход на другую реляционную базу данных гораздо сложнее и не рекомендуется из-за функций и оптимизаций,
специфичных для языка.

**OpenSearch** можно заменить многоузловым кластером OpenSearch (обычно не требуется)
или управляемым сервисом OpenSearch, например AWS OpenSearch Service.
OpenSearch тесно интегрирован с функциями получения контекста,
и переход на другую поисковую систему потребует значительных затрат на разработку,
чтобы сохранить ту же функциональность.

**Nginx** можно убрать и заменить собственным маршрутизирующим прокси.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.