Почему обычный chunk ломает таблицу

Строка без названия колонок теряет смысл, а Markdown большой таблицы превышает контекст. Сохраняйте исходную структуру и создавайте несколько representations под разные запросы.

Три представления

Храните таблицу как typed dataset, row-level текст с headers и краткое описание таблицы. Первое подходит вычислениям, второе — точному retrieval, третье — поиску нужной таблицы.

SQL или vector search

Вопрос «какая сумма больше» требует детерминированного вычисления, а не догадки LLM. Router отправляет точные агрегаты в SQL/tool, а смысловые вопросы — в retrieval.

Единицы и периоды

Нормализуйте currency, scale, decimal separator, timezone и reporting period, но сохраняйте исходное значение. Ответ показывает формулу и использованные строки.

Сложные layouts

Merged cells, многоуровневые headers и продолжение таблицы на следующей странице требуют layout-aware parser. Confidence и warnings входят в metadata.

Проверка

Тестируйте lookup, фильтрацию, сравнение, агрегацию, отсутствующее значение и конфликт единиц. Citation должна выделять таблицу и строки, а не только весь PDF.

Какой первый шаг?
Зафиксировать корпус, реальные запросы и baseline; без версий сравнение невоспроизводимо.
Что измерять?
Retrieval relevance, grounded correctness, p95 latency, стоимость и ошибки по сегментам.
Можно ли доверить оценку одной LLM?
Нет. LLM judge полезен как сигнал, но критические выборки требуют детерминированных проверок и экспертной разметки.
Как обновлять систему?
Через новую версию, offline eval, shadow, canary и заранее подготовленный rollback.
Что делать с чувствительными данными?
Минимизировать, ограничивать доступ, применять ACL до retrieval и задавать retention для traces и eval-наборов.
Как избежать каннибализации экспериментов?
Менять один слой за раз и хранить control, candidate, corpus version и сегментированные результаты.
← Все статьи блога