“Sözleşmelerimizden hangileri fesih cezası içeriyor?” bir AI ajanı işi gibi görünüyor ve öyle, ancak sözleşmeleri okuyarak değil. Her dosyayı açıp yanıt vermeye çalışan bir ajan, bağlamını 297 alakasız belgeye harcıyor ve diğer üçteki maddeyi fark ettiğine güvenmek zorunda kalıyor. GroupDocs.Search.Mcp yerel olarak Docker’da, Claude Desktop, Cursor veya Copilot ile çalıştırıldığında, klasörü bir kez indeksler, indeksten hangi sözleşmelerin eşleştiğini sorar ve yalnızca maddeleri okur:

Sözleşmelerimden hangileri fesih cezası içeriyor? Her biri için maddeyi alıntılayın.

Adım adım sürüm, yapılandırma ve sorun giderme belgelerde bulunabilir: Sözleşme klasörü içinde AI ajanı ile sorular sormanın nasıl yapılacağı.

Ajent tüm belgeleri okuduğunda ne ters gider?

Üç şey, tehlike artan sırayla. Yavaş ve pahalıdır: her sözleşme bağlam penceresinden geçer, her sorduğunuzda. Alanı tükenir: birkaç düzine uzun belgeyi aştığınızda, erken gelenler pencereden düşer ya da özetlenir ve özet, bir maddenin kaybolduğu yerdir. Ve sessizce başarısız olur: “Fesih cezası olan iki sözleşme buldum” ifadesi, ajanın 300’ünü kontrol edip etmediği ya da 40’ını gözden geçirip geçirmediği aynı şekilde duyulur. Cevapta hangi belgeler olduğu söylenmez.

Bir indeks ilk sorunu ortadan kaldırır ve üçüncüyü ortaya çıkarır. “Bu kelimeleri içeren dosyalar hangileri” sorusunun kesin bir yanıtı vardır ve bir arama aracı bunu kontrol edebileceğiniz bir sayımla döndürür.

Doğru sıralama nasıl görünür?

Bir kez indeksleyin, arama yapın, ardından eşleşmeleri okuyun. İşte sunucunun testimizde beş sentetik sözleşmeye karşı döndürdüğü sonuç: iki sözleşmede ceza maddesi var ve iki kelimeyi içeren ancak cezayı dışlayan bir NDA.

-> add_to_index {"documentsPath":"contracts","indexName":"contracts"}
<- Indexed 'contracts' into index 'contracts': 5 document(s) added,
   5 in the index.

-> search {"query":"termination penalty","indexName":"contracts"}
<- { "documentsFound": 0,
     "hint": "Unquoted words separated by spaces do not match. Search the
              phrase as \"termination penalty\", or combine the words with
              AND / OR, e.g. termination AND penalty." }

-> search {"query":"termination AND penalty","indexName":"contracts"}
<- documentsFound 3: acme-master-services-agreement.pdf,
   globex-consulting-agreement.docx, initech-nda.docx

-> get_text_fragments {"query":"\"termination penalty\"",...}
<- === contracts/acme-master-services-agreement.pdf ===
     …a termination penalty of three monthly fees applies, payable
     within 30…
   === contracts/globex-consulting-agreement.docx ===
     …Early termination penalty: the Client pays 50 percent of the fees…

Üç sonuç ne öğretiyor?

İlk sorgu kaçtı ve sunucu nedenini söyledi. GroupDocs.Search’te, tırnak işareti olmadan boşlukla ayrılan kelimeler bir ifade olarak eşleşmez. Sıfır döndürmek yerine, sunucu düzeltmeyi açıklayan bir hint ekler ve ajanlar bir sonraki çağrıda kendilerini düzeltir. Bu, ilk seferde en yaygın kaçırmadır ve yanıt içinde ele alınır.

AND üç sonuç buldu, ifade ise iki. AND her belge başına değerlendirilir. Initech NDA, “Bu NDA’nın feshiyle ilgili hiçbir ücret ve ceza yok” cümlesinde her iki kelimeyi de içerir. Sadece arama sonucunu okuyan bir model bunu sayar; pasajı okuyan ise NDA’yı cezayı açıkça dışlayan bir sözleşme olarak ayrı rapor eder. Bu ayrım, üçüncü çağrının tüm değeridir.

Biçimler önemli değildi. Eşleşmeler bir PDF ve bir DOCX’ten geldi ve aynı indeks içinde bir TXT sözleşme de vardı. Motor 82 formatı indeksler, bu yüzden on yıl boyunca farklı araçlarla büyüyen bir klasör tek bir sorguya yanıt verir.

Çağrılar, sırayla

user              agent                         Search MCP server
 |  "Which contracts mention a termination penalty?"           |
 |---------------->|                                           |
 |                 |-- add_to_index (once) ------------------>|
 |                 |-- search {"query":"termination AND       |
 |                 |           penalty"} -------------------->|
 |                 |<- 3 files --------------------------------|
 |                 |-- get_text_fragments {"query":           |
 |                 |   "\"termination penalty\""} ----------->|
 |                 |<- the two clauses, with context ----------|
 |<- "Acme: 3 monthly fees (12.3). Globex: 50% of remaining    |
 |    fees. Initech NDA: explicitly no penalty."               |

İlk indekslemeden sonra, her yeni soru kaç sözleşme olduğu fark etmeksizin iki çağrı maliyetindedir. “Hangi sözleşmelerde force majeure maddesi var?” "force majeure" şeklindedir. “Hangi kiralamalar otomatik yenileniyor?” renewal OR renews şeklindedir ve pasajda “bildirim verilmediği sürece 12 ay otomatik yenilenir” denir. Bildirim süreleriyle ilgili bir madde terminat? AND notice şeklindedir; burada ? tek bir karakteri temsil eder ve terminate ile eşleşir.

İnsan nerede devrede kalır

Bu bir sözleşme incelemesi değildir ve öyleymiş gibi davranmamalıdır. İndeks metni bulur ve alıntılar; ajan alıntıladığı şeyi özetler. İki alışkanlık onu dürüst tutar. Her iddiada alıntıyı isteyin, böylece yanlış özet, yanlış okunan cümlenin yanında görünür. Ayrıca yakın kaçırmaları da sorun, “madde olmadan kelimeleri içeren sözleşmeleri listele”, çünkü bunlarda okuyucunun yargısı en çok önem taşır.

Dürüst sınırlamalar

  • Değerlendirme modunda bir indeks en fazla 100 belge tutar ve bir arama en fazla 10 sonuç döndürür; her yanıt bunu belirtir. Gerçek bir çalıştırmadan önce get_license_status çağrısı yapın, çünkü sınırlı bir yanıt tam gibi görünebilir.
  • Metin katmanı olmayan taranmış sözleşmeler yalnızca dosya özellikleriyle indekslenir; OCR yoktur.
  • Tam metin arama kelimeleri eşleştirir: bir ajan sözleşmenin terminolojisini kullanmalı ya da varyantları denemelidir.
  • İndekslenmiş bir klasörden tek bir dosyayı kaldırmak desteklenmez; klasörü kaldırın ve istediğiniz dosyaları tekrar ekleyin.

SSS

Bir AI ajanı tüm sözleşmelerimi yüklemeden arayabilir mi?
Evet. İndeks makinenizde bir konteyner içinde oluşturulur ve aranır; yalnızca ajan tarafından alıntılanan maddeler modele ulaşır.

Kaç sözleşmeyi işleyebilir?
Lisanslı olarak, disk ve bellek kapasiteniz izin verdiği sürece; indeks bir kez oluşturulur ve artımlı olarak güncellenir. Değerlendirme modu bir indeks başına 100 belgeyle durur.

İki kelime için yaptığım arama neden hiçbir şey döndürmedi?
Tırnak işareti olmayan kelimeler bir ifade olarak eşleşmez. "termination penalty" şeklinde tırnak içinde arayın ya da kelimeleri AND ile birleştirin; sunucunun hinti aynı şeyi söyler.

Daha derine