Приборкання довгих документів за допомогою LLM
Я створив систему для відповідей на запитання з 100-сторінкових технічних PDF-файлів.
Прості скрипти не справлялися. Я тижнями боровся з лімітами токенів та високою вартістю.
Моя перша спроба полягала у використанні GPT-4 з повним текстом. Це працювало для 10 сторінок. На 100 сторінках я вперся в ліміт токенів. Модель забувала деталі в середині тексту. Витрати були занадто високими.
Я спробував такі методи:
- Базове розбиття на фрагменти (chunking): модель обирала не ті розділи. Вона втрачала контекст.
- Map-reduce: я втрачав конкретні деталі.
- Ковзні вікна (sliding windows): це було занадто повільно та дорого.
Я імітую те, як читають люди. Ми переглядаємо зміст. Потім читаємо конкретні розділи.
Ось новий робочий процес:
- Створіть ієрархію. Використовуйте LLM для створення короткого резюме для кожного фрагмента.
- Зберігайте резюме та повний текст у векторній базі даних.
- Використовуйте гібридний пошук. Поєднуйте ключові слова та семантичний пошук.
- Спочатку витягуйте 3 найкращі резюме.
- Отримуйте повний текст для цих резюме.
- Передавайте цей контекст в LLM.
Результати:
- Витрати знизилися на 70%.
- Технічні терміни тепер передаються точно.
- Точність покращилася.
Поради для вашого налаштування:
- Використовуйте GPT-3.5 для резюме.
- Використовуйте GPT-4 для фінальної відповіді.
- Створіть тестовий набір даних на ранньому етапі.
- Використовуйте метод "stuffing" (передачу всього тексту в промпт) для документів до 20 сторінок.