# Платформа AnythingLLM RAG

## Обзор

[AnythingLLM](https://github.com/Mintplex-Labs/anything-llm) полнофункциональное open-source AI-рабочее пространство с более чем 40 тыс. звёзд на GitHub. Объединяет документно-ориентированный RAG (Retrieval-Augmented Generation), AI-агентов и конструктор агентов без кода в одном саморазмещаемом приложении — всё управляется через чистый интуитивный UI, для настройки которого не требуется программирование.

**Зачем запускать AnythingLLM на Clore.ai?**

* **Полный RAG-пайплайн из коробки** — Загружайте PDF, Word-документы, веб-сайты и стенограммы YouTube. AnythingLLM автоматически делит на фрагменты, встраивает и сохраняет их для семантического поиска.
* **Для приложения не требуется GPU** — По умолчанию AnythingLLM использует CPU-эмбеддинги. Сопоставьте его с GPU-сервером Clore.ai, работающим с Ollama или vLLM, для локального вывода.
* **AI-агенты с реальными инструментами** — Встроенные агенты могут просматривать веб, писать и выполнять код, управлять файлами и вызывать внешние API — всё оркеструется через GUI.
* **Совместимость с MCP** — Интегрируется с экосистемой Model Context Protocol для расширенной связности инструментов.
* **Изоляция рабочих пространств** — Создавайте отдельные рабочие пространства с разными базами знаний и настройками LLM для разных проектов или команд.

### Обзор архитектуры

```
┌─────────────────────────────────────────────┐
│            AnythingLLM (порт 3001)          │
│                                             │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  │
│  │ RAG/Docs │  │  Agents  │  │  Users   │  │
│  └────┬─────┘  └────┬─────┘  └──────────┘  │
│       │             │                       │
│  ┌────▼─────────────▼───────┐               │
│  │    LLM Provider Router   │               │
│  └──────────────┬───────────┘               │
└─────────────────┼───────────────────────────┘
                  │
     ┌────────────┼────────────┐
     ▼            ▼            ▼
  OpenAI       Anthropic    Ollama (локально)
  Claude        Gemini      vLLM (локально)
```

***

## Требования

### Спецификации сервера

| Компонент     | Минимум      | Рекомендуется                              | Примечания                                     |
| ------------- | ------------ | ------------------------------------------ | ---------------------------------------------- |
| **GPU**       | Не требуется | RTX 3090 (если используются локальные LLM) | Только для бэкенда Ollama/vLLM                 |
| **VRAM**      | —            | 24 ГБ                                      | Для вывода локальных моделей                   |
| **CPU**       | 2 vCPU       | 4 vCPU                                     | Эмбеддинги выполняются на CPU                  |
| **ОЗУ**       | 4 ГБ         | 8 ГБ                                       | Больше = больший индекс документов в памяти    |
| **Хранилище** | 10 ГБ        | 50+ ГБ                                     | Хранение документов, векторная БД, кеш моделей |

### Справка по ценам Clore.ai

| Тип сервера                    | Примерная стоимость | Случай использования                        |
| ------------------------------ | ------------------- | ------------------------------------------- |
| CPU-инстанс (4 vCPU, 8 GB RAM) | \~$0.05–0.10/час    | AnythingLLM + внешние провайдеры API        |
| RTX 3090 (24 ГБ VRAM)          | ≈ $0.20/ч           | AnythingLLM + локальные LLM от Ollama       |
| RTX 4090 (24 ГБ VRAM)          | ≈ $0.35/ч           | AnythingLLM + более быстрый локальный вывод |
| A100 80 GB                     | ≈ $1.10/ч           | AnythingLLM + большие модели 70B+           |

> 💡 **Профессиональный совет:** Встроенные эмбеддинги AnythingLLM (LanceDB + локальный CPU-эмбеддер) работают без GPU. Для LLM-бэкенда вы можете использовать провайдеров с бесплатным уровнем, таких как OpenRouter или Groq, чтобы минимизировать расходы.

### Требования

* Сервер Clore.ai с доступом по SSH
* Docker (предустановлен на серверах Clore.ai)
* По крайней мере один API-ключ LLM **или** локальный бэкенд Ollama/vLLM

***

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

### Метод 1: Один Docker-контейнер (рекомендуется)

Официальный деплой в одном контейнере включает всё: веб-интерфейс, векторное хранилище LanceDB и процессор документов.

**Шаг 1: Подключитесь к вашему серверу Clore.ai**

```bash
ssh root@<ip-вашего-clore-сервера> -p <ssh-порт>
```

**Шаг 2: Настройте каталог хранения**

```bash
export STORAGE_LOCATION=$HOME/anythingllm
mkdir -p $STORAGE_LOCATION
touch "$STORAGE_LOCATION/.env"
```

**Шаг 3: Запустите AnythingLLM**

```bash
docker run -d \
  --name anythingllm \
  --restart unless-stopped \
  -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v ${STORAGE_LOCATION}:/app/server/storage \
  -v ${STORAGE_LOCATION}/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  mintplexlabs/anythingllm
```

> **Почему `--cap-add SYS_ADMIN`?** AnythingLLM использует Chromium для скрапинга веб-страниц и рендеринга PDF, что требует повышенных возможностей контейнера.

**Шаг 4: Проверьте запуск**

```bash
docker logs anythingllm --tail 30 -f
# Ждите: "Server listening on port 3001"
```

**Шаг 5: Завершите мастер настройки**

Откройте в браузере:

```
http://<your-clore-server-ip>:3001
```

Мастер первоначальной настройки проведёт вас через:

1. Создание учетной записи администратора
2. Выбор провайдера LLM
3. Выбор модели эмбеддингов
4. Настройка вашего первого рабочего пространства

***

### Метод 2: Docker Compose (многоcервисный)

Для продакшн-развёртываний с отдельными сервисами и более простым управлением:

**Шаг 1: Создайте каталог проекта**

```bash
mkdir -p ~/anythingllm && cd ~/anythingllm
mkdir -p storage
touch storage/.env
```

**Шаг 2: Создайте `docker-compose.yml`**

```bash
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    cap_add:
      - SYS_ADMIN
    environment:
      STORAGE_DIR: "/app/server/storage"
      # Провайдер LLM (настройте один)
      LLM_PROVIDER: openai
      OPEN_AI_KEY: ${OPENAI_API_KEY}
      OPEN_MODEL_PREF: gpt-4o-mini
      # Эмбеддинги
      EMBEDDING_ENGINE: native
      # Векторная БД
      VECTOR_DB: lancedb
      # Аутентификация
      AUTH_TOKEN: ${ANYTHINGLLM_AUTH_TOKEN}
      JWT_SECRET: ${JWT_SECRET}
    volumes:
      - ./storage:/app/server/storage
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3001/api/ping"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  anythingllm_storage:
EOF
```

**Шаг 3: Создайте `.env` файл**

```bash
cat > .env << 'EOF'
OPENAI_API_KEY=sk-your-openai-key-here
ANYTHINGLLM_AUTH_TOKEN=your-instance-password-here
JWT_SECRET=your-random-64-char-secret-here
EOF
```

**Шаг 4: Запуск**

```bash
docker compose up -d
docker compose logs anythingllm -f
```

***

### Метод 3: С предварительно настроенными переменными окружения

Для автоматизированного развёртывания без мастера настройки:

```bash
export STORAGE_LOCATION=$HOME/anythingllm
mkdir -p $STORAGE_LOCATION && touch "$STORAGE_LOCATION/.env"

docker run -d \
  --name anythingllm \
  --restart unless-stopped \
  -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v ${STORAGE_LOCATION}:/app/server/storage \
  -v ${STORAGE_LOCATION}/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  -e LLM_PROVIDER=openai \
  -e OPEN_AI_KEY=sk-your-key \
  -e OPEN_MODEL_PREF=gpt-4o-mini \
  -e EMBEDDING_ENGINE=native \
  -e VECTOR_DB=lancedb \
  -e AUTH_TOKEN=your-password \
  -e JWT_SECRET=$(openssl rand -hex 32) \
  mintplexlabs/anythingllm
```

***

## Конфигурация

### Опции провайдеров LLM

AnythingLLM поддерживает широкий спектр LLM-бэкендов. Настраивается в UI в разделе **Settings → LLM Preference**, или через переменные окружения:

**OpenAI:**

```bash
-e LLM_PROVIDER=openai
-e OPEN_AI_KEY=sk-your-key
-e OPEN_MODEL_PREF=gpt-4o
```

**Anthropic Claude:**

```bash
-e LLM_PROVIDER=anthropic
-e ANTHROPIC_API_KEY=sk-ant-your-key
-e ANTHROPIC_MODEL_PREF=claude-sonnet-4-5
```

**Google Gemini:**

```bash
-e LLM_PROVIDER=gemini
-e GEMINI_API_KEY=your-key
-e GEMINI_LLM_MODEL_PREF=gemini-1.5-pro
```

**Ollama (локально):**

```bash
-e LLM_PROVIDER=ollama
-e OLLAMA_BASE_PATH=http://172.17.0.1:11434
-e OLLAMA_MODEL_PREF=llama3.2
```

**OpenRouter (доступ к 100+ моделям):**

```bash
-e LLM_PROVIDER=openrouter
-e OPENROUTER_API_KEY=sk-or-your-key
-e OPENROUTER_MODEL_PREF=meta-llama/llama-3.1-8b-instruct:free
```

### Конфигурация эмбеддингов

| Движок    | Бэкенд           | Требуется GPU | Качество       |
| --------- | ---------------- | ------------- | -------------- |
| `native`  | CPU (встроенный) | Нет           | Хорошо         |
| `openai`  | OpenAI API       | Нет           | Отлично        |
| `ollama`  | Локальный Ollama | Необязательно | Хорошо—Отлично |
| `localai` | LocalAI          | Необязательно | Переменная     |

```bash
# Используйте эмбеддинги OpenAI для наилучшего качества
-e EMBEDDING_ENGINE=openai
-e OPEN_AI_KEY=sk-your-key
-e EMBEDDING_MODEL_PREF=text-embedding-3-small

# Используйте эмбеддинги Ollama для полностью локального пайплайна
-e EMBEDDING_ENGINE=ollama
-e OLLAMA_BASE_PATH=http://172.17.0.1:11434
-e EMBEDDING_MODEL_PREF=nomic-embed-text
```

### Опции векторной базы данных

| БД         | Описание                           | Лучше всего для                               |
| ---------- | ---------------------------------- | --------------------------------------------- |
| `lancedb`  | Встроенная, без настройки          | По умолчанию, небольшие—средние наборы данных |
| `chroma`   | ChromaDB (внешняя)                 | Средние наборы данных, гибкость               |
| `pinecone` | Pinecone (облако)                  | Большие наборы данных, продакшн               |
| `weaviate` | Weaviate (самостоятельный хостинг) | Продвинутые сценарии использования            |

### Конфигурация рабочего пространства

Рабочие пространства AnythingLLM — это изолированные окружения со своими:

* Базой знаний документов
* Настройками LLM (могут переопределять глобальные)
* Историей чатов
* Конфигурациями агентов

Создавайте рабочие пространства через UI или API:

```bash
# Создать рабочее пространство через API
curl -X POST http://localhost:3001/api/v1/workspace/new \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Project", "similarityThreshold": 0.7}'
```

### Загрузка документов

Загружайте документы через UI или API:

```bash
# Загрузить документ через API
curl -X POST http://localhost:3001/api/v1/document/upload \
  -H "Authorization: Bearer your-api-key" \
  -F "file=@/path/to/document.pdf"

# Переместить документ в рабочее пространство
curl -X POST http://localhost:3001/api/v1/workspace/my-project/update-embeddings \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"adds": ["custom-documents/document.pdf-chunk-1.json"]}'
```

***

## Ускорение с помощью GPU

Сам AnythingLLM работает на CPU. Ускорение GPU применимо к LLM-инференсному бэкенду.

### Запуск Ollama на том же сервере Clore.ai

```bash
# Запустите Ollama с поддержкой GPU
docker run -d \
  --name ollama \
  --gpus all \
  --restart unless-stopped \
  -p 11434:11434 \
  -v ollama_data:/root/.ollama \
  ollama/ollama

# Скачать модели для AnythingLLM
docker exec ollama ollama pull llama3.2          # 2B, быстро
docker exec ollama ollama pull llama3.1:8b       # 8B, сбалансировано
docker exec ollama ollama pull nomic-embed-text  # для эмбеддингов
docker exec ollama ollama pull mxbai-embed-large # лучшие эмбеддинги

# Перезапустить AnythingLLM с конфигурацией Ollama
docker stop anythingllm && docker rm anythingllm

docker run -d \
  --name anythingllm \
  --restart unless-stopped \
  -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v $HOME/anythingllm:/app/server/storage \
  -v $HOME/anythingllm/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  -e LLM_PROVIDER=ollama \
  -e OLLAMA_BASE_PATH=http://172.17.0.1:11434 \
  -e OLLAMA_MODEL_PREF=llama3.1:8b \
  -e EMBEDDING_ENGINE=ollama \
  -e EMBEDDING_MODEL_PREF=nomic-embed-text \
  mintplexlabs/anythingllm
```

### Производительность моделей на GPU в Clore.ai

| Модель        | GPU       | VRAM  | Скорость эмбеддинга | Скорость инференса | Стоимость/ч |
| ------------- | --------- | ----- | ------------------- | ------------------ | ----------- |
| Llama 3.2 3B  | RTX 3090  | 2 GB  | Быстро              | 60–80 ток/с        | \~$0.20     |
| Llama 3.1 8B  | RTX 3090  | 6 GB  | Быстро              | 40–60 ток/с        | \~$0.20     |
| Mistral 7B    | RTX 3090  | 5 ГБ  | Быстро              | 45–65 ток/с        | \~$0.20     |
| Llama 3.1 70B | A100 80GB | 40 ГБ | Средне              | 20–35 ток/с        | \~$1.10     |

***

## Подсказки и лучшие практики

### Лучшие практики при загрузке документов

```bash
# Для больших наборов документов увеличьте память Node.js
-e NODE_OPTIONS="--max-old-space-size=4096"

# Рекомендуемые настройки фрагментов для разных типов документов
# Техническая документация: размер фрагмента 1000, перекрытие 200
# Юридические/контракты: размер фрагмента 500, перекрытие 100
# Книги/статьи: размер фрагмента 1500, перекрытие 300
```

* **Предобрабатывайте большие PDF** — OCR-сканы с большим объёмом распознавания замедляют загрузку. Используйте `pdftotext` или Adobe OCR заранее.
* **Организуйте по рабочим пространствам** — Создавайте отдельные рабочие пространства для каждого проекта/домена для лучшей точности поиска.
* **Используйте точные запросы** — RAG лучше работает с конкретными вопросами, а не с общими запросами.

### Управление затратами на Clore.ai

```bash
# Сделайте резервную копию хранилища перед остановкой инстанса Clore.ai
tar -czf anythingllm-backup-$(date +%Y%m%d).tar.gz ~/anythingllm/

# Чтобы возобновить на новом инстансе Clore.ai, восстановите резервную копию
tar -xzf anythingllm-backup-20240101.tar.gz -C ~/
```

Поскольку инстансы Clore.ai эфемерны, всегда делайте резервную копию каталога хранения. Он содержит:

* Векторные эмбеддинги (LanceDB)
* Загруженные документы
* Историей чатов
* Конфигурациями агентов

### Настройка для нескольких пользователей

```bash
# Включите режим нескольких пользователей в UI:
# Settings → Security → Enable Multi-User Mode

# Или через переменные окружения:
-e MULTI_USER_MODE=true

# Создайте пользователя через API после включения мультипользовательского режима
curl -X POST http://localhost:3001/api/v1/admin/users/new \
  -H "Authorization: Bearer admin-api-key" \
  -H "Content-Type: application/json" \
  -d '{"username": "alice", "password": "securepass", "role": "default"}'
```

### Конфигурация AI-агента

Агенты AnythingLLM могут выполнять реальные задачи. Включите инструменты в **Settings → Agents**:

* **Веб-обзор** — Извлекает и читает веб-страницы
* **Поиск в Google** — Выполняет поиск в Google (требует API-ключ)
* **Интерпретатор кода** — Выполняет Python в песочнице
* **GitHub** — Читает репозитории
* **SQL-коннектор** — Выполняет запросы к базам данных

```bash
# Включите возможности агента через окружение
-e AGENT_SEARCH_PROVIDER=google
-e AGENT_GSX_GOOGLE_SEARCH_ENGINE_ID=your-cx-id
-e AGENT_GSX_GOOGLE_SEARCH_KEY=your-api-key
```

### Тонкая настройка производительности

```bash
# Для интенсивной обработки документов
docker run -d \
  --name anythingllm \
  --restart unless-stopped \
  --cpus="4" \
  --memory="8g" \
  -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v $HOME/anythingllm:/app/server/storage \
  -v $HOME/anythingllm/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  mintplexlabs/anythingllm
```

### Обновление AnythingLLM

```bash
# Загрузить последнюю версию образа
docker pull mintplexlabs/anythingllm:latest

# Сначала сделайте резервную копию
cp -r $HOME/anythingllm $HOME/anythingllm-backup-$(date +%Y%m%d)

# Остановите и удалите старый контейнер (данные находятся в томе, безопасно)
docker stop anythingllm && docker rm anythingllm

# Перезапустите с той же командой
docker run -d \
  --name anythingllm \
  --restart unless-stopped \
  -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v $HOME/anythingllm:/app/server/storage \
  -v $HOME/anythingllm/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  mintplexlabs/anythingllm
```

***

## Устранение неполадок

### Контейнер запущен, но UI недоступен

```bash
# Проверьте, что контейнер работает
docker ps | grep anythingllm

# Проверьте логи на ошибки при старте
docker logs anythingllm --tail 50

# Проверьте привязку порта
ss -tlnp | grep 3001

# Проверьте, что сервер Clore.ai имеет проброс порта 3001 в настройках портов
# (добавьте его в настройках развёртывания Clore.ai)
```

### Загрузка документа не удалась

```bash
# Проверьте доступное место на диске
df -h

# Проверьте логи процессора документов
docker logs anythingllm 2>&1 | grep -i "error\|fail\|upload"

# Убедитесь, что capability SYS_ADMIN установлена (требуется для Chromium)
docker inspect anythingllm | grep -A5 CapAdd
```

### RAG-ответы низкого качества / галлюцинации

Распространённые причины и исправления:

```bash
# 1. Отрегулируйте порог похожести (ниже = больше документов извлекается)
# Settings → Workspace → Vector Database → Similarity Threshold: 0.5

# 2. Увеличьте top-K результатов
# Settings → Workspace → Vector Database → Max Context Snippets: 10

# 3. Улучшите размер фрагмента (переинжест документов после изменения)
# Settings → Workspace → Text Splitter → Chunk Size: 1000, Overlap: 200

# 4. Переключитесь на лучшую модель эмбеддингов
-e EMBEDDING_ENGINE=openai
-e EMBEDDING_MODEL_PREF=text-embedding-3-large
```

### Соединение с Ollama не удаётся из AnythingLLM

```bash
# Протестируйте из контейнера AnythingLLM
docker exec anythingllm curl -s http://172.17.0.1:11434/api/tags

# Если это не сработает, найдите реальный IP Docker-bridge
ip route | grep docker
# Используйте этот IP в OLLAMA_BASE_PATH

# Альтернатива: используйте host-сеть
docker run -d \
  --name anythingllm \
  --network host \
  --cap-add SYS_ADMIN \
  -v $HOME/anythingllm:/app/server/storage \
  -v $HOME/anythingllm/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  -e OLLAMA_BASE_PATH=http://localhost:11434 \
  mintplexlabs/anythingllm
```

### Недостаточно памяти / падение контейнера

```bash
# Проверить использование памяти
docker stats anythingllm

# Освободите память, уменьшив кеш LanceDB
# Или переключитесь на инстанс Clore.ai с большим объёмом RAM

# Перезапустите с лимитами памяти и swap
docker run -d \
  --name anythingllm \
  --memory=6g \
  --memory-swap=8g \
  -p 3001:3001 \
  --cap-add SYS_ADMIN \
  -v $HOME/anythingllm:/app/server/storage \
  -v $HOME/anythingllm/.env:/app/server/.env \
  -e STORAGE_DIR="/app/server/storage" \
  mintplexlabs/anythingllm
```

***

## Дополнительное чтение

* [Документация AnythingLLM](https://docs.anythingllm.com) — полная инструкция по настройке и справочник API
* [AnythingLLM на GitHub](https://github.com/Mintplex-Labs/anything-llm) — исходный код, issues, дорожная карта
* [AnythingLLM на Docker Hub](https://hub.docker.com/r/mintplexlabs/anythingllm) — теги образов
* [Запуск Ollama на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/ollama.md) — локальный LLM-бэкенд для AnythingLLM
* [Запуск vLLM на Clore.ai](/guides/guides_v2-ru/yazykovye-modeli/vllm.md) — высокопроизводительный инференс
* [Руководство по сравнению GPU](/guides/guides_v2-ru/nachalo-raboty/gpu-comparison.md) — выбор подходящего уровня Clore.ai
* [Документация MCP](https://modelcontextprotocol.io) — Model Context Protocol для расширения возможностей агентов
* [Справочник AnythingLLM API](https://docs.anythingllm.com/api-reference) — REST API для автоматизации


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/ai-platformy-i-agenty/anythingllm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
