“Qual de nossos contratos tem uma penalidade de rescisão?” parece um trabalho para um agente de IA, e é, mas não lendo os contratos. Um agente que abre cada arquivo para responder gasta seu contexto em 297 documentos irrelevantes e ainda precisa confiar que notou a cláusula nos outros três. Com o GroupDocs.Search.Mcp rodando localmente em Docker, Claude Desktop, Cursor ou Copilot indexa a pasta uma vez, pergunta ao índice quais contratos correspondem e lê apenas as cláusulas:
Quais dos meus contratos mencionam uma penalidade de rescisão? Cite a cláusula para cada um.
A versão passo a passo com configuração e solução de problemas está na documentação: Como fazer perguntas em uma pasta de contratos com um agente de IA.
O que dá errado quando o agente lê tudo?
Três coisas, em ordem crescente de perigo. É lento e caro: cada contrato passa pela janela de contexto, toda vez que você pergunta. Fica sem espaço: após algumas dezenas de documentos longos, os primeiros caem da janela ou são resumidos, e um resumo é onde uma cláusula desaparece. E falha silenciosamente: “Encontrei dois contratos com uma penalidade de rescisão” soa igual se o agente verificou todos os 300 ou leu rapidamente 40. Nada na resposta indica quais.
Um índice elimina o primeiro problema e expõe o terceiro. A pergunta “quais arquivos contêm essas palavras” tem uma resposta exata, e uma ferramenta de busca a devolve com uma contagem que você pode verificar.
Como deve ser a sequência correta?
Indexe uma vez, pesquise, então leia as correspondências. Aqui está o que o servidor retornou em nosso teste, contra cinco contratos sintéticos: dois com cláusula de penalidade, e um NDA que menciona ambas as palavras mas exclui a penalidade.
-> add_to_index {"documentsPath":"contracts","indexName":"contracts"}
<- Indexado 'contracts' no índice 'contracts': 5 documento(s) adicionado(s),
5 no índice.
-> search {"query":"termination penalty","indexName":"contracts"}
<- { "documentsFound": 0,
"hint": "Palavras não citadas separadas por espaços não correspondem. Pesquise a frase como \"termination penalty\", ou combine as palavras com AND / OR, por exemplo 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 ===
…uma penalidade de rescisão de três taxas mensais se aplica, pagável
dentro de 30…
=== contracts/globex-consulting-agreement.docx ===
…Penalidade de rescisão antecipada: o Cliente paga 50 por cento das taxas…
O que os três resultados ensinam?
A primeira consulta falhou, e o servidor explicou o motivo. No GroupDocs.Search, palavras separadas por espaços sem aspas não correspondem como frase. Em vez de retornar apenas zero, o servidor anexa um hint explicando a correção, e os agentes se corrigem na chamada seguinte. Essa é a falha mais comum na primeira tentativa, e é tratada na própria resposta.
AND encontrou três, a frase encontrou duas. AND é avaliado por documento. O NDA da Initech contém ambas as palavras na frase “There is no fee and no penalty associated with termination of this NDA”. Um modelo que lê apenas o resultado da busca contaria; ao ler a passagem, ele relata o NDA separadamente como um contrato que exclui explicitamente a penalidade. Essa distinção é todo o valor da terceira chamada.
Os formatos não importaram. As correspondências vieram de um PDF e um DOCX, e um contrato TXT estava no mesmo índice. O mecanismo indexa 82 formatos, então uma pasta que cresceu ao longo de dez anos com diferentes ferramentas responde a uma única consulta.
As chamadas, em ordem
user agent Search MCP server
| "Quais contratos mencionam uma penalidade de rescisão?" |
|---------------->| |
| |-- add_to_index (once) ------------------>|
| |-- search {"query":"termination AND |
| | penalty"} -------------------->|
| |<- 3 files --------------------------------|
| |-- get_text_fragments {"query": |
| | "\"termination penalty\""} ----------->|
| |<- as duas cláusulas, com contexto ----------|
|<- "Acme: 3 taxas mensais (12,3). Globex: 50% das taxas restantes. Initech NDA: explicitamente sem penalidade." |
Após a primeira indexação, cada nova pergunta custa duas chamadas independentemente de quantos contratos existam. “Quais contratos têm uma cláusula de força maior?” é "force majeure". “Quais locações renovam automaticamente?” é renewal OR renews, e a passagem diz “renova automaticamente por 12 meses a menos que aviso seja dado”. Uma cláusula sobre períodos de aviso é terminat? AND notice, onde o ? representa um caractere e corresponde a terminate.
Onde o ser humano permanece no ciclo
Isto não é revisão de contrato, e não deve fingir ser. O índice encontra e cita o texto; o agente resume o que citou. Dois hábitos mantêm a honestidade. Peça a citação com cada afirmação, para que um resumo errado fique visível ao lado da frase que foi mal interpretada. E peça também as quase correspondências, “liste contratos que mencionam as palavras sem a cláusula”, porque nesses casos o julgamento do leitor é o mais importante.
Limites honestos
- No modo de avaliação, um índice contém no máximo 100 documentos e uma busca retorna no máximo 10, e cada resposta informa isso. Chame
get_license_statusantes de uma execução real, porque uma resposta limitada parece completa. - Contratos escaneados sem camada de texto são indexados apenas pelas propriedades do arquivo; não há OCR.
- A busca em texto completo corresponde a palavras: um agente precisa usar o vocabulário do contrato, ou tentar variantes.
- Remover um arquivo de uma pasta indexada não é suportado; remova a pasta e adicione novamente o que desejar.
Perguntas Frequentes
Um agente de IA pode pesquisar todos os meus contratos sem enviá-los?
Sim. O índice é construído e pesquisado em um contêiner na sua máquina; apenas as cláusulas que o agente cita chegam ao modelo.
Quantos contratos ele pode lidar?
Licenciado, quantos o seu disco e memória permitirem; o índice é construído uma vez e atualizado incrementalmente. O modo de avaliação para em 100 por índice.
Por que minha busca por duas palavras não retornou nada?
Palavras não citadas não correspondem como frase. Cite-as, "termination penalty", ou una as palavras com AND; o hint do servidor diz o mesmo.
Aprofunde-se
- Documentação, guia canônico: Como fazer perguntas em uma pasta de contratos com um agente de IA
- Documentation hub: GroupDocs.Search MCP Server
- Comece aqui: Você precisa de um banco de dados vetorial para fazer perguntas sobre uma pasta de documentos?
- Relacionado: Respostas fundamentadas a partir dos seus arquivos: cite a passagem, não a memória do modelo
- Relacionado: grep não consegue ler PDF: forneça ao seu agente de codificação um índice de documentos
- Relacionado: Pesquise seu arquivo de e‑mail com um agente de IA: PST, MSG, EML e os anexos internos
- Relacionado: Memória de projeto para agentes de IA: um índice por projeto, mantido atualizado
- On-premise e modelo de segurança: 3 arquiteturas para processamento de documentos com IA, e a que mantém os arquivos dentro da sua rede
- Perguntas: Fórum GroupDocs Search
- Fonte: GroupDocs.Search.Mcp no GitHub