Belgelerinizle ilgili bir yanıt, üzerine inşa edildiği metin kadar iyidir ve bir sohbete bütün dosyaları yapıştırdığınızda, modelin aslında hangi bölümü kullandığını söyleyemezsiniz. Docker’da yerel olarak çalışan GroupDocs.Search.Mcp, Claude Desktop, Cursor veya Copilot’a farklı bir ilke sunar: get_text_fragments yalnızca bir sorguyla eşleşen pasajları, birkaç kelimelik bağlam ve geldiği dosya adıyla birlikte döndürür, böylece ajan alıntılardan yanıt verir:
Sözleşmelerim cezalar hakkında ne diyor? Pasajları alıntılayın, her birini anlamak için yeterli bağlamla.
Yapılandırma ve sorun giderme adımlarıyla birlikte adım adım sürüm belgelerde bulunabilir: How to get the matching passages instead of reading whole files.
Yanıtlar Belgelerden Neden Sapar?
Çünkü bağlam penceresi bir bütçedir ve bütün belgeler bunu kötü harcar. Cezalarla ilgili bir soru, elli sayfadan belki üç cümle gerektirir. Elli sayfayı yapıştırdığınızda model, diğer her şeyin arasında bu üç cümleyi kendisinin bulması ve ardından yazarken onları tutması gerekir. Uzun bağlamlar özetlenir, erken materyal ağırlığını kaybeder ve yanıt, sizin sözleşmelerinizin ne dediğinden ziyade modelin sözleşmelerin genellikle ne dediğine dair genel algısına dayanır. Endüstri bu yönetim disiplinine bağlam mühendisliği adını verir; bunun en basit şekli ihtiyacınız olmayan metni yüklememektir.
Bir Parçacık Nasıl Görünür?
Dizin zaten her belgenin metnini tutar, bu yüzden sunucu her eşleşmenin etrafındaki pasajı kesebilir. Bunlar, beş sentetik sözleşmeye karşı yaptığımız testten gerçek yanıtlar. Varsayılan ayar, her iki tarafta sekiz kelime, bir ifade verir:
-> get_text_fragments {"query":"penalty","indexName":"contracts"}
<- === contracts/acme-master-services-agreement.pdf (1 occurrence(s)) ===
[content] …before the end of the Term, a termination penalty of
three monthly fees applies, payable within 30…
İki tarafında yirmi kelime, tüm maddeyi verir:
-> get_text_fragments {"query":"penalty","indexName":"contracts",
"termsBefore":20,"termsAfter":20,"maxFragmentsPerDocument":1}
<- === contracts/acme-master-services-agreement.pdf (1 occurrence(s)) ===
…convenience on 90 days written notice.
12.3 If the Client terminates before the end of the Term, a termination
penalty of three monthly fees applies, payable within 30 days of the
termination date.
14.2 Force majeure: neither party is…
termsBefore ve termsAfter bir ayar düğmesidir: “hangi dosyalar ve yaklaşık nerede” için küçük, “bölümü alıntıla” için büyük. maxFragmentsPerDocument ve maxDocuments yanıtın boyutunu sınırlar, böylece iki yüz kez geçen bir kelime bağlamı doldurmaz.
Bütçe, yan yana
Dosyaları okuma Dizini arama
------------------------------------- -------------------------------------
ajan her belgeyi açar arama: hangi dosyalar eşleşiyor (JSON)
bağlam, korpusla birlikte büyür get_text_fragments: pasajlar
uzun dosyalar soruyu gölgeler (~8 kelime her iki tarafta, dosya başına)
her soru için tekrarlanır yanıt dosya + pasajı gösterir
dizin bir sonraki sefer yeniden kullanılır
Fark, korpusla birlikte artar. Üç kısa dosya için neredeyse önemsizdir. Uzun sözleşmeler, raporlar ve e-postalardan oluşan bir klasör için, bir soru için parçacıklar birkaç yüz kelime olur, her aday belgenin tam metnine karşı.
Kelimeler Farklı Olduğunda
Tam metin arama kelimeleri eşleştirir, bu da temel oluşturma için bir özelliktir (her eşleşme açıklanabilir) ve geri getirme için bir sınırlamadır (bir eşanlamlı kaçırılır). Ajana görevi varyantları denemektir ve her varyantın gerçekte neyi eşleştirdiğini görebilir:
-> search {"query":"renewal OR renews","indexName":"contracts"}
<- umbrella-office-lease.pdf, terms ["renewal", "renews"]
-> search {"query":"renewl","indexName":"contracts","fuzzy":true}
<- umbrella-office-lease.pdf, terms ["renewal", "renews", "rent"]
Bulanık eşleştirme bir yazım hatasını kurtardı ve ayrıca rent kelimesini de çekti. Yanıt, eşleştirdiği terimleri listelediği için bir ajan ya da siz, aşırı eşleşmeyi güvenmek yerine görebilirsiniz. Bu şeffaflık, “temellendirilmiş"in ne anlama gelmesi gerektiğidir: sadece “yanıt bir kaynağa atıfta bulunur” değil, aynı zamanda “kaynağın nasıl bulunduğunu görebilirsiniz”.
Temellendirilmiş Bir Yanıt Nasıl Görünür
Alıntı isteyin ve yanıt, bir bakışta doğrulayabileceğiniz bir biçimde gelir:
İki sözleşme bir fesih cezası içeriyor. Acme MSA, madde 12.3: “fesih tarihinden itibaren 30 gün içinde ödenecek üç aylık ücret cezası uygulanır.” Globex danışmanlık anlaşması, bölüm 9: “Müşteri, mevcut aşama için kalan ücretlerin yüzde 50’sini öder.” Initech NDA, fesih ve ceza bahseder ancak ceza olmadığını belirtir.
Eğer bir özet bir alıntıyı yanlış okursa, yanlış okuma alıntının hemen yanında yer alır.
Dürüst Sınırlamalar
- Değerlendirme modunda bir dizin en fazla 100 belge tutar ve bir arama en fazla 10 sonuç döndürür. Değerlendirme modu ayrıca bazı formatların indekslenmiş metnine “Evaluation only…” satırı ekler; bu satır parçacıklarda görünebilir; sunucunun lisansını alın ve dizini yeniden oluşturun böylece kaldırılır. Önce
get_license_statusçağırın. - Parçacık bağlamı kelimelerle sayılır, cümlelerle değil, bu yüzden bir pasaj cümlenin ortasından başlayabilir; gerektiğinde
termsBeforedeğerini artırın. - OCR yok: metin katmanı olmayan taramalar döndürülecek pasaj içermez.
- Sadece Docker; Linux’ta
--user "$(id -u):$(id -g)"ekleyin.
SSS
Claude’ın belgelerimden kaynakları göstermesini nasıl sağlarım?
Buna dosya adıyla birlikte kaynak metni döndüren bir araç verin. get_text_fragments tam olarak bunu yapar ve “pasajı ve dosyasını alıntıla” gibi bir talimat ona alışkanlık kazandırır.
Bu token kullanımını azaltır mı?
Bir soruya yanıt vermek için bütün belgeleri yüklemekten kaçınır: ajan yalnızca eşleşen pasajları okur. Ne kadar tasarruf sağlandığı dosyalarınızın boyutuna bağlıdır.
Ajan, gerektiğinde hâlâ bütün bir dosyayı okuyabilir mi?
Evet, kendi dosya araçlarıyla. Parçacıklar bulma ve alıntılamak içindir; pasaj yeterli olmadığında bütün dosyayı okuyun.
Daha Derine İncele
- Dokümantasyon, kanonik nasıl yapılır: How to get the matching passages instead of reading whole files
- Dokümantasyon merkezi: GroupDocs.Search MCP Server
- Buradan başlayın: Do you need a vector database to ask questions about a folder of documents?
- İlgili: Why an AI agent should not read 300 contracts to answer one question
- İlgili: grep can’t read PDF: give your coding agent a document index
- İlgili: Search your email archive with an AI agent: PST, MSG, EML and the attachments inside
- İlgili: Project memory for AI agents: one index per project, kept current
- Yerinde ve güvenlik modeli: 3 architectures for AI document processing, and the one that keeps files inside your network
- Sorular: GroupDocs Search forum
- Kaynak: GroupDocs.Search.Mcp on GitHub