Оцінка RAG: Тестування витягування перед налаштуванням LLM
Tech
AI
RAG
Evaluation
Machine Learning

Оцінка RAG: Тестування витягування перед налаштуванням LLM

Робочий процес, підтверджений дослідженнями, для визначення того, чи не вдалося системі RAG витягнути, закріпити, утриматися або виконати операції.

Uygar DuzgunUUygar Duzgun
Jul 26, 2026
Оновлено 1 серп. 2026 р.
13 min read

Оцінка RAG повинна починатися з витягування. Якщо правильні докази ніколи не досягають моделі, налаштування запитів та оновлення моделі лише роблять неправильний контекст більш переконливим. Тестуйте витягування, генерацію та операції як окремі етапи. Зберігайте невелику, версіоновану регресійну вибірку, яка зазнає невдачі, коли будь-який етап погіршується.

Рівень читача: Середній. Цей посібник передбачає, що ви знаєте, що генерація з підсиленням витягування, або RAG, знаходить документи перед тим, як запитати мовну модель про відповідь.

У цьому посібнику

Оцінка RAG має три окремі поверхні невдач

Застосування RAG є конвеєром. Один бал за фінальну відповідь приховує, який компонент потребує роботи.

ШарПитання для відповідіКорисні початкові метрики
---------
ВитягуванняЧи знайшла система та оцінила докази, які потрібні для питання?частота попадання або recall@k, precision@k, MRR або NDCG
ГенераціяЧи правильно модель використала ці докази?закріпленість, повнота, релевантність, утримання
ОпераціїЧи працював конвеєр за реальних обмежень?p95 затримка, вартість, частота помилок, актуальність, невдачі контролю доступу

Порядок має значення. Витягування є верхнім етапом. Генератор не може цитувати абзац політики, який ніколи не потрапив у його контекст, а плавна відповідь не доводить, що витягувальник працював.

Поточна документація оцінювачів RAG від Microsoft робить таке ж розділення в термінах реалізації. Вона надає заходи витягування документів для ранжованих доказів, а потім оцінює закріпленість, релевантність та повноту відповіді на рівні відповіді. Оцінювач витягування документів включає вірність, NDCG, XDCG, максимальну релевантність та судження про відсутню релевантність.

Схема витягування, генерації та операційних метрик у робочому процесі оцінки RAG
Схема витягування, генерації та операційних метрик у робочому процесі оцінки RAG

_Корисна оцінка RAG зберігає витягування, генерацію та операційні перевірки видимими як окремі шари._

Чому один загальний бал дає слабкі докази налагодження

Кілька дослідницьких рамок досягають одного й того ж практичного висновку з різних напрямків.

RAGChecker оцінює поведінку витягувальника та генератора окремо. Його автори порівняли вісім систем RAG у десяти доменах. Їхні метрики включають recall заяви та precision контексту для витягування, плюс використання контексту, чутливість до шуму, галюцинацію та вірність для генерації. У мета-оцінці з 280 пар загальний бал RAGChecker мав кореляцію Спірмена 0.609 з людськими вподобаннями. Два людських анотатори досягли 0.689. Автоматизована оцінка була корисною, але не усунула людський розрив.

Ragas запропонував безсистемні заходи для вірності, релевантності відповіді та релевантності контексту. У своїх порівняннях WikiEval угода з людськими вподобаннями становила 0.95 для вірності, 0.78 для релевантності відповіді та 0.70 для релевантності контексту. Автори виявили, що оцінка релевантності контексту є найскладнішою для судження. Ставтеся до цих цифр як до результатів цього дослідження, а не до універсальних показників точності для кожного судді, набору даних або домену.

Нова рамка, RAGe, додає вибір компонентів та телеметрію апаратного забезпечення. Вона оцінює конфігурації конвеєра через розбивку, вбудовування, витягування, зберігання та генерацію, одночасно відсікаючи комбінації, які перевищують обмеження затримки або VRAM. У статті за замовчуванням використовуються Natural Questions, NewsQA та TriviaQA та підтримуються користувацькі набори даних CSV або JSON. Її основний внесок полягає в способі порівняння якості з обмеженнями ресурсів; вона не встановлює одну конфігурацію, яка виграє в усіх доменах.

Разом ці статті підтримують діагностичний підхід. Вони не доводять, що певна метрика або бібліотека є достатньою для виробництва.

Створіть тестовий набір перед вибором метрик

Почніть з 40 до 60 запитань з домену, який ви обслуговуєте. Цей діапазон є практичною відправною точкою, а не статистичним законом. Він достатньо великий, щоб виявити кілька типів невдач і достатньо малий, щоб людина могла переглянути після кожної суттєвої зміни.

Включіть принаймні п’ять класів запитів:

Прямий пошук: один фрагмент містить відповідь.
Багато документів: відповідь вимагає доказів з двох або більше джерел.
Неоднозначний: система повинна запитати уточнення.
Невідповідний: корпус не містить достатньо доказів.
Свіжі або обмежені: правильний результат залежить від дати документа або дозволів користувача.

Логи виробництва можуть підказати запитання, але видаліть особисті дані та секрети перед додаванням прикладів до набору оцінки. Нещодавня дискусія практиків про оцінку RAG у виробництві також підкреслює фіксовані запити, версіоновані конфігурації та окремі перевірки витягування та генерації. Ця дискусія є анекдотичними доказами про проблеми робочого процесу, а не доказом того, що підхід працює в кожній системі.

Зберігайте судження проти стабільних ідентифікаторів документів разом з будь-яким скопійованим текстом. Межі фрагментів змінюються, коли ви налаштовуєте роздільник. Канонічний ідентифікатор джерела дозволяє тому ж тесту пережити цю зміну.

{ "query_id": "refund-window-01", "query": "Скільки часу має клієнт, щоб повернути невідкритий товар?", "relevant_document_ids": ["returns-policy-v4"], "required_claims": ["Невідкриті товари можуть бути повернуті протягом 30 днів."], "must_abstain": false, "allowed_roles": ["customer", "support"], "as_of": "2026-07-01" }

Для невідповідного випадку встановіть `relevant_document_ids` на порожній список і `must_abstain` на `true`. Для обмеженого випадку запустіть той же запит під двома ролями. Авторизований користувач повинен отримати документ; неавторизований користувач не повинен дізнатися зміст цього документа.

Команди, які створюють свій власний корпус і прикладний шар, повинні версіонувати контракт контенту разом з тестовим набором. Те саме правило стосується кастомних систем даних, створених за допомогою Next.js та AI: зміна схеми або контенту може змінити витягування, не торкаючись запиту.

Крок 1: оцініть витягування без генерації відповіді

Запустіть кожен запит через витягувальник і збережіть ранжовані ідентифікатори результатів, бали, мітки часу та рішення про доступ. Ще не викликайте мовну модель.

Виберіть метрики, які відповідають формі доказів

Використовуйте частоту попадання@k, коли одного правильного документа достатньо. Це запитує, чи з'явилося принаймні одне релевантне джерело в перших `k` результатах.

Використовуйте recall@k, коли відповідь вимагає кількох джерел. Це вимірює, скільки відомих релевантних документів з'явилося в перших `k`.

Використовуйте precision@k, коли нерелевантний контекст є дорогим або відволікаючим. Високий recall з низькою precision може затопити генератор шумом.

Використовуйте MRR, коли перший релевантний результат має найбільше значення. Використовуйте NDCG, коли кілька оцінених результатів повинні з'явитися в корисному порядку. Microsoft документує NDCG та пов'язані заходи ранжованого витягування в своєму оцінювачі, тоді як RAGChecker використовує recall заяви та precision контексту, щоб зв'язати витягнуті докази з вимогами, які потрібні для відповіді.

Не збирайте кожну метрику за замовчуванням. Виберіть одну метрику покриття та одну метрику ранжування або шуму. Додайте метрику лише тоді, коли вона змінює рішення.

Класифікуйте пропуски перед зміною моделі

Невдачі витягування зазвичай потрапляють у невелику групу:

Документ ніколи не був спожитий.
Документ існує, але його поточна версія застаріла.
Розбивка відокремила питання від необхідного факту.
Запит і документ використовують різний словник.
Фільтри метаданих видалили правильне джерело.
Ранжування помістило правильне джерело нижче `k`.
Контроль доступу відкрив або приховав неправильний документ.

Кожна невдача має різного власника. Повторне вбудовування не може виправити відсутній документ. Більша мовна модель не може виправити фільтр дозволів. Ререйкер може допомогти, коли докази присутні, але погано впорядковані.

Для додатків, пов'язаних з інструментами, зберігайте запит на витягування, фільтри, ідентифікатори результатів та відповідь інструмента в трасі. Це відповідає більш широкому шаблону контролю, описаному в робочих процесах розробників MCP: перевірте контракт, перехід стану та фінальний текст.

Крок 2: оцініть генерацію на основі фіксованих доказів

Якщо витягування відповідає своєму порогу, заморозьте витягнуті контексти та відтворіть їх через генератор. Це ізолює зміни запиту або моделі від змін індексу.

Вимірюйте чотири поведінки:

Закріпленість: кожне фактичне твердження у відповіді підтримується наданим контекстом.
Повнота: відповідь охоплює необхідні вимоги.
Релевантність: відповідь стосується питання користувача без нерелевантного матеріалу.
Утримання: система відмовляється або запитує уточнення, коли докази відсутні, суперечливі, застарілі або несанкціоновані.

Посилання на відповідь може допомогти з повнотою. Воно менш корисне як єдине джерело істини, оскільки кілька формулювань можуть бути правильними. Зберігайте необхідні вимоги та ідентифікатори підтримуючих документів, коли це можливо.

Запустіть другий тест генерації з навмисно неповним контекстом. Надійна система повинна виявити невизначеність, а не заповнити прогалини з пам'яті моделі. Це важливо, коли корпус містить приватні, змінювані або специфічні для домену факти.

Вибір моделі все ще впливає на якість відповіді, затримку та вартість, але це відбувається після витягування доказів. Якщо той самий фіксований контекст зазнає невдачі через генератори, порівняйте торги моделей та API. Якщо сам контекст неправильний, зміна генератора є марною справою.

Додайте випадки безпеки та конфлікту до набору витягування

Звичайні тести на релевантність пропускають суперечливі або конфліктуючі докази.

Стаття за липень 2026 року про поліморфне отруєння sybil у RAG тестувала групи лексично різних фрагментів, які підтримували ту ж відповідь, обрану атакуючим. У примусовій установці статті поліморфні фрагменти виробили 22.8% рівень захоплення порівняно з 4.0% для повторюваних моноформних фрагментів. Фільтрація за перетином токенів виявила всі моноформні кластери та жоден з поліморфних кластерів.

Результат не вимірює, як часто ця атака успішна у виробництві. Автори зафіксували змішування витягнутого на шість атакуючих фрагментів, два золотих фрагменти та два заповнювачі, щоб ізолювати поведінку читача. Вони також повідомляють про обмеження навколо одного класу атак, ризик забруднення набору даних, 500-запитну абляцію та верифікацію на основі LLM.

Корисний урок оцінки є вужчим: класифікуйте більше, ніж "правильний" і "ціль атакуючого". Стаття відстежує чотири результати:

золота відповідь,
захоплена відповідь,
утримання,
нерелевантне відхилення.

Додайте випадки конфлікту до свого власного набору. Включіть дубльовані вимоги з різними формулюваннями, застаріле джерело, яке суперечить поточній політиці, та джерело з нижчим рівнем довіри, яке суперечить авторитетному. Запишіть, чи система відповідає, утримується або відхиляється.

Калібруйте суддів LLM перед тим, як довіряти їхнім балам

Судді LLM роблять регресійне тестування дешевшим, особливо для закріпленості та покриття вимог. Вони залишаються залежностями програмного забезпечення з запитами, версіями моделей, поведінкою парсингу та відомими сліпими плямами.

Використовуйте чотири контролі:

Затемніть порівняння. Видаліть назви моделей та постачальників з виходу кандидатів.
Зберігайте частину з людськими мітками. Переглядайте принаймні невелику, стабільну підмножину для кожної зміни судді або запиту.
Версіонуйте суддю. Зберігайте модель судді, запит, температуру, парсер та реалізацію метрики.
Перевіряйте розбіжності. Виберіть випадки, близькі до порогу проходження, та випадки, коли два судді не згодні.

Дослідження Ragas та RAGChecker обидва показують, чому калібрування має значення. Угода варіюється за виміром, а автоматизовані кореляції залишаються нижчими за людську угоду. Числовий бал повинен викликати перевірку, а не закінчувати її.

Поточні випуски з відкритим кодом також показують активну роботу навколо оцінювачів. DeepEval 4.1.3, випущений 12 липня 2026 року, додав детерміністичні перевірки для циклів агентів та дозволів інструментів, виправивши інтеграцію Ragas. TruLens 2.9.0, випущений 23 липня, додав ансамблі суддів, тести критеріїв A/B, аналіз розподілу балів та генерацію золотих наборів. Активність випуску є доказом підтримуваної інженерної роботи, а не доказом того, що будь-яка з бібліотек є правильним вибором для вашого стеку.

Мінімальний регресійний робочий процес RAG

Використовуйте ту ж послідовність для кожної суттєвої зміни конвеєра:

Заморозьте версію тестового набору та знімок корпусу.
Запишіть версію розбивача, моделі вбудовування, налаштування індексу, фільтри, ререйкер, запит, генератор та версії суддів.
Запустіть лише витягування. Зупиніться, якщо покриття, ранжування, актуальність або перевірки доступу регресують.
Відтворіть затверджені контексти через генератор.
Оцініть закріпленість, повноту, релевантність та утримання.
Перегляньте частину з людськими мітками та порогові розбіжності.
Запишіть p50 та p95 затримку, вартість за запит, тайм-аути та порожні результати.
Змініть один компонент, а потім повторіть.

Стиснутий запис результатів може виглядати так:

{ "run_id": "rag-2026-07-26-b", "test_set": "support-v7", "corpus_snapshot": "2026-07-25T22:00:00Z", "retrieval": { "recall_at_5": 0.91, "ndcg_at_5": 0.84, "unauthorized_hits": 0 }, "generation": { "grounded_pass_rate": 0.94, "complete_pass_rate": 0.87, "abstention_pass_rate": 0.90 }, "operations": { "p95_ms": 1380, "cost_per_query_usd": 0.0042 } }

Ці числа є ілюстративними. Встановіть пороги на основі вашого ризику, базового рівня та вартості помилок. Медичний помічник знань та помічник пошуку продуктів не повинні ділити одну й ту ж контрольну точку.

Визначте виправлення з невдалого шару

СимптомДокази для перевіркиЙмовірна перша дія
---------
Відсутній релевантний документстатус споживання, канонічний ID, фільтривиправити споживання або метадані
Релевантний документ оцінений занадто низькотрасування ранжування, терміни запиту, балипротестувати переписування запиту, гібридне витягування або ререйкінг
Правильні докази плюс непідтримуване твердженнявідображення вимоги до контекступосилити інструкцію генерації або ворота закріпленості
Правильна, але неповна відповідьпокриття вимогпереглянути складання контексту або запит на відповідь
Відповіді, коли докази відсутнінегативний тест та трасування утриманнядодати ворота достатності доказів
Хороша якість, але повільначаси етапів та телеметрія ресурсівоптимізувати виміряний вузьке місце
Отримано несанкціоноване джерелоособа, фільтр, ідентифікатори результатівзаблокувати випуск та виправити авторизацію

Ця таблиця є точкою оцінки RAG: невдалий бал повинен визначити наступний експеримент. Якщо це не так, метрика занадто далеко від компонента, який потрібно змінити.

Що підтримують докази

Статті вимірювали конкретні системи та набори даних. RAGChecker виявив, що модульні метрики можуть корелювати з людськими вподобаннями та виявляти торги між витягувальником і генератором. Ragas виявив, що угода суддів варіюється за вірністю, релевантністю відповіді та релевантністю контексту. RAGe продемонстрував рамку, яка поєднує метрики якості з обмеженнями затримки та пам'яті. Бенчмарк отруєння показав, що одна обмежена установка атаки виробила чіткі шаблони захоплення, утримання та відхилення.

Докази не встановлюють універсальні пороги, універсально найкращого оцінювача або поширеність атак у виробництві. Моя практична інтерпретація полягає в тому, щоб розділити етапи, зберігати частину з людською калібровкою та вимагати, щоб кожна метрика вказувала на інженерну дію.

Перевірки вимог

ТвердженняПідтримуючі доказиПеревірена межа
---------
Витягування повинно вимірюватися окремо від якості відповідіОцінювачі RAG від Microsoft; RAGCheckerКерівництво з архітектури, а не універсальна гарантія
RAGChecker порівняв вісім систем у десяти доменахСтаття RAGCheckerРезультати залежать від його бенчмарку та налаштування метрик
Ragas повідомив про 0.95, 0.78 та 0.70 угоду людей за трьома вимірамиСтаття Ragas, Таблиця 1Специфічна для дослідження парна точність
RAGe включає телеметрію апаратного забезпечення та очищення конфігураційСтаття RAGeВнесок рамки, а не доказ найкращої конфігурації
Поліморфні фрагменти виробили 22.8% захоплення проти 4.0% у абляції статтіСтаття про отруєння sybilПримусова експозиція 6:2:2; не поширеність у виробництві
DeepEval та TruLens випустили нещодавні функції оцінкиОфіційні примітки до випуску GitHubСигнал підтримки, а не доказ прийняття або якості

Джерела

RAGe: A Retrieval-Augmented Generation Evaluation Framework — основна дослідницька стаття, 23 травня 2026 року.
RAGChecker: A Fine-grained Framework for Diagnosing Retrieval-Augmented Generation — основна дослідницька стаття та відкритий фреймворк.
Ragas: Automated Evaluation of Retrieval Augmented Generation — основна дослідницька стаття, переглянута 28 квітня 2025 року.
A Failure-Mode Benchmark for Polymorphic Sybil Poisoning in RAG — основна дослідницька стаття, 4 липня 2026 року.
Microsoft Foundry RAG evaluators — офіційна документація продукту.
Ragas metrics reference — офіційна документація фреймворку.
DeepEval 4.1.3 release notes — офіційний випуск репозиторію.
TruLens 2.9.0 release notes — офіційний випуск репозиторію.
How do you evaluate RAG quality in production? — дискусія практиків; анекдотичний сигнал.