Často ne. Pro složku smluv, zpráv nebo e‑mailů najde AI agent s nástrojem pro full‑textové vyhledávání správné soubory, přečte jen odpovídající úryvky a cituje je, a index běží lokálně bez modelu pro vkládání a bez vektorového úložiště. GroupDocs.Search.Mcp poskytuje Claude Desktop, Claude Code, Cursor nebo Copilot tento nástroj v jednom Docker příkazu:
Indexujte složku smluv, pak mi řekněte, které smlouvy zmiňují pokutu za ukončení a citujte příslušnou klauzuli.
Verze krok za krokem s konfigurací a řešením problémů je v dokumentaci: Jak vyhledávat dokumenty pomocí AI agentů s MCP.
Proč všichni nejprve sáhnou po embeddingech?
Protože „retrieval‑augmented generation“ přišla jako recept: rozdělit dokumenty na úseky, embedovat každý úsek, uložit vektory, embedovat otázku, vzít nejbližší úseky a vložit je do promptu. Funguje to a pro otázky, které nejsou formulovány podobně jako dokumenty, je to správný nástroj. Ale jde o pipeline s voláním embedding modelu, úložištěm, laděním chunkingu a úkolem re‑embedování pokaždé, když se dokumenty změní. Pro „které z mých 300 smluv zmiňují pokutu za ukončení“ tato mašinerie odpovídá otázce, na kterou index vyhledávání odpovídá přímo.
Evidence došla k intuici. Studie publikovaná na arXiv koncem roku 2025 (Keyword search is all you need) poskytla agentovi jen vyhledávání klíčových slov a regexů ve složce a změřila to proti standardní RAG pipeline: více než 90 % RAG skóre, bez vektorové databáze, a lépe vhodné pro sbírky, které se často mění. Kódovací agenti již v praxi ukázali tento vzor: vyhledávají pomocí grep, upřesňují a znovu vyhledávají.
Co dělá agent místo toho?
Tři volání. GroupDocs.Search.Mcp poskytuje osm nástrojů; smyčka potřebuje tři z nich:
user agent Search MCP server
| "Which contracts mention a termination penalty?" |
|---------------->| |
| |-- add_to_index ------------------------->| reads the
| | {"documentsPath":"contracts", | files once,
| | "indexName":"contracts"} | stores text
| |<- "5 document(s) added, 5 in the index" --|
| |-- search ------------------------------->|
| | {"query":"termination AND penalty"} |
| |<- {"documentsFound":3, "documents":[ ... | which files
| |-- get_text_fragments ------------------->|
| | {"query":"\"termination penalty\""} |
| |<- === contracts/acme-...-agreement.pdf ===| the passages
|<- "Two contracts carry one: Acme (3 monthly fees, 12.3), |
| Globex (50% of the remaining fees). Initech excludes it."|
add_to_index načte soubory jednou a uloží text do pojmenovaného indexu na disku. search vrací odpovídající soubory jako JSON s počty výskytů. get_text_fragments vrací každý výskyt s několika slovy kontextu, takže agent cituje klauzuli místo načítání celé smlouvy.
Zde je, co server ve skutečnosti vrátil v našem testu na pět syntetických smluv:
-> 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 (1 occurrence(s)) ===
…a termination penalty of three monthly fees applies, payable
within 30…
=== contracts/globex-consulting-agreement.docx (1 occurrence(s)) ===
…Early termination penalty: the Client pays 50 percent of the fees…
Všimněte si třetí smlouvy. NDA od Initech odpovídala termination AND penalty, protože říká „neexistuje žádný poplatek ani žádná pokuta spojená s ukončením“. Úryvek je to, co odlišuje shodu od zmínky, a agent, který úryvky čte, to říká. To je zakotvení: každé tvrzení v odpovědi ukazuje na soubor a větu, kterou můžete otevřít.
Kde každá metoda vítězí?
Pipeline pro embedding Agentické full‑textové vyhledávání
------------------------------------- -------------------------------------
rozdělit, embedovat, uložit do vektorového úložiště add_to_index: lokální full‑textový index
embedovat otázku, vzít top‑k úseků agent vyhledává, upřesňuje, znovu vyhledává
vložit úseky do promptu get_text_fragments: citované úryvky
re‑embedovat při změně dokumentů update_index znovu načte, co se změnilo
potřebuje embedding model a úložiště žádné volání modelu, žádná síť během běhu
odpovídá významu; řazení je neprůhledné odpovídá slovům; každý výsledek je vysvětlitelný
Full‑textové vyhledávání selže, když otázka a dokument nesdílejí žádná slova: „které smlouvy jsou pro nás rizikové?“ nemá žádné klíčové slovo. Vítězí, když je slovní zásoba sdílena, což popisuje většinu otázek, které lidé kladou ohledně svých dokumentů: název klauzule, produkt, zákazník, číslo faktury, časové období. Když dotaz nezasáhne, agent zkusí renewal OR renews nebo fuzzy shodu, tak jako by to udělal člověk. Server pomáhá: necitovaný dvouslovný dotaz v GroupDocs.Search nic nevrátí a prázdný výsledek obsahuje hint, který agentovi říká, aby frázi citoval.
Který nástroj pro kterou otázku?
| Uživatel se ptá | Agent volá |
|---|---|
| “Indexujte tuto složku” | add_to_index |
| “Které soubory zmiňují X?” | search |
| “Co o X říká?” | get_text_fragments |
| “Soubory se změnily, obnovit” | update_index |
| “Zapomenout na složku drafts” | remove_from_index |
| “Co je v indexu?” | get_index_info |
| “Spustit samostatný index” | create_index |
| “Proč jen 10 výsledků?” | get_license_status |
Index rozumí 82 formátům, včetně PDF, Office, OpenDocument, HTML a archivům e‑mailů (PST, OST, MSG, EML) s jejich přílohami.
Jak to spustit?
claude mcp add groupdocs-search -- docker run --rm -i \
-v /path/to/documents:/data ghcr.io/groupdocs-search/search-net-mcp:latest
Cursor, Claude Desktop, VS Code s GitHub Copilot a ostatní klienti používají stejný kontejner ve svém konfiguračním souboru: Registrace v AI klientech. Na Linuxu přidejte --user "$(id -u):$(id -g)", aby kontejner mohl zapisovat svůj index do vaší složky. Server běží na engine GroupDocs.Search 26.10, jehož nový formát indexu zmenšuje indexy a přibližně dělí jejich paměťovou náročnost na polovinu (poznámky k vydání).
Upřímná omezení
- V evaluačním režimu index obsahuje maximálně 100 dokumentů a vyhledávání vrací maximálně 10; každá odpověď to uvádí. Nejprve zavolejte
get_license_status. - Jedná se o full‑textové vyhledávání, ne o sémantické: odpovídá slovům, ne významu.
- Žádné OCR: naskenované PDF bez textové vrstvy jsou indexovány pouze podle vlastností souboru.
- Distribuuje se pouze jako Docker image (zabalený nástroj překračuje limit velikosti na NuGet).
Často kladené otázky
Může Claude prohledávat mé místní dokumenty bez jejich nahrávání?
Ano. Server běží v kontejneru na vašem počítači a čte složku, kterou připojíte; pouze úryvky, které agent cituje, se dostanou k modelu.
Je to RAG?
Je to retrieval‑augmented, ale agentické: model rozhoduje, co vyhledávat a kdy má dostatek, používá full‑textový index místo embeddingů.
Co se stane, když se moje dokumenty změní?
Požádejte agenta o obnovení. update_index znovu načte jen změněné, přidané a smazané soubory.
Ponořte se hlouběji
- Dokumentace, kanonický návod: Jak vyhledávat dokumenty pomocí AI agentů s MCP
- Dokumentační hub: Server MCP GroupDocs.Search
- Pro kódovací agenty: grep neumí číst PDF: poskytněte svému kódovacímu agentovi index dokumentů
- Související: Proč by AI agent neměl číst 300 smluv, aby odpověděl na jednu otázku
- Související: Zakotvené odpovědi z vašich souborů: citujte úryvek, ne paměť modelu
- Související: Prohledejte archiv e‑mailů pomocí AI agenta: PST, MSG, EML a jejich přílohy
- Související: Paměť projektu pro AI agenty: jeden index na projekt, udržovaný aktuální
- On‑premise a bezpečnostní model: 3 architektury pro AI zpracování dokumentů a ta, která udržuje soubory uvnitř vaší sítě
- Vydání enginu: GroupDocs.Search pro .NET 26.10 – Přehled vydání říjen 2026
- Otázky: Fórum GroupDocs Search
- Zdroj: GroupDocs.Search.Mcp na GitHubu