Единица 3 / 11

Здроби и подготовка на документи

Добивки:

  • Нумерички проценете ја големината на парчето, преклопувањето и семантичките компромиси
  • Избор на соодветна стратегија за делење за различни типови документи (PDF, табела, код, дневник за разговор)
  • Зајакнете го квалитетот на пребарувањето и филтрирањето со додавање метаподатоци на секое парче

Ова е најзанемарениот, но најодлучен чекор во RAG: како го разложувате документот. Ова се нарекува распарчување. Дури и ако му го дадете истиот документ на истиот модел, поради лошото делење, пронаоѓањето враќа погрешно парче и моделот никогаш нема да даде одличен одговор. Во оваа единица, ги опфаќаме стратегиите за фрагментација, како да ги прилагодиме според типот на документот и како да додадете значајни метаподатоци на секој фрагмент.

Зошто се распарчуваме?

Постојат три причини. Прво, моделите со вградување го претвораат текстот до одредена должина во значаен вектор; Ако целото поглавје од 40 страници е преполно во еден вектор, значењето станува „заматено“. Второ, сакаме да му го дадеме на моделот само делот што е потребен како контекст; предавањето на целиот документ е скапо и го одвлекува вниманието. Трето, за да биде прецизно пребарувањето, единицата за пребарување мора да биде мала и фокусирана.

Значи парчето е најмалата единица за пронаоѓање. Не треба да биде премногу голем или премногу мал - точно.

Големина на парчиња и биланс на преклопување

Постојат две главни поставки: големина на парче (колку токени/зборови ќе има во парче) и преклопување (делот што го делат соседните парчиња).

Многу мали делови (на пр. 100 токени): фокусирани, но исклучени од контекстот. Тој вели „за 14 дена“, но колку се 14 дена останува во претходната реченица. Многу големи парчиња (на пр. 2000 токени): го зачувува контекстот, но многу нишки се мешаат; вградувањето се заматува и се спојуваат ирелевантни теми.

Преклопувањето го решава проблемот со границата. Ако реченицата паѓа точно на границата на два дела, таа се дели на два без преклопување и нејзиното значење се губи. Преклопувањето на 50-100 токени гарантира дека информациите што спаѓаат во рамките на лимитот остануваат недопрени барем во еден дел.

Големина на парче

Предност

Недостаток

соодветна содржина

Мали (100-250 токени)

Висока чувствителност, фокусирана

Контекстот може да се скрши

Најчесто поставувани прашања, кратки написи, дефиниции

Средно (300-600 токени)

Биланс; повеќето сценарија

-

Процедури, текстови на политики

Големи (800-1500 токени)

Интегритет на контекстот

матно вградување

Наратив, долги објаснувања

Совет: Ако не знаете од каде да започнете, почнете со 400-500 токени парче и 50-80 токени преклопување; потоа измерете и приспособете со свои податоци. „Вистинската“ големина не е универзална, зависи од контекстот.

Стратегии за кршење

Фиксна големина: го отсекува текстот на секои N токени. Едноставно е и брзо, но може да ја прекине средната реченица.

Врз основа на сепаратор (рекурзивен/сепаратор): Дели според параграф, а потоа граници на реченицата; Подобро го зачувува интегритетот на значењето. Повеќето системи за производство започнуваат со ова.

Семантичко раздвојување: Ги гледа вметнувањата на речениците и ги дели таму каде што се случува промената на предметот. Тоа е најквалитетниот, но најскапиот метод; Со големи количини, трансакциските трошоци се зголемуваат.

Structure-ware: Користи структура на документи како што се наслови, делови, табели. На пример, поделбата на Markdown документ по наслови гарантира дека секој дел носи свој наслов.

Адаптација по тип на документ

Не е секој документ ист. Стратегијата варира според типот:

  • PDF/текст на политика: базиран на обележувачи, средна големина. Исчистете ги повторувањата на горниот/долниот дел на страницата (заглавие/футер).
  • Табели: Не вадете ја линијата од контекст; чувајте го секој ред со информации за заглавието („Ставка: X, Цена: Y, залиха: Z“). Конвертирањето на необработената табела во обичен текст често е од суштинско значење.
  • Шифра: Поделено по граници на функција/класа; Не отсечете некоја функција од патот.
  • Снимање разговор/билет: поделено по порака или круг на разговор; Одржувајте знаење за тоа кој што кажал.

# делење (концептуални) делови засновани на заграда = bol( текст, целна_големина=450, # преклопување на токен=70, # загради за токени=["\n\n", "\n", ". ", " "] # параграф прв, збор последен)

Додајте метаподатоци на секоја песна

Чинењето не е само „подели“; е да се збогати секое парче. Секоја ознака што ќе ја прикачите на патеката вреди во злато за идното филтрирање и наведување извори.

# Збогатен дел (концептуален){ „текст“: „Годишниот платен одмор е 14 дена со 1-5 години работен стаж...“, „метаподатоци“: { „извор“: „ik_el_kitabi_v7.pdf“, „дел“: „5.2 Годишен одмор“, „страница“: 23, „датум“: „ИК: 06:20“ "внатрешна" }}

Друга моќна техника е додавање контекстуално заглавие: пишување на насловот на поглавјето на кое му припаѓа на почетокот на секое парче. Така, дури и разединето парче како „За 14 дена“ е и подобро вградено и позначајно како „Годишен одмор - 14 дена“.

Слабо крцкање / Силно крцкање

Слаб (слепа хардрез, без метаподатоци):

Скратете го текстот на секои 1000 знаци. Чувајте го само текстот.# Резултат: табелите се поделени на средина, „14 дена“ останува без контекст,# не се знае од кој документ е, не може да се направи филтер.

Моќен (свесен за структурата + заглавие + метаподатоци):

Поделете го документот по наслови; додадете наслов на делот на секој дел; прикачете извор, страница, датум и метаподатоци за приватност; конвертирате табели во обичен текст со нивните заглавија.# Резултат: фокусиран, контекстуален, филтрирачки, изворно.

Три мини футроли

Случај 1 - Сликарска катастрофа. Финансиски тим го подели ценовникот од 200 страници со слепо тешко сечење; Редовите на табелата беа поделени по случаен избор. „Која е цената на производот X? Моделот прочита погрешна линија и даде погрешна цена (9 од 12 случаи се погрешни). Кога ги конвертирав редовите на табелата во обичен текст во формат „Производ: … | Цена: … | Единица: …“, грешката се намали на 0 од 12.

Случај 2 - Екстремно големо парче. Во вики, секоја страница е направена од еден дел (некои велат 3.000 токени). Вградувањето е заматено бидејќи на една страница има „отпуст“, „прекувремена работа“ и „платен список“; Делот за работно време влезе во игра и во однос на прашањето за отсуство. Кога страниците беа поделени на средна големина по наслов, recall@5 се зголеми од 64% на 91%.

Случај 3 — Скратена реченица без преклопување. 250 токен фиксиран за правен тим, без преклопување. Критичката дефиниција падна токму на границата на два дела и се подели на два дела; Ниту едното ниту другото не го содржат целосниот одговор. Кога беше додадено преклопување на токени од 60, истата дефиниција остана недопрена во едно парче и точниот одговор беше вратен.

Вообичаени грешки

  • Слеп фиксен пресек: Ги дели речениците и табелите на средина; се губи значењето.
  • Оставање на преклопувањето на нула: Информациите што паѓаат на границата се поделени и изгубени.
  • Недодавање метаподатоци: филтрирањето и прикажувањето на изворот стануваат невозможни.
  • Оставање необработени табели: Моделот не може да ја реши структурата на табелата; Претворете ги линиите во обичен текст.
  • Наметнување на една стратегија: PDF, кодот и табелата не се поделени со ист метод; Прилагодете се на жанрот.
Внимание: Не го поставувајте Chunking еднаш и заборавете го. Повторно измерете го квалитетот на преземањето како што пристигнуваат нови типови документи (билети од нов систем, скенирани PDF-датотеки). Лошите влезни податоци значат лош одговор („ѓубре влегува, ѓубре надвор“).

Сумирано

  • Парчето е најмалата единица за пронаоѓање; Ниту преголем, ниту премал - треба да се избалансира според содржината.
  • Големината на парчето покажува рамнотежа фокус-контекст; Преклопувањето управува со губење на границата.
  • Распарчувањето засновано на загради и свесно за структурата е почетна точка на повеќето системи за генерирање; семантичкото делење е квалитетно, но скапо.
  • Видовите како табела, скрипта и разговор бараат свои стратегии; Претворете ги табелите во обичен текст.
  • Додадете извор/датум/поглавје/метаподатоци за приватност и наслов на делот на секоја песна; Ова е основата на филтрирањето и цитирањето.

Задача за апликација

Поделете дел од документот што ќе го изберете на три различни начини: (1) мали парчиња од 200 токени, (2) средни парчиња од 500 токени (70 токени се преклопуваат), (3) единечни големи парчиња. Поставете ги истите 3 прашања за секоја стратегија, рачно означете кое парче да го внесете и запишете го образложението за тоа која стратегија најдобро функционира за тој документ. Потоа додадете најмалку четири полиња за метаподатоци и „наслов на поглавје“ на секоја песна. Ако документот содржи табела, претворете го редот на табелата во обичен текст во формат „поле: вредност“.

листа за проверка

  • [ ] Можам да кажам дека парчето е најмалата единица за пронаоѓање, а големината е рамнотежа фокус-контекст.
  • [ ] Знам зошто Преклопувањето спречува губење на границата.
  • [ ] Можам да разликувам делење засновано на загради, семантичко и структурно свесно.
  • [ ] Можам да ја прилагодам стратегијата за табела, код и разговор.
  • [ ] Го засилувам пребарувањето со додавање на метаподатоци и наслов на поглавје на секоја песна.