Табыстар:
- Бөлшек өлшемін, қабаттасуды және семантикалық түйіндерді бөлуді сандық түрде бағалаңыз
- Әр түрлі құжат түрлеріне сәйкес бөлшектеу стратегиясын таңдау (PDF, кесте, код, чат журналы)
- Әр бөлікке метадеректерді қосу арқылы іздеу сапасын және сүзуді күшейтіңіз
Бұл RAG-дағы ең назардан тыс қалған, бірақ ең шешуші қадам: құжатты қалай бұзу керек. Бұл бөлшектеу деп аталады. Бір үлгіге бірдей құжатты берсеңіз де, қате бөлшектену салдарынан іздеу дұрыс емес бөлікті қайтарады және үлгі ешқашан тамаша жауап бермейді. Бұл бөлімде біз фрагментация стратегияларын, оларды құжат түріне қарай қалай бейімдеуге болатынын және әрбір фрагментке мағыналы метадеректерді қалай қосу керектігін қарастырамыз.
Біз неге ұсақтаймыз?
Оның үш себебі бар. Біріншіден, ендіру модельдері белгілі бір ұзындыққа дейінгі мәтінді мағыналы векторға түрлендіреді; Бүкіл 40 беттік тарау бір векторға сығымдалса, мағына «бұлыңғыр» болады. Екіншіден, біз үлгіге контекст ретінде қажет бөлігін ғана бергіміз келеді; Құжатты толығымен тапсыру қымбат және алаңдатады. Үшіншіден, іздеу дәл болу үшін іздеу бірлігі шағын және шоғырлануы керек.
Сонымен, кесек - іздеудің ең кіші бірлігі. Ол тым үлкен немесе тым кішкентай болмауы керек - дұрыс.
Бөлшек өлшемі және қабаттасу балансы
Екі негізгі параметр бар: бөлік өлшемі (бір бөлікте қанша таңбалауыш/сөз болады) және қабаттасу (көрші бөліктермен бөлісетін бөлік).
Өте кішкентай бөліктер (мысалы, 100 таңбалауыш): фокусталған, бірақ контекстен ажыратылған. «14 күнге» дейді, бірақ 14 күннің несі алдыңғы сөйлемде қалды. Өте үлкен бөліктер (мысалы, 2000 таңбалауыш): контекстті сақтайды, бірақ көптеген ағындар араласады; кірістіру шатастырылып, маңызды емес тақырыптар біріктіріледі.
Қабаттасу шекара мәселесін шешеді. Сөйлем екі бөліктің шекарасына дәл келсе, ол қабаттаспай екіге бөлініп, мағынасы жойылады. 50-100 таңбалауыштың қабаттасуы шектеу шегіне түсетін ақпараттың кем дегенде бір бөлігінде өзгеріссіз қалуын қамтамасыз етеді.
Бөлшек өлшемі
Артықшылық
Кемшілігі
сәйкес мазмұн
Шағын (100-250 токен)
Жоғары сезімталдық, шоғырланған
Мәтінмән үзілуі мүмкін
Жиі қойылатын сұрақтар, қысқа мақалалар, анықтамалар
Орташа (300-600 токен)
Баланс; көптеген сценарийлер
—
Процедуралар, саясат мәтіндері
Үлкен (800-1500 токен)
Мәтінмәннің тұтастығы
бұлыңғыр кірістіру
Баяндау, ұзақ түсіндіру
Кеңес: Неден бастау керектігін білмесеңіз, 400-500 таңбалауыш бөлігінен және 50-80 таңбалауыш қабаттасудан бастаңыз; содан кейін өз деректеріңізбен өлшеп, реттеңіз. «Дұрыс» өлшем әмбебап емес, ол контекстке байланысты.
Бөлшектеу стратегиялары
Бекітілген өлшем: мәтінді әрбір N таңбалауышты кеседі. Бұл қарапайым және жылдам, бірақ сөйлемнің ортасын үзуі мүмкін.
Бөлгіш негізіндегі (рекурсивті/бөлгіш): абзацқа, содан кейін сөйлем шекараларына сәйкес бөледі; Ол мағынаның тұтастығын жақсырақ сақтайды. Көптеген өндірістік жүйелер осыдан басталады.
Семантикалық топтама: сөйлемдердің кірістіруіне қарайды және оларды тақырып өзгеретін жерде бөледі. Бұл ең сапалы, бірақ ең қымбат әдіс; Үлкен көлемдермен транзакциялық шығындар өседі.
Құрылымды біледі: Тақырыптар, бөлімдер, кестелер сияқты құжат құрылымын пайдаланады. Мысалы, Markdown құжатын тақырыптар бойынша бөлу әрбір бөліктің өз тақырыбын тасымалдауын қамтамасыз етеді.
Құжат түрі бойынша бейімдеу
Әрбір құжат бірдей бола бермейді. Стратегия түріне қарай өзгереді:
- PDF/саясат мәтіні: бетбелгіге негізделген, орташа өлшемді. Беттің жоғарғы/төменгі қайталануларын тазалау (үстіңгі/төменгі деректеме).
- Кестелер: сызықты контекстен шығармаңыз; әрбір жолды тақырып ақпаратымен сақтаңыз («Телемент: X, бағасы: Y, қор: Z»). Шикі кестені кәдімгі мәтінге түрлендіру жиі маңызды.
- Код: Функция/сынып шекаралары бойынша бөлу; Функцияны жолдан кесіп алмаңыз.
- Чат/билет жазу: Хабарлама немесе сөйлесу раунды бойынша бөлу; Кімнің не айтқаны туралы білімдерін сақтау.
# жақшаға негізделген түйіндеу (концептуалды) бөліктер = bol( text, target_size=450, # таңбалауыш қабаттасу=70, # таңбалауыш жақша =["\n\n", "\n", ". ", " "] # абзац бірінші, соңғы сөз)
Әрбір трекке метадеректер қосыңыз
Бөліну жай ғана «бөлу» емес; әрбір бөлікті байыту болып табылады. Жолға тіркейтін әрбір тег болашақта сүзгілеу және дереккөзге сілтеме жасау үшін алтынмен бағаланады.
# Байытылған бөлік (концептуалды){ "мәтін": "Жыл сайынғы ақылы еңбек демалысы 1-5 жыл еңбек өтілі бар 14 күнді құрайды...", "метадеректер": { "қайнар көз": "ik_el_kitabi_v7.pdf", "бөлім": "5.2 Жылдық еңбек демалысы", "бет": 23, "дата": "02-бөлім:" IK: "02-бөлім:" "құпиялылық": "ішкі" }}
Тағы бір күшті әдіс - контекстік тақырыпты қосу: әрбір бөлімнің басында ол тиесілі тараудың тақырыбын жазу. Осылайша, «14 күн бойы» сияқты бір-бірінен ажыратылған туындының өзі «Жылдық демалыс - 14 күн» сияқты жақсырақ енгізілген және мағыналырақ.
Әлсіз болғандықтан / Күшті Чункинг
Әлсіз (соқыр қатты кесу, метадеректер жоқ):
Мәтінді әр 1000 таңбадан қысқартыңыз. Тек мәтінді сақтаңыз.# Нәтиже: кестелер ортасынан бөлінген, «14 күн» контекссіз қалады,# оның қай құжаттан шыққаны белгісіз, сүзгі жасау мүмкін емес.
Күшті (құрылымнан хабардар + тақырып + метадеректер):
Құжатты тақырыптар бойынша бөліңіз; әрбір бөлікке бөлім тақырыбын қосу;көзі, бет, күн және құпиялылық метадеректерін тіркеңіз; кестелерді тақырыптарымен кәдімгі мәтінге түрлендіру.# Нәтиже: бағытталған, контекстік, сүзілетін, бастапқы.
Үш шағын корпус
1-жағдай – кескіндеме апаты. Қаржы тобы 200 беттік прайс-парақшаны соқыр қатаң кесу арқылы бөлді; кесте жолдары кездейсоқ бөлінген. «Х тауарының бағасы қандай?» Модель қате жолды оқып, қате баға берді (12 жағдайдың 9-ы қате). Кесте жолдарын «Өнім: … | Бағасы: … | Бірлік: …» пішімінде кәдімгі мәтінге түрлендіргенде, қате 12-ден 0-ге дейін төмендеді.
2-жағдай - Өте үлкен кесек. Викиде әрбір бет бір бөліктен тұрады (кейбіреулер 3000 токен дейді). Енгізу бұлыңғыр, себебі бір бетте «демалыс», «қосымша жұмыс» және «еңбекақы» бар; Демалыс мәселесіне қатысты жұмыс уақыты бөлімі де ойнады. Беттерді тақырып бойынша орташа өлшемге бөлгенде, recall@5 64%-дан 91%-ға дейін өсті.
3-жағдай — Қаптаусыз қысқартылған сөйлем. Заңды топ үшін 250 таңбалауышы бекітілген кесінді, қабаттасу жоқ. Сыни анықтама екі бөліктің шекарасына түсіп, екіге бөлінді; Біреуінде де, екіншісінде де толық жауап жоқ. 60 токеннің қабаттасуы қосылғанда, бірдей анықтама бір бөлікте өзгеріссіз қалды және дұрыс жауап қайтарылды.
Жалпы қателер
- Соқыр бекітілген кесу: Сөйлемдер мен кестелерді ортаға бөледі; мағынасы жоғалады.
- Қабылдауды нөлде қалдыру: шекараға түсетін ақпарат бөлінеді және жоғалады.
- Метадеректерді қоспау: сүзу және бастапқы көрсету мүмкін емес.
- Кестелерді өңделмеген күйде қалдыру: Үлгі кесте құрылымын шеше алмайды; Жолдарды кәдімгі мәтінге түрлендіру.
- Бір стратегияны енгізу: PDF, код және кесте бірдей әдіспен бөлінбейді; Жанрға бейімделу.
Абайлаңыз: Chunking бір рет орнатпаңыз және оны ұмытыңыз. Жаңа құжат түрлері (жаңа жүйенің билеттері, сканерленген PDF файлдары) келген кезде іздеу сапасын қайта өлшеңіз. Нашар кіріс деректері нашар жауапты білдіреді («қоқыс ішке, қоқыс шығару»).
Қысқаша айтқанда
- Chunk – іздеудің ең кіші бірлігі; Тым үлкен де емес, тым кішкентай да емес – ол мазмұнға сәйкес теңдестірілген болуы керек.
- Бөлшек өлшемі фокус-контекст тепе-теңдігін көрсетеді; Қабаттасу шекараның жоғалуын басқарады.
- Кронштейнге негізделген және құрылымды білуге көптеген буындық жүйелердің бастапқы нүктесі болып табылады; семантикалық жинақтау сапасы жақсы, бірақ қымбат.
- Кесте, сценарий және чат сияқты түрлер өздерінің стратегияларын талап етеді; Кестелерді кәдімгі мәтінге түрлендіру.
- Әрбір трекке көз/күн/тарау/құпиялылық метадеректерін және бөлім тақырыбын қосыңыз; Бұл сүзгілеу мен дәйексөзге негіз болады.
Қолданбалы тапсырма
Таңдалған құжаттың бір бөлігін үш түрлі жолға бөліңіз: (1) 200 таңбалауыштың кішкене бөліктері, (2) 500 таңбалауыштың орташа бөліктері (70 токеннің қабаттасуы), (3) жалғыз үлкен бөліктер. Әрбір стратегия үшін бірдей 3 сұрақты қойыңыз, қай бөлікті әкелу керектігін қолмен белгілеңіз және сол құжат үшін қай стратегия жақсы жұмыс істейтінін дәлелдеуді жазыңыз. Содан кейін әрбір трекке кемінде төрт метадеректер өрісін және «тарау тақырыбын» қосыңыз. Құжатта кесте болса, кесте жолын «өріс: мән» пішіміндегі кәдімгі мәтінге түрлендіріңіз.
бақылау парағы
- [ ] Мен кесек - іздеудің ең кіші бірлігі және өлшем - фокус-контекст балансы екенін айта аламын.
- [ ] Мен қабаттасу шекараның жоғалуын болдырмайтынын білемін.
- [ ] Мен жақшаға негізделген, семантикалық және құрылымды ескеретін түйінді ажырата аламын.
- [ ] Мен кесте, код және чат үшін стратегияны бейімдей аламын.
- [ ] Әр трекке метадеректер мен тарау тақырыбын қосу арқылы іздеуді күшейтемін.