Один лог ответа бесполезен

Нужен trace всей цепочки: original query, transformations, retrievers, candidates, filters, reranker, selected context, model version и output validation.

Span-модель

Каждый этап становится span с duration, status, input/output references и version. Общий trace ID проходит через gateway, search, model и tools.

Retrieval evidence

Храните IDs, ranks и scores, но учитывайте, что шкалы разных алгоритмов несопоставимы. Логируйте причины отбрасывания и permission decision ID.

Context manifest

Записывайте порядок chunks, token counts, truncation и deduplication. Для чувствительных данных сохраняйте references или hashes вместо полного payload.

Replay

Воспроизводимый replay фиксирует corpus snapshot, models, prompts и policies. Live replay по изменившемуся индексу отвечает на другой вопрос.

Дашборд и алерты

Связывайте quality signals с p95 latency, cost, empty retrieval и fallback. Sampling сохраняет все ошибки и небольшую долю успехов.

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