🤖 ИИ  ·  20 вопросов  ·  ~45 мин  ·  ⏱ Таймер 45:00  ·  Сложный  · 

Поиск с дополненной генерацией — RAG

RAG связывает языковую модель с внешними документами: материалы очищаются и делятся на фрагменты, запрос превращается в поиск, найденное ранжируется и только затем попадает в ответ. Тест разбирает реальные сбои — плохие границы фрагментов, устаревшие версии, смешение прав доступа, перегруженный контекст и вымышленные ссылки.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 45 минут; не меньше половины заданий требуют прочитать код, конфигурацию или формализованную схему. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого решения.
Вопрос 1 из 20
Инструкция в PDF начинается на одной странице, а исключения продолжаются на следующей. Как лучше подготовить фрагменты?
Python
section = {"title":"Возврат", "paragraphs":[rule, exception]}
chunks = split_by_structure(section, max_tokens=700, overlap=80)
Вопрос 2 из 20
Запрос содержит точный номер приказа «АБ-17/2026», но векторный поиск его не находит. Что добавить?
Python
dense = vector_search(query)
sparse = bm25_search(query)
hits = reciprocal_rank_fusion(dense, sparse)
Вопрос 3 из 20
Найдено 20 фрагментов, десять из них повторяют один и тот же абзац из копий документа. Что сделать перед генерацией?
Python
hits = deduplicate(hits, key="normalized_text")
hits = diversify(hits, by=["document_id","section_id"])
Вопрос 4 из 20
Ответ ссылается на `doc-7`, но цитируемая фраза в нём отсутствует. Какая проверка должна сработать?
Python
source = retrieved_by_id[claim["source_id"]]
assert normalize(claim["quote"]) in normalize(source.text)
Вопрос 5 из 20
Правильный фрагмент обычно находится на позиции 18, а в контекст передаются только первые 8. Какой этап улучшать прежде всего?
Вопрос 6 из 20
Два документа противоречат друг другу, один обновлён вчера, другой три года назад. Как собрать контекст?
Python
hits.sort(key=lambda h: (h.authority, h.effective_date), reverse=True)
context = format_with_metadata(hits)
Вопрос 7 из 20
Система не нашла достаточных сведений. Какой ответ безопаснее?
Вопрос 8 из 20
В индекс попали заголовки отдельно от абзацев, поэтому поиск по названию раздела возвращает пустой короткий фрагмент. Что улучшить?
Python
chunk.metadata["section_title"] = section.title
chunk.text = section.title + "
" + paragraph_text
Вопрос 9 из 20
Почему передача 40 релевантных фрагментов может дать хуже ответ, чем передача 6 лучших?
Python
candidates = retrieve(query, k=50)
context = rerank(query, candidates)[:6]
Вопрос 10 из 20
Какая метрика отдельно проверяет, попал ли правильный источник в первые k результатов до генерации?
\operatorname{Recall@k}=\frac{\#\{q: R_q\cap H_q^k\neq\varnothing\}}{\#Q}
Python
recall_at_k = found_relevant_in_top_k / total_queries_with_relevant_docs
Вопрос 11 из 20
После удаления документа его старые фрагменты остаются в индексе. Какой дефект проектирования это показывает?
Вопрос 12 из 20
Запрос «условия возврата для корпоративного клиента» ищет только по исходной формулировке. Какое преобразование может повысить полноту?
Python
queries = [original, "возврат для юридического лица", "расторжение покупки организацией"]
hits = merge([retrieve(x) for x in queries])
Вопрос 13 из 20
Пользователь имеет доступ только к проекту A, но общий индекс возвращает фрагмент проекта B. Где должна стоять защита?
Python
hits = index.search(query, filter={"tenant_id": user.tenant_id, "acl": {"contains": user.id}})
Вопрос 14 из 20
В таблице PDF строки извлеклись по колонкам и перемешались. Что делать до индексирования?
Python
rows = extract_table(page)
assert rows[0].keys() == {"тариф","лимит","цена"}
index(serialize_rows_with_headers(rows))
Вопрос 15 из 20
Векторный поиск возвращает семантически близкие, но устаревшие инструкции. Какой фильтр нужен?
Вопрос 16 из 20
Контекст содержит цитату без названия документа и даты. Чем это мешает?
Python
context_item = {"source_id":"policy-v4", "effective":"2026-06-01", "section":"Возвраты", "text": chunk}
Вопрос 17 из 20
Фрагменты режутся по 500 токенов без overlap. Ответ на вопрос требует последнего предложения одного и первого предложения следующего. Что изменить?
Вопрос 18 из 20
Reranker обучен на общих веб-текстах и систематически занижает юридические исключения. Как проверить проблему?
Python
metrics = evaluate_reranker(domain_pairs, slices=["general_rule","exception","definition","table_row"])
Вопрос 19 из 20
В контекст попали три версии одного положения. Как избежать ответа, собранного из несовместимых правил?
Вопрос 20 из 20
Какой журнал наиболее полезен для расследования ошибочного ответа RAG?
Python
trace = {"query":q,"index_version":v,"retrieved":hits,"reranked":selected,"context":context,"answer":answer}

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу