Архитектура RAG/поисковой системы для документов
Нужно построить систему, которая ищет по внутренним документам и помогает отвечать на вопросы. Какой пайплайн спроектировать?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Загрузка документов, очистка и chunking, metadata/ACL, embedding index, lexical index, hybrid retrieval, реранжирование, generation с citations и слой проверок: permissions, freshness, hallucination, fallback.
Подробный разбор
Базовый RAG-пайплайн начинается с загрузки документов: забрать документы из источников, очистить, разбить на чанки, сохранить metadata, версии, владельца и права доступа. Для retrieval обычно стоит иметь не только vector index, но и lexical search, потому что точные термины, номера документов и имена часто лучше находятся BM25.
На запросе система делает query normalization, hybrid retrieval, реранжирование top-N чанков, затем передает компактный контекст в LLM. Ответ должен содержать ссылки/citations на источники и не выходить за права пользователя. Если контекста мало или confidence низкий, лучше честный fallback, чем выдуманный ответ.
Оценка: retrieval Recall@K/MRR/NDCG на gold set, faithfulness ответа, answer relevance, latency, cost, coverage по типам документов, доля отказов и жалобы пользователей.
Типичные ошибки
- Делать только векторный поиск без lexical fallback.
- Не учитывать ACL и версии документов.
- Оценивать только красоту ответа, не проверяя найденный контекст.
Когда нужен hybrid retrieval
В поиске есть embeddings и полнотекстовый индекс. Когда использовать оба подхода и как их объединять?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
BM25 хорош для точных терминов, кодов, имен и редких слов. Vector search хорош для смысловой близости и перефразировок. Их объединяют union/weighted score/RRF, затем реранкер пересортировывает общий top-N.
Подробный разбор
Полнотекстовый поиск надежен, когда пользователь пишет точный термин, номер договора, название продукта, ошибку или редкую сущность. Embedding retrieval лучше переносит синонимы, неполные формулировки и смысловые запросы. В реальном RAG часто нужны оба, потому что запросы смешанные.
Простые способы объединения: взять union top-K из BM25 и ANN, нормализовать scores и взвесить, или использовать Reciprocal Rank Fusion. После этого cross-encoder/LLM реранкер может пересортировать кандидатов по query-document relevance.
В production важно логировать вклад источников: что пришло из BM25, что из vector, что выбрал реранкер. Так можно понять, где система теряет recall и какие запросы требуют словарей, synonyms или улучшения embeddings.
Типичные ошибки
- Полностью заменить BM25 embeddings-поиском.
- Складывать scores разных индексов без нормализации.
- Не оценивать recall до реранжирования.
Какие признаки дать поисковому реранкеру
После retrieval есть набор кандидатов. Какие признаки использовать для реранжирования и что можно считать заранее?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Признаки: lexical score, embedding similarity, query-document cross features, свежесть, источник, права, популярность, прошлые клики, качество документа, длина, language match. Тяжелые document features лучше считать offline.
Подробный разбор
Реранкер получает кандидатов от retrieval и может использовать признаки из разных слоев. Retrieval scores: BM25, vector similarity, position in each source. Query-document features: совпадение важных терминов, entity match, category/source match, свежесть, language, document type, section title, chunk position.
Документные признаки лучше считать offline: качество документа, владелец, дата обновления, популярность, исторические клики, embedding, безопасность. Online можно добавить признаки запроса и пользователя: роль, права доступа, текущий продукт, язык, последние действия.
Если используется neural reranker, он дороже, поэтому его запускают на ограниченном top-N. Для надежности нужен fallback: если реранкер не ответил, выдаем результат retrieval с простыми правилами.
Типичные ошибки
- Считать тяжелые document features на каждый запрос.
- Игнорировать permissions как часть ранжирования.
- Не иметь fallback при ошибке реранкера.
Метрики и A/B для поиска/RAG
Как оценивать качество поиска или RAG-системы offline и online?
Сначала проговорите ответ вслух или тезисами.
Формулы, план решения, риски и примеры.
Откройте разбор только после своей попытки.
Показать разбор
Короткий ответ
Offline: Recall@K/MRR/NDCG для retrieval и ранжирования, faithfulness и answer relevance для RAG. Online: success rate, deflection, time-to-answer, CTR/click satisfaction, жалобы, latency, cost. A/B требует primary metric, guardrails и мощности.
Подробный разбор
Для поиска сначала оценивается retrieval: нашел ли top-K правильные документы. Метрики: Recall@K, MRR, NDCG@K, coverage по типам запросов. Для RAG добавляется качество ответа: groundedness/faithfulness, answer relevance, citation correctness, refusal quality, hallucination rate.
Online-метрики зависят от продукта: доля успешных поисковых сессий, click satisfaction, отсутствие повторного запроса, time-to-answer, снижение нагрузки на поддержку, конверсия в нужное действие. Guardrails: latency, cost per request, доля пустых ответов, жалобы, нарушение permissions.
A/B нужно планировать: выбрать primary metric, посчитать MDE и длительность, проверить баланс групп и логирование. Для редких запросов часто нужен interleaving, human evaluation или replay на размеченном наборе, потому что online-сигнала мало.
Типичные ошибки
- Оценивать только LLM-ответ без retrieval метрик.
- Не проверять citations и permissions.
- Запускать A/B без MDE и стабильного логирования.