Приборкання довгих документів за допомогою LLM

Я створив систему для відповідей на запитання з 100-сторінкових технічних PDF-файлів.

Прості скрипти не справлялися. Я тижнями боровся з лімітами токенів та високою вартістю.

Моя перша спроба полягала у використанні GPT-4 з повним текстом. Це працювало для 10 сторінок. На 100 сторінках я вперся в ліміт токенів. Модель забувала деталі в середині тексту. Витрати були занадто високими.

Я спробував такі методи:

  • Базове розбиття на фрагменти (chunking): модель обирала не ті розділи. Вона втрачала контекст.
  • Map-reduce: я втрачав конкретні деталі.
  • Ковзні вікна (sliding windows): це було занадто повільно та дорого.

Я імітую те, як читають люди. Ми переглядаємо зміст. Потім читаємо конкретні розділи.

Ось новий робочий процес:

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

Результати:

  • Витрати знизилися на 70%.
  • Технічні терміни тепер передаються точно.
  • Точність покращилася.

Поради для вашого налаштування:

  • Використовуйте GPT-3.5 для резюме.
  • Використовуйте GPT-4 для фінальної відповіді.
  • Створіть тестовий набір даних на ранньому етапі.
  • Використовуйте метод "stuffing" (передачу всього тексту в промпт) для документів до 20 сторінок.

Джерело: https://dev.to/__c1b9e06dc90a7e0a676b/how-i-finally-tamed-long-document-analysis-with-llms-it-wasnt-simple-chunking-5ed3