RAG по вашим документам

Отвечает по вашим документам и не платит дважды за один вопрос

Groundline индексирует загруженные файлы и отвечает со ссылками на фрагменты, из которых собран ответ. Ответы кэшируются по смыслу вопроса, а не по его тексту: «какой у нас SLA?» и «сколько времени на реакцию по договору?» попадают в одну запись кэша, и второй запрос не идёт в языковую модель.

Как это работает

Один вопрос, семь шагов, и все они видны

Вопрос сначала превращается в вектор и сравнивается с прошлыми вопросами; остальное выполняется только при промахе. В интерфейсе видно, какой шаг идёт сейчас, сколько занял предыдущий и сколько токенов потратил.

  1. 01

    check_cache

    Вопрос становится вектором и сравнивается с теми, на которые уже отвечали. Выше порога схожести готовый ответ отдаётся сразу.

  2. 02

    rewrite_query

    Формулировка переписывается в точный поисковый запрос: аббревиатуры раскрываются, размытые слова уточняются.

  3. 03

    retrieve

    Гибридный поиск по вашим фрагментам: векторный ловит перефразировки, полнотекстовый - точные термины, результаты объединяются ранговой фузией.

  4. 04

    rerank

    Кросс-энкодер перечитывает кандидатов и оставляет пять, в которых действительно есть ответ.

  5. 05

    check_sufficiency

    Модель проверяет, хватает ли этих фрагментов. Если нет - вопрос переформулируется и поиск повторяется, максимум дважды.

  6. 06

    generate_answer

    Ответ пишется стримом строго по этим фрагментам, с указанием файла и чанка для каждого утверждения.

  7. 07

    record

    Ответ, источники и метрики шагов уходят в историю и в кэш - для следующего похожего вопроса.

Шаги с пометкой LLM тратят токены. При попадании в кэш не выполняется ни один из них.

Экран чата: ответ пишется стримом, под ним источники, справа панель пайплайна с временем и токенами каждого шага.

Зачем вход

Вход по email - часть продукта, а не формальность

Демо работает на бесплатных тарифах внешних сервисов. Идентификация пользователя - способ честно разделить этот бюджет и не смешивать чужие документы с вашими ответами.

Персональные квоты

Запросы и документы считаются на аккаунт, а не на весь сервис. Один активный посетитель не выжигает дневной бюджет модели для остальных.

Изоляция данных

Документы, история и кэш ответов привязаны к аккаунту. Поиск идёт только по вашим фрагментам, а кэш не отдаёт чужой ответ - это обеспечивает row-level security в Postgres, а не только код приложения.

Код вместо пароля

Шесть цифр на почту: пароль негде утечь, OAuth-приложение не нужно, лишние персональные данные не хранятся.

Удаление в один шаг

Кнопка на экране «Документы» удаляет аккаунт со всеми файлами, ответами и кэшем. Без переписки с поддержкой.

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

Цифры кэша

Что реально сэкономил семантический кэш

Замер 2026-09-18 на демо-корпусе (Northwind Robotics employee handbook, 1 document). Это показания одного прогона, а не бенчмарк - те же цифры видны в интерфейсе во время работы.

Ответ из кэша 439 мс один эмбеддинг и один индексный поиск
Ответ через полный пайплайн 2.6 с 3 обращения к языковой модели
Сэкономлено за попадание 849 токенов 0 обращений к модели
Схожесть, давшая попадание 0.9916 порог 0.95
Индексация документа 2.3 с извлечение текста, нарезка и эмбеддинги

Вопрос задан дважды, второй раз другими словами: «What is the vacation policy?» и «Whats the vacation policy?»

Раскрытая полоса лимитов: каждая внешняя квота с остатком и пометкой, откуда взята цифра.

Ограничения

Чего Groundline не делает

Это не корпоративный поиск

Демо рассчитано на десятки документов на аккаунт, а не на архив компании.

Отвечает только по загруженному

Если ответа в документах нет, шаг проверки достаточности не даёт модели его выдумать.

Форматы PDF, TXT и MD

Сканы без текстового слоя, таблицы и презентации не разбираются.

Бесплатные тарифы провайдеров

Когда дневная квота провайдера кончается, запросы отклоняются до сброса. Полоса внизу приложения показывает остаток.

FAQ

Короткие ответы

Чем семантический кэш отличается от обычного?

Обычный кэш сравнивает строку запроса. Семантический сравнивает эмбеддинги, поэтому перефразированный вопрос находит тот же ответ. Порог схожести настраивается; ниже порога вопрос идёт в полный пайплайн.

Кто видит мои документы?

Документы и фрагменты привязаны к аккаунту и в чужой поиск не попадают - это обеспечивает row-level security на уровне базы. Тексты уходят во внешние модели для эмбеддингов и генерации ответа: в разделе security репозитория перечислено, какой сервис что получает.

Сколько вопросов в день можно задать?

В демо - 50 вопросов в сутки и один документ до 0,3 МБ на аккаунт, между вопросами не меньше 15 секунд. Попадания в кэш бесплатны и в счёт не идут. Текущий расход виден в приложении.

Можно развернуть у себя?

Да. В репозитории есть docker compose и описание всех переменных окружения. Провайдеры моделей и эмбеддингов меняются конфигурацией, вплоть до полностью локальных.

Что происходит при попадании в кэш?

Шаги со второго по шестой не выполняются. Ответ и источники берутся из записи кэша, а в интерфейсе check_cache помечается как попадание - со схожестью и числом сэкономленных токенов.