Her yeni sohbet, belgelerinizi unutmuş bir ajanla başlar. Zaman ve bağlam maliyeti karşılığında onları yeniden okuyabilir ya da hatırlayan bir şeye danışabilir. GroupDocs.Search.Mcp, disk üzerinde yerel olarak adlandırılmış tam metin indeksini tutar; bu indeks oturumlar ve konteyner yeniden başlatmaları arasında ayakta kalır, böylece Claude Desktop, Cursor veya Copilot her oturuma projenin belgeleri zaten aranabilir olarak başlar ve dosyalar değiştiğinde tek bir çağrıyla bunları yeniler:

Bazı sözleşmeleri düzenledim. Sözleşmeler indeksini yenileyin, ardından şimdi bir ceza içeren sözleşmeleri bana söyleyin.

Yapılandırma ve sorun giderme ile adım adım sürüm belgelerde bulunur: Dosyalar değiştikçe bir belge indeksini güncel tutma.

Bir ajan için “hafıza” ne anlama gelir?

Pratikte iki şey: konuşmanın dışında kalıcı olan durum ve bu durumu doğru tutmanın ucuz bir yolu. Sohbet geçmişi ikisini de başarısız kılar: oturumla sona erer ve bir belge değiştiğinde onu güncelleyen bir şey yoktur. Arama indeksi belgeler için daha uygun bir çözümdür. Diskte, belgelerin yanında yaşar, “hangi dosyalar X diyor” sorusuna onları yüklemeden yanıt verir ve artımlı olarak yenilenebilir.

session 1    add_to_index --> index "contracts" --+
                                                 |  kept on disk in
session 2    search, get_text_fragments <--------+  /data/.groupdocs-search-
             (nothing is re-read)                    index/contracts
files edit   update_index --> re-reads changed, added, deleted files only
new project  create_index {"indexName":"legal-2026"} --> a separate index

Yenileme nasıl çalışır?

update_index indeksi, diskteki dosyalarla karşılaştırır ve yalnızca değişenleri yeniden okur. İşte bir sözleşmeye iki çağrı arasında bir ceza maddesi eklendikten sonra sunucunun testte döndürdüğü sonuç:

-> get_index_info {"indexName":"contracts"}
<- { "documentCount": 5, "indexedPaths": [ "contracts" ],
     "documentsWithErrors": [], "status": "Ready" }

-> update_index {"indexName":"contracts"}
<- Index 'contracts' updated: 0 added, 1 updated, 0 removed;
   5 document(s) in the index.

-> search {"query":"penalty","indexName":"contracts"}
<- documentsFound 3, including the edited initech-nda.docx

Sayılar ne olduğunu gösterir: bir dosya yeniden okundu, başka bir şey dokunulmadı. Silinen dosyalar aynı çağrıda kaybolur.

Proje başına neden tek bir indeks?

Çünkü ayrı korpuslar ayrı yanıtları hak eder. Bu yılın sözleşmeleriyle ilgili bir soru, geçen yılın taslaklarını ortaya çıkarmamalı ve bir müşterinin belgeleri başka bir müşterinin belgeleriyle karışmamalıdır. İndeks adları ucuzdur:

-> create_index {"indexName":"legal-2026"}
<- Index 'legal-2026' created. Add documents with add_to_index
   (indexName: 'legal-2026').

Her indeks, /data/.groupdocs-search-index altında bir klasördür ve isim olmadan get_index_info hepsini listeler. add_to_index ilk kullanımda bir indeks oluşturduğundan create_indexi açıkça çağırmanız nadiren gerekir, ancak onları kasıtlı olarak adlandırmak “bir indeks"i “bu projenin hafızası"na dönüştürür.

Kaldırma hakkında tek kural

Motor, eklenen yolları kaldırır, içlerindeki tek tek dosyaları değil. Sunucu bunu açıkça söylerken:

-> remove_from_index {"documentPath":"contracts/hooli-supply-terms.txt",...}
<- Removal failed for 'contracts/hooli-supply-terms.txt':
   'contracts/hooli-supply-terms.txt' is inside the indexed folder
   'contracts'. GroupDocs.Search removes whole indexed paths only: ...

Bu yüzden tasarlayın: daha sonra bir korpusun bir kısmını (örneğin bir yıl, bir müşteri ya da taslaklar) bırakmayı düşünüyorsanız, bu bölümleri ayrı yollar (contracts/2025, contracts/2026) olarak indeksleyin ve her biri kendi başına kaldırılabilir. Diskte bir dosyayı silmek ve update_index çalıştırmak da onu kaldırır.

Sormadan güncel tutma

create_index (optional)
      |
      v
add_to_index ---> search ---> get_text_fragments
      ^              ^
      |              |  get_index_info: counts, paths, status
update_index  (files changed on disk)
      |
remove_from_index  (only a path that was given to add_to_index)

Yenilemeyi otomatik hâle getirmenin üç pratik yolu:

  1. Ajana verilen talimatlarda. CLAUDE.md ya da AGENTS.md içinde bir satır, “dosyalar değişmiş olabileceği için bu projenin indeksine update_index çağır” şeklinde, ajanın oturum başında bunu yapmasını sağlar.
  2. Planlı bir zamanlayıcıda. MCP‑yetkin bir otomasyon, update_indexi her gece çalıştırabilir; çok az değişiklik olduğunda çağrı hızlıdır.
  3. Toplu bir kopyalamanın ardından. Tek bir çağrı, eklenen tüm dosyaları yakalar.

İndeksler yükseltmelerde de ayakta kalır: GroupDocs.Search 22.7‑den 26.8‑e kadar oluşturulan indeksler, ilk kullanımda dönüştürülür ve yanlarında bir yedek tutulur.

Ajana ne karar verir, indeks ne yapar

Ajana ne karar verir İndeks ne yapar
bir sorunun hangi indekse ait olduğu her adlandırılmış indeksi kendi klasöründe tutar
dosyaların değişmiş olabileceği zaman yalnızca değişen, eklenen ve silinen dosyaları yeniden okur
hangi kelimeleri arayacağı ve deneyeceği varyantlar kelimeleri, ifadeleri, aralıkları eşleştirir; bulduğu terimleri rapor eder
ne kadar bağlamı alıntılayacağı istenen kelime sayısı kadar çevresindeki pasajları döndürür
size ne söyleyecek hiçbir şey: sayıları, yolları ve metni döndürür, asla sonuç çıkarmaz

Bölünme kasıtlıdır. Yargı modelde kalır ve modelin dayandığı gerçekler, çıktısını inceleyebileceğiniz bir araçtan gelir.

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. Gerçek bir kaynak olarak indekse güvenmeden önce get_license_statusi çağırın.
  • İndeks yalnızca /data (veya indeks hacmi) bir bağlanmış host klasörü olduğunda kalıcıdır; aksi takdirde konteynerle birlikte kaybolur.
  • İndeks, belgelerin metnini içerir: belgeler gibi koruyun ve imha edin.
  • Sadece Docker; Linux’ta --user "$(id -u):$(id -g)" ekleyin ki konteyner indeksi yazabilsin.

SSS

Ajans belgelerimi oturumlar arasında hatırlıyor mu?
Kalıcı bir indeksle evet: indeks disk üzerinde kalır ve bir sonraki oturum hiçbir şeyi yeniden okumadan onu arar.

Dosyalar değiştiğinde indeksi yeniden oluşturmam gerekir mi?
Hayır. update_index yalnızca değişen, eklenen ve silinen dosyaları yeniden okur.

İndeksi yalnızca okuma‑yalnızca belgelerden ayrı tutabilir miyim?
Evet. Belgeleri yalnızca‑okuma olarak bağlayın, yazılabilir bir klasörü /index olarak bağlayın ve GROUPDOCS_MCP_INDEX_PATH=/index ayarlayın.

Daha derine in