Ingestion — перший quality gate
Документи приходять із drives, CRM, support, knowledge bases, databases і uploads. Pipeline має нормалізувати формати, витягувати текст, зберігати source identity та version metadata. Поганий ingestion створює проблеми, які prompt уже не виправить.
Ingestion має бути idempotent. Потрібно трекати timestamps, checksums, updates і deletions, щоб індекс не накопичував дублікати та застарілі дані.
Chunking має відповідати структурі знань
Фіксований chunk size простий, але часто руйнує контекст. Краще використовувати headings, sections, tables, threads або domain boundaries.
Разом із chunk зберігайте metadata: document id, title, section, owner, timestamp, tenant і security labels.
Permissions застосовуються до retrieval
Якщо retrieval ігнорує ACL, RAG може стати каналом витоку даних. User і tenant permissions потрібно застосовувати до candidate chunks до того, як вони потраплять у LLM.
Source ACL переноситься в index, а filtering відбувається до reranker. Permission logic має тестуватися незалежно від моделі.
Hybrid retrieval + reranking
Embeddings сильні для semantic search, але lexical search потрібен для IDs, назв, error codes і точних термінів. Hybrid approach поєднує обидва сигнали й rerank кандидати.
Retrieval recall вимірюється на known-answer dataset. Якщо потрібне evidence не знайдено, зміна prompt не вирішить проблему.
Groundedness і usefulness — різні метрики
Відповідь може бути grounded, але марною, або корисною, але не підтвердженою. Evals мають окремо міряти citations, completeness, recall, refusal та unsupported claims.
Потрібен набір реальних user questions і regression tests для кожної зміни model, prompt або embeddings.
Кожна відповідь має мати trace
Production trace включає query, query rewrite, retrieved chunks, scores, model, prompt version, citations, latency і outcome.
Це дозволяє зрозуміти root cause: source missing, слабкий retrieval, reranker failure чи model behavior.