şema · olgun
Chunk bir kod birimidir
tree-sitter sınırları, ≤ 2000 byte, büyük sınıflar bölünüyor, küçük parçalar birleşiyor, header yalnız index'te.
Bir chunk; bir fonksiyon, sınıf, metot, interface, tip ya da export edilmiş bir sabit — sınırları süslü parantez sayarak değil, gerçek bir parser'dan geliyor.
parsetree-sitter
birimler≤ 2000 B
bölbüyük sınıf → üyeler
birleştirküçükler ≥ 200 B
headeryalnız index için
Dört kural
- Büyük kapsayıcılar üyelerine bölünüyor. 5 KB'lık bir sınıf, bir header
chunk'ı artı metot başına bir chunk oluyor; her biri
parent = classtaşıyor. - Küçük şeyler bir komşuyla birleşiyor. Tek satırlık tipler, kısa const'lar, import blokları ve doc yorumları bir sonraki birime yapışıyor.
- Hiçbir şey ~2000 byte'ı (≈ 500 token) aşmıyor. Model 8192 kabul ediyor ama uzun bir chunk'ın embedding'i ortalamaya çekilip hiçbir şey anlatmaz oluyor. Tek başına aşırı büyük bir fonksiyon satır satır pencereleniyor ve sembolünü koruyor.
- Metin temiz kalıyor. "Ben neyim, nerede yaşıyorum" header'ı — dosya, sembol, parent, import'lar — yalnızca embed edilen ve BM25'e giren metnin başına ekleniyor. Atıflar gerçek kaynağı gösteriyor.
BM25 için identifier'lar
Standart analyser handleAuthCallback'i tek token olarak tutuyor; yani "auth
callback" ona hiç dokunmuyor. Her chunk'ın identifier'ları küçük harfli alt
kelimelere bölünüp index'lenen metnin sonuna ekleniyor.