Qazanclar:
- Parçanın ölçüsünü, üst-üstə düşməsini və semantik parçalanma mübadilələrini ədədi olaraq qiymətləndirin
- Müxtəlif sənəd növləri (PDF, cədvəl, kod, söhbət jurnalı) üçün uyğun parçalanma strategiyasının seçilməsi
- Hər bir hissəyə metadata əlavə etməklə axtarış keyfiyyətini və filtrləməni gücləndirin
Bu, RAG-da ən diqqətdən kənarda qalan, lakin ən həlledici addımdır: sənədi necə parçalayırsınız. Buna parçalanma deyilir. Eyni sənədi eyni modelə versəniz belə, səhv parçalanma səbəbindən axtarış səhv parçanı qaytarır və model heç vaxt əla cavab verməyəcək. Bu bölmədə biz parçalanma strategiyalarını, onları sənəd növünə uyğun olaraq necə uyğunlaşdırmağı və hər bir fraqmentə mənalı metadata əlavə etməyi əhatə edirik.
Niyə parçalayırıq?
Üç səbəb var. Birincisi, yerləşdirmə modelləri müəyyən uzunluğa qədər mətni mənalı vektora çevirir; Əgər bütövlükdə 40 səhifəlik fəsil bir vektora sığışdırılsa, məna "bulanıq" olur. İkincisi, biz modelə yalnız kontekst kimi lazım olan hissəni vermək istəyirik; bütün sənədin təhvil verilməsi bahalı və diqqəti yayındırır. Üçüncüsü, axtarışın dəqiq olması üçün axtarış vahidi kiçik və diqqət mərkəzində olmalıdır.
Beləliklə, yığın ən kiçik axtarış vahididir. Çox böyük və ya çox kiçik olmamalıdır - düzdür.
Parça ölçüsü və üst-üstə düşmə balansı
İki əsas parametr var: yığın ölçüsü (bir yığında neçə işarə/söz olacaq) və üst-üstə düşmə (qonşu parçaların paylaşdığı hissə).
Çox kiçik parçalar (məsələn, 100 token): fokuslanmış, lakin kontekstdən ayrılmışdır. “14 günə” deyir, amma əvvəlki cümlədə 14 gün nə qalıb. Çox böyük parçalar (məsələn, 2000 token): konteksti qoruyur, lakin bir çox mövzular qarışdırılır; yerləşdirmə qarışıq olur və aidiyyətsiz mövzular bir araya gəlir.
Üst-üstə düşmə sərhəd problemini həll edir. Əgər cümlə tam olaraq iki hissənin sərhəddinə düşərsə, üst-üstə düşmədən iki yerə bölünür və mənası itir. 50-100 tokenin üst-üstə düşməsi limit daxilində olan məlumatın ən azı bir hissədə toxunulmaz qalmasını təmin edir.
Parça ölçüsü
Üstünlük
Mənfi cəhəti
uyğun məzmun
Kiçik (100-250 token)
Yüksək həssaslıq, diqqət
Kontekst pozula bilər
Tez-tez verilən suallar, qısa məqalələr, təriflər
Orta (300-600 token)
Balans; əksər ssenarilər
—
Prosedurlar, siyasət mətnləri
Böyük (800-1500 token)
Kontekst bütövlüyü
bulanıq yerləşdirmə
Hekayə, uzun izahatlar
İpucu: Hardan başlayacağınızı bilmirsinizsə, 400-500 token yığını və 50-80 token üst-üstə düşməsi ilə başlayın; sonra öz məlumatlarınızla ölçün və tənzimləyin. "Doğru" ölçü universal deyil, kontekstdən asılıdır.
Parçalanma strategiyaları
Sabit ölçülü: mətni hər N tokendən kəsir. Sadə və sürətlidir, lakin cümlənin ortasını kəsə bilər.
Ayırıcı əsaslı (rekursiv/ayırıcı): Paraqrafa və sonra cümlə sərhədlərinə görə bölür; Mənanın bütövlüyünü daha yaxşı qoruyur. Əksər istehsal sistemləri bununla başlayır.
Semantik parçalanma: Cümlələrin yerləşdirilməsinə baxır və onları mövzu dəyişikliyinin baş verdiyi yerdə bölür. Bu, ən keyfiyyətli, lakin ən bahalı üsuldur; Böyük həcmlərlə əməliyyat xərcləri artır.
Strukturdan xəbərdar: Başlıqlar, bölmələr, cədvəllər kimi sənəd strukturundan istifadə edir. Məsələn, Markdown sənədini başlıqlara bölmək hər bir hissənin öz başlığını daşımasını təmin edir.
Sənəd Növü üzrə Uyğunlaşma
Hər sənəd eyni deyil. Strategiya növünə görə dəyişir:
- PDF/siyasət mətni: Əlfəcin əsaslı, orta ölçülü. Səhifənin yuxarı/aşağı təkrarlarını silin (başlıq/altbilgi).
- Cədvəllər: xətti kontekstdən çıxarmayın; hər bir sətir başlıq məlumatı ilə saxlayın ("Məhz: X, Qiymət: Y, Səhm: Z"). Xam cədvəli düz mətnə çevirmək çox vaxt vacibdir.
- Kod: Funksiya/sinif sərhədlərinə görə bölün; Bir funksiyanı yoldan kəsməyin.
- Söhbət/bilet qeydi: Mesaj və ya söhbət raunduna görə bölün; Kimin nə dediyini bilmək.
# mötərizə əsaslı parçalanma (konseptual) parça = bol( mətn, hədəf_ölçüsü=450, # nişanə üst-üstə düşmə=70, # işarə mötərizə=["\n\n", "\n", ". ", " "] # abzas birinci, söz sonuncu)
Hər Traka Metadata əlavə edin
Parçalanma sadəcə "bölmək" deyil; hər bir parçanı zənginləşdirməkdir. Trasa əlavə etdiyiniz hər bir etiket gələcək filtrasiya və mənbəyə istinad etmək üçün öz çəkisinə dəyər.
# Zənginləşdirilmiş hissə (konseptual){ "mətn": "İllik ödənişli məzuniyyət 1-5 il xidmət stajı ilə 14 gündür...", "metaməlumatlar": { "mənbə": "ik_el_kitabi_v7.pdf", "bölmə": "5.2 İllik məzuniyyət", "səhifə": 23, "tarix": "02-ci hissə", "05-ci hissə", "2-ci hissə:" "məxfilik": "daxili" }}
Başqa bir güclü üsul kontekstli başlıq əlavə etməkdir: aid olduğu fəslin başlığını hər parçanın əvvəlinə yazmaq. Beləliklə, "14 gün ərzində" kimi bir-birindən ayrılmış bir parça belə, "İllik məzuniyyət - 14 gün" kimi həm daha yaxşı yerləşdirilir, həm də daha mənalıdır.
Zəif Çünki / Güclü Çünkü
Zəif (kor hardcut, metadata yoxdur):
Mətni hər 1000 simvoldan bir kəsin. Yalnız mətni saxlayın.# Nəticə: cədvəllər ortadan bölünür, "14 gün" kontekstsiz qalır,# hansı sənəddən gəldiyi məlum deyil, heç bir filtr etmək mümkün deyil.
Güclü (strukturdan xəbərdar + başlıq + metadata):
Sənədi başlıqlara bölmək; hər hissəyə bölmə başlığı əlavə edin;mənbə, səhifə, tarix və məxfilik metadata əlavə edin; cədvəlləri başlıqları ilə düz mətnə çevirin.
Üç mini qutu
1-ci hal - Rəsm fəlakəti. Maliyyə komandası 200 səhifəlik qiymət siyahısını kor-koranə kəsmə ilə böldü; masa sıraları təsadüfi olaraq bölündü. "X məhsulunun qiyməti nə qədərdir?" Model səhv sətir oxudu və yanlış qiymət verdi (12 vəziyyətdən 9-u səhvdir). Cədvəl sətirlərini "Məhsul: … | Qiymət: … | Vahid: …" formatında düz mətnə çevirəndə xəta 12-dən 0-a qədər azaldı.
Case 2 - Çox böyük parça. Vikidə hər səhifə bir hissədən ibarətdir (bəziləri deyir ki, 3000 token). Bir səhifədə “məzuniyyət”, “artıq iş” və “əmək haqqı” olduğu üçün yerləşdirmə bulanıqdır; Məzuniyyət məsələsi ilə bağlı iş saatları bölməsi də işə düşdü. Səhifələr başlığa görə orta ölçüyə bölündükdə geri çağırma@5 64%-dən 91%-ə yüksəldi.
3-cü vəziyyət - üst-üstə düşmədən kəsilmiş cümlə. Hüquqi komanda üçün 250 token sabit kəsilmiş, üst-üstə düşmür. Tənqidi bir tərif düz iki hissənin sərhədinə düşdü və ikiyə bölündü; Nə birində, nə də digərində tam cavab yoxdur. 60 işarənin üst-üstə düşməsi əlavə edildikdə, eyni tərif bir parçada toxunulmaz qaldı və düzgün cavab qaytarıldı.
Ümumi səhvlər
- Blind fixed cut: Cümlələri və cədvəlləri ortada bölür; mənası itir.
- Üst-üstə düşməyi sıfırda buraxmaq: Sərhədə düşən məlumat bölünür və itirilir.
- Metadata əlavə edilməməsi: Filtrləmə və mənbənin göstərilməsi qeyri-mümkün olur.
- Cədvəlləri xam tərk etmək: Model cədvəl strukturunu həll edə bilmir; Sətirləri düz mətnə çevirin.
- Bir strategiya tətbiq etmək: PDF, kod və cədvəl eyni üsulla bölünmür; Janra uyğunlaşma.
Diqqət: Bir dəfə Chunking qurmayın və onu unutun. Yeni sənəd növləri gəldikdə (yeni sistemdən biletlər, skan edilmiş PDF-lər) axtarış keyfiyyətini yenidən ölçün. Səhv giriş məlumatları pis cavab deməkdir ("zibil daxil, zibil çıxır").
Xülasə
- Yığma ən kiçik axtarış vahididir; Nə çox böyük, nə də çox kiçik - məzmuna görə balanslaşdırılmalıdır.
- Parça ölçüsü fokus-kontekst balansını göstərir; Üst-üstə düşmə sərhəd itkisini idarə edir.
- Mötərizəyə əsaslanan və strukturdan xəbərdar olan parçalanma əksər nəsil sistemlərinin başlanğıc nöqtəsidir; semantik parçalanma keyfiyyətli, lakin bahalıdır.
- Cədvəl, skript və söhbət kimi növlər öz strategiyalarını tələb edir; Cədvəlləri düz mətnə çevirin.
- Hər trekə mənbə/tarix/fəsil/məxfilik metadatası və bölmə başlığı əlavə edin; Bu süzgəc və sitatın əsasını təşkil edir.
Tətbiq tapşırığı
Seçdiyiniz sənədin bir hissəsini üç fərqli yolla bölün: (1) 200 tokendən ibarət kiçik parçalar, (2) 500 tokendən ibarət orta hissələr (70 token üst-üstə düşür), (3) tək böyük parçalar. Hər bir strategiya üçün eyni 3 sualı verin, hansı parçanın gətiriləcəyini əl ilə qeyd edin və həmin sənəd üçün hansı strategiyanın ən yaxşı olduğunu əsaslandırın. Sonra hər trekə ən azı dörd metadata sahəsi və "fəsil başlığı" əlavə edin. Sənəddə cədvəl varsa, cədvəl cərgəsini "sahə: dəyər" formatında düz mətnə çevirin.
yoxlama siyahısı
- [ ] Mən deyə bilərəm ki, yığın axtarışın ən kiçik vahididir və ölçü diqqət-kontekst balansıdır.
- [ ] Üst-üstə düşmənin sərhəd itkisinin qarşısını niyə aldığını bilirəm.
- [ ] Mən mötərizəyə əsaslanan, semantik və strukturdan xəbərdar olan parçalanmanı ayırd edə bilirəm.
- [ ] Mən strategiyanı masa, kod və söhbət üçün uyğunlaşdıra bilirəm.
- [ ] Mən hər trekə metadata və fəsil başlığı əlavə etməklə axtarışı gücləndirirəm.