RAG-пайплайн для AI-агентов

Векторный поиск
без компромиссов

Загружайте документы, извлекайте смысл через OCR и векторизацию, ищите через семантический и полнотекстовый поиск.
API спроектирован под tool_calls AI-агентов.

Дэшборд Документация API
POST /api/documents → vector-text search
// 1. Загрузить документ
POST /api/documents  ← multipart file, max 100 MB
{ "task_type": "transforming", "status": "pending" }

// 2. Семантический поиск после обработки
GET /api/documents/{id}/vector-text?query="ставка рефинансирования"
{
  "results": [{ "text": "...", "score": 0.94, "page": 7 }],
  "cost_usd": 0.000012
}
12 000
символов на чанк
20%
overlap между чанками
36 × 5
чанков × параллельных батчей
cosine
дистанция в Qdrant
Архитектура

Как работает пайплайн

От загрузки файла до результатов семантического поиска — автоматически, асинхронно, с трекингом статуса.

Upload
POST /api/documents

Файл до 100 МБ. Документ и BackgroundTask в статусе pending.

OCR
Unstructured

RU + EN распознавание. Структурирует в DocumentElement[].

Embeddings
OpenAI API

Чанкинг, батчинг 36 чанков, 5 конкурентных запросов через Http::pool().

Store
Qdrant

Cosine distance. Векторы сохранены, готов к поиску.

Search
vector-text

Топ-K чанков с оценкой релевантности + cost_usd.

Возможности

Всё необходимое для RAG

Семантический поиск

OpenAI-эмбеддинги + Qdrant cosine distance. Находит смысловые совпадения, не ключевые слова. Возвращает cost_usd каждого запроса.

Коллекции документов

Группируйте документы в коллекции. Единый поиск по всем документам — vector-text и full-text на уровне коллекции.

Постраничный доступ

Чтение постранично или сквозной скролл по всему документу с offset, limit и has_more.

Асинхронная обработка

Задачи transforming и vectorizing в очередях Horizon. Polling через GET /tasks/{id}.

Изоляция пользователей

Глобальный UserScope на уровне модели — каждый пользователь видит только свои данные без явных проверок в контроллерах.

Трекинг стоимости

Токены хранятся в background_tasks.tokens_used. Стоимость по конфигурируемой цене за млн токенов возвращается в cost_usd.

Для AI-агентов

Tool calls из коробки

API спроектирован под паттерн Anthropic tool_calls. Агент загружает документ, поллит статус задачи, делает семантический поиск и читает релевантные страницы — всё через одни и те же эндпоинты.

Документация с примерами tool_call JSON в docs/tool_calls.md
Все эндпоинты защищены Laravel Sanctum
Статусы: pendingprocessingcompleted
Автоматический запуск векторизации при первом vector-text запросе
Жизненный цикл документа
// 1. Загрузить документ
upload_document(file)
  → task { status: "pending", type: "transforming" }

// 2. Поллить до завершения парсинга
get_task_status(document_id, task_id)
  → { status: "completed" }

// 3. Запрос → автозапуск векторизации
search_document_vector(document_id, query)
  → task { status: "processing", type: "vectorizing" }
  → поллить → повторить вызов
  → { results: [...], cost_usd: 0.000012 }

// 4. Прочитать контекст страницы
get_document_page(document_id, page: 3)
  → { content: "...", has_more: true }
Технологии

Проверенный стек

Laravel 12
PHP 8.2, Horizon, Sanctum, Bus::chain
Qdrant
Векторная БД, cosine distance, namespace по user
OpenAI
Embeddings, настраиваемые модель и dimensions
Unstructured
OCR (RU+EN), PDF / DOCX / изображения

Мониторинг в реальном времени

Открой Дэшборд чтобы следить за состоянием фоновых задач: трансформирование, векторизация, ошибки.

Открыть Дэшборд