← 返回列表

Серія питань з AI 11: Як налаштувати RAG?

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


一、Налаштування на стороні індексації даних (підвищення якості «бази знань»)

Це найчастіше ігноруване, але найефективніше місце.

Пункт налаштування Проблемне явище Конкретний підхід Показник ефекту
Аналіз документів Таблиці, блок-схеми в PDF ігноруються, або текст має неправильне кодування, або порядок порушено. Заміна на кращу бібліотеку аналізу (наприклад, unstructured, режим збереження макета pypdf); для таблиць використовуйте pandas для вилучення та перетворення в Markdown. Коефіцієнт відклику +5~15%
Розмір фрагмента тексту Занадто малий chunk втрачає контекст (наприклад, «його зростання доходу цього року» — втрата вказівки «його»); занадто великий chunk призводить до багато шуму в пошуку. Експериментуйте з різними розмірами chunk (256/512/768 токенів), перекриття overlap 10~20%; для довгих документів розрізайте за семантичними межами (абзаци/заголовки), а не за фіксованою довжиною. Коефіцієнт влучень / вірність
Додавання метаданих Знайдено відповідний фрагмент, але неможливо відстежити джерело або час, або потрібна фільтрація за областю. Додайте метадані до кожного chunk: source (ім'я файлу/URL), timestamp, page_num, doc_type. Використовуйте фільтри під час пошуку (наприклад, doc_type == 'legal'). Точність фільтрації
Вибір моделі вбудовування Універсальні embedding погано працюють у вузьких сферах (медицина, код, право). Використовуйте модель, донавчену на предметній області (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct); або донавчіть власну модель embedding (з triplet loss). MRR@10 пошуку +10~20%

二、Налаштування на стороні пошуку (зробити «перегляд книги» точнішим)

Пошук визначає якість «довідкового матеріалу», який подається LLM.

Пункт налаштування Проблемне явище Конкретний підхід Ефект
Гібридний пошук Векторний пошук не може відповідати точним термінам (наприклад, модель продукту ABC-123), ключовий пошук не розуміє синоніми. Одночасно використовуйте векторний пошук (семантика) та BM25 (ключові слова), об'єднуйте через зважування (наприклад, 0.7вектор + 0.3BM25) або rerank. Коефіцієнт відклику +10~25%
Переранжування (Rerank) Перші кілька результатів векторного пошуку не обов'язково найрелевантніші, десятий може бути кращим. Використовуйте модель cross‑encoder (наприклад, BGE‑reranker-v2, Cohere Rerank) для повторного оцінювання кандидатів (наприклад, перших 20) і візьміть top‑K. Значне підвищення коефіцієнта влучень (особливо top‑1)
Переписування запиту Користувацьке питання нечітке або з багатообігового діалогу з нечіткими посиланнями («Яка його ціна?»). Використовуйте LLM для перетворення оригінального питання у форму, більш придатну для пошуку (наприклад, «Скільки коштує iPhone 15?»); або доповніть історією діалогу. Коефіцієнт відклику +5~15%
HyDE Користувацьке питання надто коротке або абстрактне (наприклад, «Розкажи про фотосинтез»), прямий пошук поганий. Спочатку заставте LLM згенерувати гіпотетичну відповідь, а потім використовуйте цю відповідь для пошуку документів. Підходить для відкритої області, але не для точних фактичних запитань
Налаштування кількості пошуку Top‑K Занадто мале K може пропустити ключову інформацію; занадто велике K збільшує витрати токенів та шум. Експериментуйте з K=3/5/10, спостерігайте за балансом коефіцієнта відклику та точності відповіді. Компроміс між ефективністю та результатом

三、Налаштування на стороні генерації (щоб LLM добре використовував довідковий матеріал)

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

Пункт налаштування Проблемне явище Конкретний підхід Ефект
Інженерія промптів LLM ігнорує знайдену інформацію або вигадує. Чітка інструкція: «Відповідайте виключно на основі наданих довідкових матеріалів. Якщо матеріалу недостатньо або він нерелевантний, відповідайте «Недостатньо інформації».» Додайте few‑shot examples, що показують, як цитувати джерела. Вірність +20~40%
Стиснення контексту Знайдений вміст занадто довгий (перевищує контекстне вікно моделі) або містить багато шуму. Використовуйте LLMLingua або селективне стиснення контексту, зберігаючи найрелевантніші речення перед подачею LLM. Зниження ризику втрати інформації
Оновлення моделі LLM Маленька модель (7B) не здатна до складного міркування або не пам'ятає довгий контекст. Замініть на потужнішу модель (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). Значне підвищення точності міркувань
Потоковий вивід та цитування Користувач не може перевірити достовірність відповіді. При генерації змусьте LLM виводити [citation:1], що відповідає номеру знайденого документа. На стороні бекенду додайте посилання на оригінал. Довіра користувача + можливість налагодження
Калібрування відмови від відповіді Модель вигадує, коли не слід відповідати, або каже «не знаю», коли варто відповісти. Встановіть поріг схожості: якщо косинусна схожість між top‑1 chunk та питанням нижче 0.7, підкажіть LLM «матеріал нерелевантний». Зниження рівня галюцинацій

四、Оцінка та ітерація (знати, куди налаштовувати)

Без вимірювання неможлива оптимізація.

Пункт налаштування Підхід Показник
Створення оціночного набору Підготуйте 100~300 реальних користувацьких питань + правильні відповіді + правильні ID знайдених документів. Охоплює різні складності та інтенції.
Автоматична оцінка Використовуйте RAGAS (Faithfulness, Answer Relevance, Context Recall) або TruLens. Три основні показники: вірність, релевантність відповіді, відклик контексту.
Ручна оцінка Щотижня випадково перевіряйте 20 bad case, аналізуйте типи помилок (помилка пошуку / помилка генерації / відсутність у базі знань). Пріоритезація покращень.
A/B тестування У виробничому середовищі тестуйте різні стратегії пошуку на різних групах (наприклад, BM25 vs гібридний пошук). Онлайн-показники: задоволеність користувачів, відсоток відповідей «немає відповіді».

五、Практичний досвід, який можна згадати на співбесіді (бонусні бали)

«У моєму проекті RAG початковий коефіцієнт влучень був лише 67%. Я зробив три речі:
1. Змінив фіксований розмір фрагмента (1024) на динамічне семантичне розрізання (за заголовками + абзацами), коефіцієнт влучень підвищився до 74%;
2. Додав гібридний пошук (векторний + BM25) і невелику модель rerank, коефіцієнт влучень піднявся до 83%;
3. Оптимізував промпт і обов'язково вимагав «[Відповідну інформацію не знайдено]», рівень галюцинацій знизився з 22% до менш ніж 5%.

Крім того, ми створили конвеєр безперервної оцінки: перед кожною зміною запускали оцінку RAGAS для 200 питань, щоб переконатися у відсутності деградації.»


Остаточний підсумок: повна дорожня карта налаштування RAG

Шар даних ─→ очищення документів, оптимізація фрагментації, покращення метаданих, доменне embedding
Шар пошуку ─→ гібридний пошук, rerank, переписування запиту, HyDE, налаштування Top-K
Шар генерації ─→ покращення промпту, вимоги до інструкцій, стиснення, цитування, поріг відмови
Шар оцінки ─→ набір оцінювання, RAGAS, ручний аналіз, A/B експерименти

评论

暂无已展示的评论。

发表评论(匿名)