“Welche unserer Verträge eine Kündigungsstrafe enthalten?” klingt nach einer Aufgabe für einen KI‑Agenten – und das ist es auch, jedoch nicht durch das Lesen der Verträge. Ein Agent, der jede Datei öffnet, um die Frage zu beantworten, verbraucht seinen Kontext an 297 irrelevanten Dokumenten und muss trotzdem darauf vertrauen, dass er die Klausel in den übrigen drei bemerkt hat. Mit GroupDocs.Search.Mcp, das lokal in Docker läuft, indexieren Claude Desktop, Cursor oder Copilot den Ordner einmal, fragen den Index, welche Verträge passen, und lesen nur die relevanten Klauseln:
Welche meiner Verträge erwähnen eine Kündigungsstrafe? Zitieren Sie die Klausel für jeden einzelnen.
Die schrittweise Version mit Konfiguration und Fehlersuche befindet sich in der Dokumentation: How to ask questions across a folder of contracts with an AI agent.
Was schiefgeht, wenn der Agent alles liest?
Drei Dinge, in steigender Gefährlichkeit. Es ist langsam und teuer: Jeder Vertrag durchläuft das Kontextfenster, jedes Mal, wenn Sie fragen. Der Speicher reicht nicht mehr: Nach einigen Dutzend langer Dokumente fallen die ersten aus dem Fenster oder werden zusammengefasst, und in einer Zusammenfassung geht eine Klausel verloren. Und es schlägt still zu: „Ich habe zwei Verträge mit einer Kündigungsstrafe gefunden“ klingt gleich, egal ob der Agent alle 300 geprüft oder nur 40 überflogen hat. In der Antwort steht nichts, das Ihnen sagt, welche es waren.
Ein Index beseitigt das erste Problem und macht das dritte sichtbar. Die Frage „welche Dateien enthalten diese Wörter“ hat eine eindeutige Antwort, und ein Suchwerkzeug liefert sie mit einer prüfbaren Trefferzahl.
Wie sieht die richtige Reihenfolge aus?
Einmal indexieren, suchen, dann die Treffer lesen. Hier ist, was der Server in unserem Test zurückgab, gegen fünf synthetische Verträge: zwei mit einer Strafklausel und ein NDA, das beide Wörter erwähnt, aber eine Strafe ausschließt.
-> 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…
Was lehren die drei Ergebnisse?
Die erste Abfrage verfehlte das Ziel, und der Server erklärte warum. In GroupDocs.Search führen Wörter, die durch Leerzeichen getrennt und nicht in Anführungszeichen gesetzt sind, nicht zu einer Phrase‑Übereinstimmung. Anstatt einfach 0 zurückzugeben, hängt der Server einen hint an, der die Korrektur erklärt, und Agenten korrigieren sich beim nächsten Aufruf selbst. Das ist das häufigste Erstmissverständnis und wird direkt in der Antwort behandelt.
AND fand drei, die Phrase zwei. AND wird pro Dokument ausgewertet. Das Initech‑NDA enthält beide Wörter im Satz „There is no fee and no penalty associated with termination of this NDA“. Ein Modell, das nur das Suchergebnis liest, würde es mitzählen; liest es den Abschnitt, berichtet es das NDA separat als Vertrag, der die Strafe ausdrücklich ausschließt. Diese Unterscheidung ist der gesamte Mehrwert des dritten Aufrufs.
Formate spielten keine Rolle. Die Treffer kamen aus einer PDF‑ und einer DOCX‑Datei, und ein TXT‑Vertrag befand sich im selben Index. Die Engine indexiert 82 Formate, sodass ein Ordner, der über zehn Jahre mit verschiedenen Tools gewachsen ist, eine einzige Abfrage beantworten kann.
Die Aufrufe, in Reihenfolge
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." |
Nach dem ersten Indexieren kostet jede neue Frage zwei Aufrufe, egal wie viele Verträge vorhanden sind. „Welche Verträge enthalten eine Force‑Majeure‑Klausel?“ ist "force majeure". „Welche Mietverträge verlängern sich automatisch?“ ist renewal OR renews, und der Abschnitt lautet „renews automatically for 12 months unless notice is given“. Eine Klausel zu Kündigungsfristen ist terminat? AND notice, wobei das ? für ein einzelnes Zeichen steht und terminate entspricht.
Wo der Mensch im Prozess bleibt
Dies ist keine Vertragsprüfung und sollte sich nicht als solche ausgeben. Der Index findet und zitiert Text; der Agent fasst das Zitat zusammen. Zwei Gewohnheiten halten ihn ehrlich: Fordern Sie das Zitat zu jeder Behauptung an, damit eine falsche Zusammenfassung neben dem falsch gelesenen Satz sichtbar wird. Und fragen Sie auch nach den Fast‑Treffern, „Liste der Verträge, die die Wörter erwähnen, ohne die Klausel“, weil dort das Urteil des Lesers am wichtigsten ist.
Ehrliche Grenzen
- Im Evaluationsmodus hält ein Index höchstens 100 Dokumente, und eine Suche liefert höchstens 10 Treffer; jede Antwort weist darauf hin. Rufen Sie
get_license_statusvor einem echten Durchlauf auf, weil eine begrenzte Antwort vollständig wirkt. - Gescannte Verträge ohne Textebene werden nur anhand ihrer Dateieigenschaften indexiert; es gibt kein OCR.
- Volltextsuche stimmt Wörter ab: Ein Agent muss den Wortschatz des Vertrags verwenden oder Varianten ausprobieren.
- Das Entfernen einer einzelnen Datei aus einem indexierten Ordner wird nicht unterstützt; entfernen Sie den Ordner und fügen Sie anschließend wieder ein, was Sie behalten wollen.
FAQ
Kann ein KI‑Agent all meine Verträge durchsuchen, ohne sie hochzuladen?
Ja. Der Index wird in einem Container auf Ihrem Rechner erstellt und durchsucht; nur die vom Agenten zitierten Klauseln erreichen das Modell.
Wie viele Verträge kann er verarbeiten?
Lizenziert, so viele, wie Festplatte und Arbeitsspeicher zulassen; der Index wird einmal erstellt und inkrementell aktualisiert. Im Evaluationsmodus stoppt er bei 100 pro Index.
Warum hat meine Suche nach zwei Wörtern nichts ergeben?
Unquoted words match nicht als Phrase. Setzen Sie Anführungszeichen, "termination penalty", oder verbinden Sie die Wörter mit AND; der hint des Servers sagt dasselbe.
Weiterführende Informationen
- Dokumentation, kanonische Anleitung: How to ask questions across a folder of contracts with an AI agent
- Dokumentationszentrum: GroupDocs.Search MCP Server
- Hier starten: Do you need a vector database to ask questions about a folder of documents?
- Verwandt: Grounded answers from your files: quote the passage, not the model’s memory
- Verwandt: grep can’t read PDF: give your coding agent a document index
- Verwandt: Search your email archive with an AI agent: PST, MSG, EML and the attachments inside
- Verwandt: Project memory for AI agents: one index per project, kept current
- On‑Premise und Sicherheitsmodell: 3 architectures for AI document processing, and the one that keeps files inside your network
- Fragen: GroupDocs Search forum
- Quelle: GroupDocs.Search.Mcp on GitHub