@ssmeo/mcp-local-rag 0.18.14 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.de.md +248 -215
  2. package/README.es.md +241 -215
  3. package/README.fr.md +249 -215
  4. package/README.md +207 -297
  5. package/README.pt-BR.md +236 -215
  6. package/README.zh-CN.md +133 -206
  7. package/dist/chunker/semantic-chunker.d.ts +23 -5
  8. package/dist/chunker/semantic-chunker.d.ts.map +1 -1
  9. package/dist/chunker/semantic-chunker.js +13 -5
  10. package/dist/chunker/semantic-chunker.js.map +1 -1
  11. package/dist/cli/common.d.ts +7 -0
  12. package/dist/cli/common.d.ts.map +1 -1
  13. package/dist/cli/common.js +26 -2
  14. package/dist/cli/common.js.map +1 -1
  15. package/dist/cli/delete.d.ts.map +1 -1
  16. package/dist/cli/delete.js +2 -0
  17. package/dist/cli/delete.js.map +1 -1
  18. package/dist/cli/file-collection.d.ts +2 -1
  19. package/dist/cli/file-collection.d.ts.map +1 -1
  20. package/dist/cli/file-collection.js +2 -2
  21. package/dist/cli/file-collection.js.map +1 -1
  22. package/dist/cli/ingest.d.ts +1 -0
  23. package/dist/cli/ingest.d.ts.map +1 -1
  24. package/dist/cli/ingest.js +45 -25
  25. package/dist/cli/ingest.js.map +1 -1
  26. package/dist/cli/list.d.ts.map +1 -1
  27. package/dist/cli/list.js +9 -13
  28. package/dist/cli/list.js.map +1 -1
  29. package/dist/cli/options.d.ts +8 -0
  30. package/dist/cli/options.d.ts.map +1 -1
  31. package/dist/cli/options.js +21 -0
  32. package/dist/cli/options.js.map +1 -1
  33. package/dist/cli/query.d.ts.map +1 -1
  34. package/dist/cli/query.js +2 -1
  35. package/dist/cli/query.js.map +1 -1
  36. package/dist/cli/read-neighbors.d.ts.map +1 -1
  37. package/dist/cli/read-neighbors.js +1 -0
  38. package/dist/cli/read-neighbors.js.map +1 -1
  39. package/dist/cli/relocate.d.ts +3 -0
  40. package/dist/cli/relocate.d.ts.map +1 -0
  41. package/dist/cli/relocate.js +135 -0
  42. package/dist/cli/relocate.js.map +1 -0
  43. package/dist/cli/sync.d.ts.map +1 -1
  44. package/dist/cli/sync.js +17 -8
  45. package/dist/cli/sync.js.map +1 -1
  46. package/dist/cli-main.d.ts +1 -1
  47. package/dist/cli-main.d.ts.map +1 -1
  48. package/dist/cli-main.js +5 -0
  49. package/dist/cli-main.js.map +1 -1
  50. package/dist/embedder/embedding-snapshot.d.ts +52 -0
  51. package/dist/embedder/embedding-snapshot.d.ts.map +1 -0
  52. package/dist/embedder/embedding-snapshot.js +413 -0
  53. package/dist/embedder/embedding-snapshot.js.map +1 -0
  54. package/dist/embedder/index.d.ts +36 -5
  55. package/dist/embedder/index.d.ts.map +1 -1
  56. package/dist/embedder/index.js +346 -23
  57. package/dist/embedder/index.js.map +1 -1
  58. package/dist/embedder/remote.d.ts +16 -2
  59. package/dist/embedder/remote.d.ts.map +1 -1
  60. package/dist/embedder/remote.js +48 -11
  61. package/dist/embedder/remote.js.map +1 -1
  62. package/dist/embedder/sentence-transformers-config.d.ts +24 -0
  63. package/dist/embedder/sentence-transformers-config.d.ts.map +1 -0
  64. package/dist/embedder/sentence-transformers-config.js +93 -0
  65. package/dist/embedder/sentence-transformers-config.js.map +1 -0
  66. package/dist/features/sync.js +1 -1
  67. package/dist/features/sync.js.map +1 -1
  68. package/dist/ingest/compute.d.ts +15 -7
  69. package/dist/ingest/compute.d.ts.map +1 -1
  70. package/dist/ingest/compute.js +74 -14
  71. package/dist/ingest/compute.js.map +1 -1
  72. package/dist/ingest/file.d.ts +3 -3
  73. package/dist/ingest/file.d.ts.map +1 -1
  74. package/dist/ingest/file.js +0 -5
  75. package/dist/ingest/file.js.map +1 -1
  76. package/dist/ingest/visual.d.ts +6 -2
  77. package/dist/ingest/visual.d.ts.map +1 -1
  78. package/dist/ingest/visual.js +20 -4
  79. package/dist/ingest/visual.js.map +1 -1
  80. package/dist/parser/docx-parser.d.ts +2 -0
  81. package/dist/parser/docx-parser.d.ts.map +1 -1
  82. package/dist/parser/docx-parser.js +12 -3
  83. package/dist/parser/docx-parser.js.map +1 -1
  84. package/dist/parser/index.d.ts +11 -1
  85. package/dist/parser/index.d.ts.map +1 -1
  86. package/dist/parser/index.js +27 -11
  87. package/dist/parser/index.js.map +1 -1
  88. package/dist/parser/pdf-extract.d.ts +2 -0
  89. package/dist/parser/pdf-extract.d.ts.map +1 -1
  90. package/dist/parser/pdf-extract.js +3 -0
  91. package/dist/parser/pdf-extract.js.map +1 -1
  92. package/dist/parser/pdf-filter.d.ts +2 -9
  93. package/dist/parser/pdf-filter.d.ts.map +1 -1
  94. package/dist/parser/pdf-filter.js +110 -144
  95. package/dist/parser/pdf-filter.js.map +1 -1
  96. package/dist/parser/pdf-headings.d.ts +6 -0
  97. package/dist/parser/pdf-headings.d.ts.map +1 -0
  98. package/dist/parser/pdf-headings.js +166 -0
  99. package/dist/parser/pdf-headings.js.map +1 -0
  100. package/dist/parser/text-source-map.d.ts +3 -0
  101. package/dist/parser/text-source-map.d.ts.map +1 -0
  102. package/dist/parser/text-source-map.js +33 -0
  103. package/dist/parser/text-source-map.js.map +1 -0
  104. package/dist/pdf-visual/detector.js +3 -3
  105. package/dist/pdf-visual/detector.js.map +1 -1
  106. package/dist/rerank/command.d.ts +10 -7
  107. package/dist/rerank/command.d.ts.map +1 -1
  108. package/dist/rerank/command.js +51 -10
  109. package/dist/rerank/command.js.map +1 -1
  110. package/dist/rerank/index.d.ts +3 -3
  111. package/dist/rerank/index.d.ts.map +1 -1
  112. package/dist/rerank/index.js +3 -3
  113. package/dist/rerank/index.js.map +1 -1
  114. package/dist/server/index.d.ts +4 -1
  115. package/dist/server/index.d.ts.map +1 -1
  116. package/dist/server/index.js +114 -79
  117. package/dist/server/index.js.map +1 -1
  118. package/dist/server/list-scanner.d.ts +2 -1
  119. package/dist/server/list-scanner.d.ts.map +1 -1
  120. package/dist/server/list-scanner.js +2 -2
  121. package/dist/server/list-scanner.js.map +1 -1
  122. package/dist/server/tool-definitions.js +2 -2
  123. package/dist/server/tool-definitions.js.map +1 -1
  124. package/dist/server/types.d.ts +9 -0
  125. package/dist/server/types.d.ts.map +1 -1
  126. package/dist/server-main.d.ts +2 -2
  127. package/dist/server-main.d.ts.map +1 -1
  128. package/dist/server-main.js +22 -20
  129. package/dist/server-main.js.map +1 -1
  130. package/dist/utils/base-dirs.d.ts +9 -10
  131. package/dist/utils/base-dirs.d.ts.map +1 -1
  132. package/dist/utils/base-dirs.js +28 -30
  133. package/dist/utils/base-dirs.js.map +1 -1
  134. package/dist/utils/scan.d.ts +25 -5
  135. package/dist/utils/scan.d.ts.map +1 -1
  136. package/dist/utils/scan.js +40 -10
  137. package/dist/utils/scan.js.map +1 -1
  138. package/dist/utils/source-context.d.ts +29 -0
  139. package/dist/utils/source-context.d.ts.map +1 -0
  140. package/dist/utils/source-context.js +86 -0
  141. package/dist/utils/source-context.js.map +1 -0
  142. package/dist/utils/sync-path-key.d.ts +1 -1
  143. package/dist/utils/sync-path-key.d.ts.map +1 -1
  144. package/dist/utils/sync-path-key.js +1 -1
  145. package/dist/utils/sync-path-key.js.map +1 -1
  146. package/dist/vectordb/index.d.ts +4 -2
  147. package/dist/vectordb/index.d.ts.map +1 -1
  148. package/dist/vectordb/index.js +30 -7
  149. package/dist/vectordb/index.js.map +1 -1
  150. package/dist/vectordb/relocate.d.ts +18 -0
  151. package/dist/vectordb/relocate.d.ts.map +1 -0
  152. package/dist/vectordb/relocate.js +179 -0
  153. package/dist/vectordb/relocate.js.map +1 -0
  154. package/dist/vectordb/types.d.ts +10 -23
  155. package/dist/vectordb/types.d.ts.map +1 -1
  156. package/dist/vectordb/types.js +14 -23
  157. package/dist/vectordb/types.js.map +1 -1
  158. package/package.json +14 -14
package/README.pt-BR.md CHANGED
@@ -4,10 +4,14 @@
4
4
 
5
5
  # MCP Local RAG
6
6
 
7
- [![GitHub stars](https://img.shields.io/github/stars/shinpr/mcp-local-rag?style=social)](https://github.com/shinpr/mcp-local-rag)
8
- [![npm version](https://img.shields.io/npm/v/mcp-local-rag.svg)](https://www.npmjs.com/package/mcp-local-rag)
9
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10
- [![MCP Registry](https://img.shields.io/badge/MCP-Registry-green.svg)](https://registry.modelcontextprotocol.io/)
7
+ [![GitHub
8
+ stars](https://img.shields.io/github/stars/shinpr/mcp-local-rag?style=social)](https://github.com/shinpr/mcp-local-rag)
9
+ [![npm
10
+ version](https://img.shields.io/npm/v/mcp-local-rag.svg)](https://www.npmjs.com/package/mcp-local-rag)
11
+ [![License:
12
+ MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
13
+ [![MCP
14
+ Registry](https://img.shields.io/badge/MCP-Registry-green.svg)](https://registry.modelcontextprotocol.io/)
11
15
 
12
16
  <p align="center">
13
17
  <a href="README.md">English</a> |
@@ -18,41 +22,52 @@
18
22
  <a href="README.fr.md">Français</a>
19
23
  </p>
20
24
 
21
- Pesquise documentos privados usando um cliente MCP ou o terminal sem enviá-los a uma API de embeddings.
25
+ Pesquise documentos privados usando um cliente MCP ou o terminal sem enviá-los a uma API de
26
+ embeddings.
22
27
 
23
- O mcp-local-rag indexa arquivos PDF, DOCX, Markdown e texto no seu computador. A busca combina similaridade semântica e correspondência por palavras-chave. Assim, leva em conta tanto o sentido da consulta quanto termos técnicos exatos, como nomes de APIs, classes e códigos de erro.
28
+ O mcp-local-rag indexa arquivos PDF, DOCX, Markdown e texto no seu computador. A busca combina
29
+ similaridade semântica e correspondência por palavras-chave. Assim, leva em conta tanto o
30
+ sentido da consulta quanto termos técnicos exatos, como nomes de APIs, classes e códigos de
31
+ erro. Os resultados trazem trechos do documento e, quando disponíveis, títulos de seção e
32
+ números de linha ou página para você conferir e citar o original.
24
33
 
25
- ## Recursos
26
-
27
- - **Execução local:** O processamento dos documentos, os embeddings, o armazenamento e a busca acontecem no seu computador. Depois do primeiro download do modelo, a importação de texto e as buscas funcionam offline.
28
- - **Busca híbrida:** A recuperação semântica encontra conceitos relacionados, enquanto a correspondência por palavras-chave dá mais peso a termos técnicos exatos.
29
- - **Embeddings configuráveis:** Escolha um modelo de embeddings do Hugging Face adequado ao idioma e à área dos seus documentos.
30
- - **Divisão semântica:** Os documentos são divididos nas mudanças de assunto, não por uma quantidade fixa de caracteres. Blocos de código Markdown permanecem intactos.
31
- - **MCP e CLI:** Use o mesmo índice em uma ferramenta de programação com IA ou diretamente no terminal.
32
-
33
- Não é necessário ter chave de API, Docker, Python nem banco de dados externo.
34
+ Não é necessário ter chave de API, Docker, Python nem banco de dados externo. Depois do
35
+ primeiro download do modelo, a importação de texto e a busca funcionam offline.
34
36
 
35
37
  ## Início rápido
36
38
 
37
39
  ### Requisitos
38
40
 
39
- - Node.js 22 ou mais recente
41
+ - Node.js 22.20 ou mais recente
40
42
  - Acesso à internet no primeiro uso para baixar o pacote npm e o modelo de embeddings
41
43
  - Um diretório com os documentos que você quer pesquisar
42
44
 
43
- Defina `BASE_DIR` com o caminho desse diretório. Ele também funciona como limite de segurança para as operações com arquivos. Substitua `/absolute/path/to/your/documents` nos exemplos pelo caminho absoluto do diretório.
45
+ Defina `BASE_DIR` com o caminho desse diretório. Ele também funciona como limite de segurança
46
+ para as operações com arquivos. Substitua `/absolute/path/to/your/documents` nos exemplos pelo
47
+ caminho absoluto do diretório.
44
48
 
45
- O mcp-local-rag usa o protocolo MCP padrão por meio de um servidor stdio local. Assim, ele funciona com ferramentas de programação com IA e outros hosts MCP compatíveis com servidores MCP locais.
49
+ Use um dos exemplos abaixo ou registre `npx -y mcp-local-rag` e defina `BASE_DIR` no formato de
50
+ configuração MCP do seu cliente.
46
51
 
47
- Use um dos exemplos abaixo ou registre `npx -y mcp-local-rag` e defina `BASE_DIR` no formato de configuração MCP do seu cliente.
52
+ Configure também `DB_PATH` e `CACHE_DIR` com caminhos absolutos. Caminhos relativos usam o
53
+ diretório de trabalho do servidor. Se ele for iniciado em projetos diferentes, cada projeto
54
+ terá seu próprio índice e cache de modelos.
48
55
 
49
- **Claude Code:** Execute este comando:
56
+ <details>
57
+ <summary>Claude Code</summary>
58
+
59
+ Execute este comando:
50
60
 
51
61
  ```bash
52
62
  claude mcp add local-rag --scope user --env BASE_DIR=/absolute/path/to/your/documents -- npx -y mcp-local-rag
53
63
  ```
54
64
 
55
- **Codex:** Adicione a `~/.codex/config.toml`:
65
+ </details>
66
+
67
+ <details>
68
+ <summary>Codex</summary>
69
+
70
+ Adicione a `~/.codex/config.toml`:
56
71
 
57
72
  ```toml
58
73
  [mcp_servers.local-rag]
@@ -63,7 +78,12 @@ args = ["-y", "mcp-local-rag"]
63
78
  BASE_DIR = "/absolute/path/to/your/documents"
64
79
  ```
65
80
 
66
- **OpenCode:** Adicione a `~/.config/opencode/opencode.json` (ou `opencode.jsonc`):
81
+ </details>
82
+
83
+ <details>
84
+ <summary>OpenCode</summary>
85
+
86
+ Adicione a `~/.config/opencode/opencode.json` (ou `opencode.jsonc`):
67
87
 
68
88
  ```json
69
89
  {
@@ -80,7 +100,12 @@ BASE_DIR = "/absolute/path/to/your/documents"
80
100
  }
81
101
  ```
82
102
 
83
- **Cursor:** Adicione a `~/.cursor/mcp.json`:
103
+ </details>
104
+
105
+ <details>
106
+ <summary>Cursor</summary>
107
+
108
+ Adicione a `~/.cursor/mcp.json`:
84
109
 
85
110
  ```json
86
111
  {
@@ -96,13 +121,16 @@ BASE_DIR = "/absolute/path/to/your/documents"
96
121
  }
97
122
  ```
98
123
 
124
+ </details>
125
+
99
126
  Reinicie o cliente e peça para ele criar o índice:
100
127
 
101
128
  ```text
102
129
  Sincronize todos os documentos do diretório raiz configurado e aguarde a conclusão.
103
130
  ```
104
131
 
105
- A primeira sincronização baixa o modelo de embeddings padrão (cerca de 90 MB). O início da importação pode levar de 1 a 2 minutos. Nas próximas execuções, o cache local será usado.
132
+ A primeira sincronização baixa o modelo de embeddings padrão (cerca de 90 MB). O início da
133
+ importação pode levar de 1 a 2 minutos. Nas próximas execuções, o cache local será usado.
106
134
 
107
135
  Quando a sincronização terminar, faça uma pergunta:
108
136
 
@@ -119,27 +147,45 @@ npx mcp-local-rag ingest ./docs/
119
147
  npx mcp-local-rag query "API de autenticação"
120
148
  ```
121
149
 
122
- Por padrão, a CLI usa o diretório atual como raiz dos documentos. Execute os dois comandos no mesmo diretório para que usem o mesmo índice padrão ou defina `BASE_DIR` e `DB_PATH` explicitamente.
123
-
124
- ## Por que este projeto existe
125
-
126
- Alguns conjuntos de documentos não podem ser enviados a um serviço de embeddings hospedado devido a requisitos de confidencialidade ou políticas da organização. Mantendo o índice local, esses documentos continuam pesquisáveis sem gerar custo de API por consulta.
127
-
128
- Uma busca puramente semântica pode ignorar identificadores exatos que são importantes na documentação técnica. O reordenamento por palavras-chave mantém esses termos visíveis sem abrir mão das consultas em linguagem natural.
150
+ Por padrão, a CLI usa o diretório atual como raiz dos documentos. Execute os dois comandos no
151
+ mesmo diretório para que usem o mesmo índice padrão ou defina `BASE_DIR` e `DB_PATH`
152
+ explicitamente.
129
153
 
130
154
  ## Conteúdo compatível
131
155
 
132
156
  | Entrada | Como importar |
133
157
  |---|---|
134
158
  | PDF, DOCX, TXT, Markdown | Importação de arquivo ou sincronização de diretório |
135
- | HTML já obtido pelo cliente | `ingest_data`; limpo com Readability e convertido para Markdown |
159
+ | HTML já obtido pelo cliente | `ingest_data` |
136
160
  | Texto simples ou Markdown em memória | `ingest_data` com um identificador de origem estável |
137
161
 
138
- O servidor não busca HTML por conta própria. Um cliente MCP pode obter uma página e enviar o HTML para `ingest_data`.
162
+ O servidor não busca HTML por conta própria. Um cliente MCP pode obter uma página e enviar o
163
+ HTML para `ingest_data`.
164
+
165
+ A importação de arquivos não aceita Excel, PowerPoint, imagens avulsas nem extensões de
166
+ código-fonte. Opcionalmente, arquivos PDF podem usar um modelo visual local para descrever
167
+ figuras, mas esse recurso não é OCR nem busca de imagens.
168
+
169
+ ## Usar o índice
170
+
171
+ Sincronize o índice depois de adicionar, alterar ou remover documentos. Para buscar e ler o
172
+ contexto de um resultado, você pode pedir ao cliente MCP:
139
173
 
140
- A importação de arquivos não aceita Excel, PowerPoint, imagens avulsas nem extensões de código-fonte. Opcionalmente, arquivos PDF podem usar um modelo visual local para descrever figuras, mas esse recurso não é OCR nem busca de imagens.
174
+ ```text
175
+ Busque o que a documentação diz sobre ERR_CONNECTION_REFUSED.
176
+ Leia também os trechos anteriores e posteriores a esse resultado.
177
+ ```
178
+
179
+ Você também pode importar um único arquivo ou HTML que o cliente já tenha obtido. Para atualizar
180
+ uma entrada existente, importe o documento novamente com o mesmo caminho ou identificador de
181
+ origem. `sync` ignora arquivos sem alterações. Os caminhos de arquivos no MCP devem ser
182
+ absolutos e estar dentro de um diretório raiz configurado.
141
183
 
142
- ## Ferramentas MCP
184
+ Os títulos de seção identificados em PDFs podem estar incorretos. Quando precisar do título
185
+ exato, confira na página original.
186
+
187
+ <details>
188
+ <summary>Ferramentas MCP</summary>
143
189
 
144
190
  | Ferramenta | Finalidade |
145
191
  |---|---|
@@ -153,131 +199,138 @@ A importação de arquivos não aceita Excel, PowerPoint, imagens avulsas nem ex
153
199
  | `delete_file` | Excluir um arquivo indexado ou um item de `ingest_data` |
154
200
  | `status` | Mostrar o estado do índice e da busca |
155
201
 
156
- ### Sincronizar um diretório raiz
157
-
158
- `sync_start` importa arquivos novos e alterados, ignora os que são idênticos byte a byte e remove do índice os arquivos que deixaram de existir:
159
-
160
- ```text
161
- Sincronize todo o conteúdo dos diretórios raiz configurados e aguarde a conclusão.
162
- ```
163
-
164
- A ferramenta retorna um `jobId` imediatamente. O cliente deve consultar `sync_status` até o estado mudar para `succeeded` ou `failed`. Um PDF alterado mantém o perfil visual com que foi indexado; um PDF sem perfil registrado continua apenas como texto. `sync_start` não altera o perfil.
165
-
166
- O processo do servidor mantém apenas o registro de um job de sincronização. Um novo job substitui o registro de outro já concluído, e o registro é descartado quando o servidor reinicia.
167
-
168
- ### Importar um arquivo
169
-
170
- `ingest_file` aceita PDF, DOCX, TXT e Markdown. Os caminhos enviados via MCP devem ser absolutos e permanecer dentro de um diretório raiz configurado:
171
-
172
- ```text
173
- Importe o documento /Users/me/docs/api-spec.pdf.
174
- ```
175
-
176
- Importar novamente o mesmo caminho substitui os fragmentos existentes.
177
-
178
- ### Pesquisar e ler mais contexto
202
+ </details>
179
203
 
180
- ```text
181
- O que a documentação da API diz sobre autenticação?
182
- Encontre o comportamento documentado de ERR_CONNECTION_REFUSED.
183
- ```
204
+ ## CLI
184
205
 
185
- Os resultados contêm o texto, o caminho de origem, o título, o índice do fragmento e a pontuação de relevância. Se precisar de mais contexto, envie a `read_chunk_neighbors` o `chunkIndex` e o `filePath` ou `source` do resultado:
206
+ Use a CLI para atualizar o índice, restringir as buscas ou remover conteúdo indexado:
186
207
 
187
- ```text
188
- Leia os fragmentos próximos a esse resultado sobre autenticação.
208
+ ```bash
209
+ npx mcp-local-rag sync ./docs/
210
+ npx mcp-local-rag query "autenticação" --scope /docs/api --scope /docs/guide
211
+ npx mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5
212
+ npx mcp-local-rag list
213
+ npx mcp-local-rag status
214
+ npx mcp-local-rag delete ./docs/old.pdf
215
+ npx mcp-local-rag delete --source "https://example.com/docs"
189
216
  ```
190
217
 
191
- Tanto `query_documents` quanto `list_files` aceitam um prefixo de caminho absoluto opcional em `scope`, ou uma lista de prefixos. Cada prefixo corresponde ao caminho exato e a todos os caminhos abaixo dele.
192
-
193
- ### Importar HTML
218
+ `ingest` importa os arquivos selecionados; `sync` também remove do índice os arquivos excluídos
219
+ e ignora os que não mudaram. Use `--scope` para limitar os resultados a um prefixo de caminho e
220
+ repita a opção para incluir vários prefixos.
194
221
 
195
- Use `ingest_data` depois que o cliente MCP buscar a página:
222
+ Opções globais, como `--db-path`, `--cache-dir` e `--model-name`, vêm antes do subcomando. As
223
+ opções próprias do subcomando vêm depois:
196
224
 
197
- ```text
198
- Busque https://example.com/docs e importe o HTML.
225
+ ```bash
226
+ npx mcp-local-rag --db-path ./my-db query "autenticação"
199
227
  ```
200
228
 
201
- O servidor extrai o artigo principal, converte o conteúdo para Markdown e o armazena com o identificador de origem fornecido. Reutilizar a mesma origem atualiza o conteúdo existente.
202
-
203
- Respeite os termos e os direitos autorais do site de origem ao indexar conteúdo externo.
204
-
205
- ### Figuras em PDF
229
+ Execute `npx mcp-local-rag --help` para consultar a referência completa dos comandos.
206
230
 
207
- O modo visual adiciona uma descrição gerada às páginas de PDF com muitas figuras. Ele é opcional e não carrega um modelo visual durante a importação normal.
231
+ `query` grava os resultados em stdout como JSON, com a melhor correspondência primeiro, para
232
+ que você possa encaminhá-los por pipe a outra ferramenta. A definição de cada campo está em
233
+ [`docs/schema/query-output.schema.json`](docs/schema/query-output.schema.json).
208
234
 
209
- ```text
210
- Importe /Users/me/docs/research-paper.pdf com visual: true.
211
- ```
235
+ Para mover um projeto e manter o índice, pare o servidor MCP e os outros processos de escrita.
236
+ Mova os arquivos e o banco de dados juntos, sem alterar a estrutura de diretórios, e execute:
212
237
 
213
238
  ```bash
214
- npx mcp-local-rag ingest ./docs/research-paper.pdf --visual
239
+ npx mcp-local-rag --db-path /new/project/lancedb relocate --from /old/project --to /new/project
215
240
  ```
216
241
 
217
- | Perfil | Cache do modelo | Indicação |
218
- |---|---:|---|
219
- | `fast` (padrão) | cerca de 250 MB | Indexação visual leve |
220
- | `quality` | cerca de 1,7 GB | Figuras com rótulos, anotações ou outros textos dentro da imagem |
221
-
222
- Selecione o modelo maior com `visualQuality: "quality"` via MCP ou com `--visual-quality quality` pela CLI. Em testes com CPU, a inferência levou cerca do triplo do tempo de `fast`, mas o resultado depende do hardware e das atualizações do modelo.
242
+ Na configuração MCP, atualize `BASE_DIR`/`BASE_DIRS`, `DB_PATH` e os demais caminhos afetados.
243
+ Depois, reinicie o cliente.
223
244
 
224
- #### Atualizar as descrições `quality` existentes
245
+ ## Agent Skills
225
246
 
226
- A partir da 0.18.4, o `quality` usa o Qwen3.5-2B; versões anteriores usavam o Qwen2.5-VL-3B. As descrições já indexadas mantêm o texto do modelo antigo e o `sync` não as refaz, então reimporte os arquivos que você quiser atualizar:
247
+ As [Agent Skills](https://agentskills.io/) orientam assistentes de IA na formulação de
248
+ consultas e na importação de conteúdo:
227
249
 
228
250
  ```bash
229
- npx mcp-local-rag ingest ./docs/research-paper.pdf --visual --visual-quality quality
251
+ npx mcp-local-rag skills install --claude-code
252
+ npx mcp-local-rag skills install --claude-code --global
253
+ npx mcp-local-rag skills install --codex
230
254
  ```
231
255
 
232
- Inclua `--images` se o arquivo foi importado com essa opção, porque uma execução sem ela substitui as imagens armazenadas. O modelo antigo continua no disco. Quando nada mais o usar, apague `onnx-community/Qwen2.5-VL-3B-Instruct-ONNX/` do diretório de cache dos modelos: `<cache-dir>`, cujo padrão é `./models/`.
256
+ As skills instaladas cobrem formulação de consultas, refinamento de resultados e importação de
257
+ HTML. Se uma skill não for ativada automaticamente, peça ao assistente para usar a skill
258
+ mcp-local-rag de forma explícita.
233
259
 
234
- #### Modo visual entre sincronizações
260
+ ## Opções avançadas
235
261
 
236
- O perfil com que um PDF foi indexado fica registrado e o `sync` o reutiliza: um PDF indexado com `fast` ou `quality` é reimportado com esse mesmo perfil e um PDF sem perfil registrado é importado como texto.
262
+ Comece com as configurações padrão. Consulte as seções abaixo se precisar de vários diretórios
263
+ raiz, adaptar a busca aos seus documentos ou pesquisar em figuras de PDF.
237
264
 
238
- ```bash
239
- npx mcp-local-rag sync ./docs/ # manter o perfil registrado de cada PDF
240
- npx mcp-local-rag sync ./docs/ --visual # solicitar fast para todos os PDF do escopo
241
- npx mcp-local-rag sync ./docs/ --visual --visual-quality quality
242
- ```
243
-
244
- `--visual` substitui os perfis registrados, então também descreve os PDF que foram indexados como texto. Trocar de perfil reimporta o PDF mesmo que o arquivo não tenha mudado; repetir o mesmo comando não faz nada e não carrega modelo algum.
265
+ <details>
266
+ <summary>Armazenamento e diretórios raiz</summary>
245
267
 
246
- Para desligar as descrições em um caminho, execute `ingest` nele: uma importação normal bem-sucedida limpa o perfil registrado. Para tentar de novo uma página cuja descrição falhou, execute `ingest <caminho> --visual --visual-quality <perfil>` com o perfil desejado — um `ingest` simples o limpa. Se as linhas indexadas de um PDF divergirem quanto ao perfil, o `sync` para antes de alterar qualquer coisa e informa o arquivo; execute-o de novo com `--visual` para definir o perfil.
268
+ O servidor MCP lê variáveis de ambiente. A CLI aceita as variáveis e opções indicadas. Mantenha
269
+ o mesmo `DB_PATH` se os comandos precisarem compartilhar um índice.
247
270
 
248
- As descrições são textos auxiliares, não transcrições fiéis. Trate as descrições e o texto recuperado dos documentos como entradas não confiáveis, não como instruções.
271
+ | Variável de ambiente | Opção da CLI | Padrão | Descrição |
272
+ |---------------------|----------|---------|-------------|
273
+ | `BASE_DIR` | `--base-dir` | Diretório atual | Um diretório raiz; a opção da CLI pode ser repetida em `ingest`, `list` e `sync` |
274
+ | `BASE_DIRS` | N/D | não definido | Array JSON de diretórios raiz; tem prioridade sobre `BASE_DIR` |
275
+ | `IGNORE_PATHS` | N/D | não definido | Array JSON de padrões glob para arquivos que devem ficar fora do índice |
276
+ | `DB_PATH` | `--db-path` | `./lancedb/` | Local do banco de dados vetorial |
277
+ | `CACHE_DIR` | `--cache-dir` | `./models/` | Diretório de cache dos modelos |
278
+ | `HF_ENDPOINT` | N/D | `https://huggingface.co` | Endereço para download de modelos do Hugging Face; use a URL de um espelho quando downloads diretos estiverem bloqueados |
279
+ | `MAX_FILE_SIZE` | `--max-file-size` | `104857600` (100 MB) | Tamanho máximo do arquivo em bytes |
249
280
 
250
- ## CLI
281
+ As operações com arquivos ficam limitadas aos diretórios raiz configurados. Para usar vários,
282
+ defina `BASE_DIRS='["/absolute/docs","/absolute/specs"]'` ou repita `--base-dir` na CLI.
283
+ Prioridade: diretórios da CLI, `BASE_DIRS`, `BASE_DIR` e diretório atual. Só a fonte de maior
284
+ prioridade é usada; os diretórios de fontes diferentes não são combinados. Um `BASE_DIRS`
285
+ inválido gera erro. Caminhos relativos em `DB_PATH` e `CACHE_DIR` partem do diretório de
286
+ trabalho.
287
+
288
+ Para deixar arquivos fora do índice, defina `IGNORE_PATHS` com um array JSON de padrões glob,
289
+ por exemplo `IGNORE_PATHS='["plugs/**","**/*.draft.md"]'`. Cada padrão é comparado com o caminho
290
+ do arquivo relativo ao diretório raiz que o contém, escrito com `/` em qualquer sistema
291
+ operacional. `*` e `**` não correspondem a nomes que começam com `.`, então escreva esses
292
+ diretórios por extenso, como `".obsidian/**"`. Quando `ingest`, `list` e `sync` percorrem um
293
+ diretório, ignoram os arquivos correspondentes, e `sync` remove do índice os que já estavam
294
+ indexados. Um `IGNORE_PATHS` inválido gera erro.
251
295
 
252
- A CLI usa o mesmo analisador, gerador de embeddings e banco vetorial sem precisar de um cliente MCP:
296
+ </details>
253
297
 
254
- ```bash
255
- npx mcp-local-rag ingest ./docs/
256
- npx mcp-local-rag sync ./docs/
257
- npx mcp-local-rag query "API de autenticação"
258
- npx mcp-local-rag query "autenticação" --scope /docs/api --scope /docs/guide
259
- npx mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5
260
- npx mcp-local-rag list
261
- npx mcp-local-rag status
262
- npx mcp-local-rag delete ./docs/old.pdf
263
- npx mcp-local-rag delete --source "https://example.com/docs"
264
- ```
298
+ <details>
299
+ <summary>Modelos e ajuste da busca</summary>
265
300
 
266
- Opções globais, como `--db-path`, `--cache-dir` e `--model-name`, vêm antes do subcomando. As opções próprias do subcomando vêm depois:
301
+ Escolha um modelo de embeddings adequado ao idioma e ao assunto dos documentos. Compare as
302
+ configurações com suas consultas habituais e confira os trechos retornados. Escolha um modelo
303
+ compatível com mean pooling e normalização L2, usados pela ferramenta para gerar os embeddings.
267
304
 
268
- ```bash
269
- npx mcp-local-rag --db-path ./my-db query "autenticação"
270
- ```
305
+ | Variável de ambiente | Opção da CLI | Padrão | Descrição |
306
+ |---------------------|----------|---------|-------------|
307
+ | `MODEL_NAME` | `--model-name` | `Xenova/all-MiniLM-L6-v2` | Modelo de embeddings do Hugging Face |
308
+ | `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Tamanho mínimo de um fragmento comum em caracteres (1–10000); um trecho resultante da divisão para respeitar o limite de tokens do modelo pode ser menor |
309
+ | `EMBED_TITLE_PREFIX` | N/D | `false` | Acrescenta o título do documento à entrada usada para gerar o embedding de cada fragmento |
310
+ | `EMBED_HEADING_PREFIX` | N/D | `false` | Acrescenta a hierarquia de títulos das seções à entrada de cada fragmento, se couber no limite de tokens |
311
+ | `RAG_DEVICE` | N/D | `cpu` | Dispositivo de execução do ONNX Runtime |
312
+ | `RAG_DTYPE` | N/D | `fp32` | Tipo de dados dos embeddings enviado ao modelo selecionado |
271
313
 
272
- Execute `npx mcp-local-rag --help` para consultar a referência completa dos comandos.
314
+ As duas opções de prefixo vêm desativadas (`false`) e funcionam de forma independente.
315
+ Experimente `EMBED_TITLE_PREFIX` quando um fragmento precisar do assunto geral do documento, ou
316
+ `EMBED_HEADING_PREFIX` quando faltar o assunto da seção. Ativar as duas nem sempre melhora os
317
+ resultados. Elas afetam os embeddings, não o texto retornado nem o índice de palavras-chave; o
318
+ contexto da seção é omitido se ultrapassar o limite de entrada.
273
319
 
274
- A CLI não lê a configuração do cliente MCP. Defina as mesmas variáveis de ambiente ou opções se as duas interfaces precisarem compartilhar um índice. Em particular, `MODEL_NAME` e a opção `--model-name` da CLI devem ser iguais quando usam o mesmo banco de dados.
320
+ Ao mudar o modelo de embeddings, crie um índice novo em outro `DB_PATH`. Vetores de modelos
321
+ diferentes não são comparáveis, mesmo que tenham a mesma dimensão. Ao alterar `RAG_DTYPE` ou
322
+ uma opção de prefixo, importe novamente todos os documentos indexados antes de buscar. `sync`
323
+ ignora arquivos sem alterações.
275
324
 
276
- `query` grava os resultados em stdout como JSON, com a melhor correspondência primeiro, para que você possa encaminhá-los por pipe a outra ferramenta. A definição de cada campo está em [`docs/schema/query-output.schema.json`](docs/schema/query-output.schema.json).
325
+ A CLI não lê a configuração do cliente MCP. Ao compartilhar um índice, use o mesmo modelo,
326
+ `RAG_DTYPE` e configurações de prefixo na importação e na busca. Mudar apenas `RAG_DEVICE` não
327
+ exige um novo índice.
277
328
 
278
- ## Ajuste da busca
329
+ ### Ajustes de busca
279
330
 
280
- O reforço por palavras-chave é ativado por padrão. Para acervos que exigem uma seleção mais restrita, também é possível configurar o agrupamento por saltos de relevância e os filtros de distância e de arquivos. As quatro valem tanto para o servidor MCP quanto para `query` na CLI.
331
+ Os quatro primeiros ajustes da tabela valem tanto para o MCP quanto para a CLI. Para dar mais
332
+ peso aos termos exatos, experimente aumentar `RAG_HYBRID_WEIGHT` e compare os resultados com
333
+ suas próprias perguntas. O reordenamento externo está disponível apenas no MCP.
281
334
 
282
335
  | Variável | Padrão | Descrição |
283
336
  |----------|---------|-------------|
@@ -285,125 +338,84 @@ O reforço por palavras-chave é ativado por padrão. Para acervos que exigem um
285
338
  | `RAG_GROUPING` | não definido | `similar` mantém o primeiro grupo de relevância; `related` mantém até dois e usa saltos relevantes na distância vetorial como limites. |
286
339
  | `RAG_MAX_DISTANCE` | não definido | Descarta resultados pouco relevantes, por exemplo, com `0.5`. |
287
340
  | `RAG_MAX_FILES` | não definido | Limita os resultados aos N arquivos mais bem classificados, por exemplo, `1` para apenas o melhor arquivo. |
288
- | `RAG_RERANK_CMD` | não definido | Somente servidor MCP: comando externo que reordena os resultados. Sua consulta e o texto encontrado são enviados a ele. |
341
+ | `RAG_RERANK_CMD` | não definido | Somente MCP: comando externo; `{query}` passa a consulta e `{top}` a quantidade de resultados solicitada. |
289
342
  | `RAG_RERANK_TIMEOUT_MS` | `10000` | Tempo máximo por reordenamento em milissegundos (100–600000). |
290
343
 
291
- Em especificações de API e outros documentos com muitos identificadores, um peso maior para palavras-chave pode melhorar a classificação de termos exatos:
292
-
293
- ```json
294
- "env": {
295
- "RAG_HYBRID_WEIGHT": "0.7"
296
- }
297
- ```
298
-
299
- - `0.7`: reordenamento de termos exatos um pouco mais forte que o padrão
300
- - `1.0`: reforço máximo por palavras-chave
301
-
302
344
  ### Reordenamento externo (`RAG_RERANK_CMD`)
303
345
 
304
- Informe aqui um comando e o servidor entrega a ele cada conjunto de resultados para reordenar, junto com sua consulta e o texto dos trechos encontrados. Um comando que acessa um serviço remoto envia tudo isso para fora desta máquina.
346
+ O comando recebe os resultados e o texto encontrado pela entrada padrão. Se chamar um serviço
347
+ remoto, esse texto poderá sair do computador.
305
348
 
306
- Escreva o comando e seus argumentos separados por espaços. Precisa ser um executável: o servidor o inicia sem shell, então no Windows um atalho `.cmd` instalado pelo npm não abre.
349
+ Informe o executável e o template completo dos argumentos. Coloque `{query}` e `{top}` onde o
350
+ comando espera a consulta e a quantidade de resultados. Aspas simples ou duplas agrupam
351
+ caminhos ou argumentos com espaços, e as barras invertidas permanecem literais. O servidor
352
+ inicia o executável sem shell, então no Windows um script wrapper `.cmd` instalado pelo npm não
353
+ pode ser executado dessa forma.
307
354
 
308
355
  ```json
309
- "env": {
310
- "RAG_RERANK_CMD": "/path/to/reranker",
311
- "RAG_RERANK_TIMEOUT_MS": "10000"
356
+ {
357
+ "env": {
358
+ "RAG_RERANK_CMD": "/path/to/reranker --query {query} --top {top}",
359
+ "RAG_RERANK_TIMEOUT_MS": "10000"
360
+ }
312
361
  }
313
362
  ```
314
363
 
315
- O comando recebe cada resultado no formato publicado em [`docs/schema/query-output.schema.json`](docs/schema/query-output.schema.json) e precisa responder nesse mesmo formato. Dentro dele o comando decide tudo: o que manter, como ordenar e o que o texto diz. O que ele devolver é o que você vê.
316
-
317
- Os resultados mantêm a ordem original se o comando falhar, estourar o tempo ou responder com algo fora desse formato.
364
+ O comando deve ler e devolver os resultados no formato definido pelo [esquema de
365
+ saída](docs/schema/query-output.schema.json). Ele pode remover ou reordenar resultados e
366
+ modificar o texto. O servidor retorna a saída do comando.
318
367
 
319
- ## Como funciona
368
+ Os resultados mantêm a ordem original se o comando falhar, exceder o tempo limite ou devolver
369
+ uma resposta que não siga o esquema.
320
370
 
321
- Durante a importação:
322
-
323
- 1. O analisador extrai o texto do formato de entrada.
324
- 2. O divisor semântico encontra as mudanças de assunto e preserva os blocos de código Markdown.
325
- 3. O Transformers.js cria os embeddings localmente.
326
- 4. O LanceDB armazena os fragmentos, metadados, vetores e o índice de texto completo.
371
+ </details>
327
372
 
328
- Durante a busca:
373
+ <details>
374
+ <summary>Figuras PDF e imagens armazenadas</summary>
329
375
 
330
- 1. A consulta é convertida em embedding pelo mesmo modelo.
331
- 2. A busca vetorial recupera fragmentos relacionados pelo significado.
332
- 3. Quando configurados, os filtros opcionais de distância e os grupos de relevância reduzem os candidatos.
333
- 4. As correspondências de texto completo reforçam os termos exatos da consulta.
376
+ Por padrão, a importação indexa apenas texto. Para pesquisar também nas figuras de PDF, ative a
377
+ geração local de descrições com `visual: true` no MCP ou `--visual` na CLI. São descrições
378
+ geradas, não OCR nem transcrições exatas.
334
379
 
335
- ## Agent Skills
380
+ `fast` (padrão) baixa cerca de 250 MB no primeiro uso. Escolha `quality` para rótulos e texto
381
+ dentro das figuras; ele baixa cerca de 1,7 GB e leva mais tempo para processar.
336
382
 
337
- As [Agent Skills](https://agentskills.io/) orientam assistentes de IA na formulação de consultas e na importação de conteúdo:
383
+ Selecione o perfil com `visualQuality: "quality"` no MCP ou `--visual-quality quality` na CLI.
338
384
 
339
385
  ```bash
340
- npx mcp-local-rag skills install --claude-code
341
- npx mcp-local-rag skills install --claude-code --global
342
- npx mcp-local-rag skills install --codex
386
+ npx mcp-local-rag ingest ./docs/paper.pdf --visual --visual-quality quality
343
387
  ```
344
388
 
345
- As skills instaladas cobrem formulação de consultas, refinamento de resultados e importação de HTML. Se uma skill não for ativada automaticamente, peça ao assistente para usar a skill mcp-local-rag de forma explícita.
346
-
347
- ## Configuração
348
-
349
- O servidor MCP lê variáveis de ambiente. A CLI aceita as mesmas variáveis e as opções listadas na tabela; as opções da CLI têm prioridade.
350
-
351
- | Variável de ambiente | Opção da CLI | Padrão | Descrição |
352
- |---------------------|----------|---------|-------------|
353
- | `BASE_DIR` | `--base-dir` | Diretório atual | Um diretório raiz; a opção da CLI pode ser repetida em `ingest`, `list` e `sync` |
354
- | `BASE_DIRS` | N/D | não definido | Array JSON de diretórios raiz; tem prioridade sobre `BASE_DIR` |
355
- | `DB_PATH` | `--db-path` | `./lancedb/` | Local do banco de dados vetorial |
356
- | `CACHE_DIR` | `--cache-dir` | `./models/` | Diretório de cache dos modelos |
357
- | `HF_ENDPOINT` | N/D | `https://huggingface.co` | Endereço para download de modelos do Hugging Face; use a URL de um espelho quando downloads diretos estiverem bloqueados |
358
- | `MODEL_NAME` | `--model-name` | `Xenova/all-MiniLM-L6-v2` | Modelo de embeddings do Hugging Face |
359
- | `MAX_FILE_SIZE` | `--max-file-size` | `104857600` (100 MB) | Tamanho máximo do arquivo em bytes |
360
- | `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Tamanho mínimo de um fragmento comum em caracteres (1–10000); um trecho resultante da divisão para respeitar o limite de tokens do modelo pode ser menor |
361
- | `RAG_DEVICE` | N/D | `cpu` | Dispositivo de execução do ONNX Runtime |
362
- | `RAG_DTYPE` | N/D | `fp32` | Tipo de dados dos embeddings enviado ao modelo selecionado |
363
-
364
- ### Diretórios raiz (`BASE_DIR` e `BASE_DIRS`)
365
-
366
- O mcp-local-rag só permite operações com arquivos dentro dos diretórios raiz configurados. Para usar vários diretórios, `BASE_DIRS` deve ser um array JSON de caminhos não vazios:
367
-
368
- ```bash
369
- export BASE_DIRS='["/Users/me/Documents/work","/Users/me/Projects/specs"]'
370
- ```
371
-
372
- A configuração é resolvida nesta ordem:
373
-
374
- 1. Opções `--base-dir <path>` da CLI (podem ser repetidas em `ingest`, `list` e `sync`)
375
- 2. `BASE_DIRS`
376
- 3. `BASE_DIR`
377
- 4. Diretório atual
378
-
379
- Cada origem substitui a de menor prioridade, em vez de ser combinada com ela. Uma configuração inválida de `BASE_DIRS` produz um erro, sem recorrer a `BASE_DIR` ou ao diretório atual. `status` continua disponível no MCP para que o cliente possa informar o erro de configuração.
389
+ Para receber imagens junto com os trechos encontrados, use `STORE_IMAGES=true` no MCP ou
390
+ `--images` com `ingest` e `sync` na CLI. A opção independe das descrições e aceita figuras e
391
+ tabelas detectadas em PDFs, além das imagens PNG/JPEG compatíveis de DOCX.
380
392
 
381
393
  ```bash
382
- npx mcp-local-rag ingest --base-dir /Users/me/work --base-dir /Users/me/specs /Users/me/work/readme.md
383
- npx mcp-local-rag list --base-dir /Users/me/work --base-dir /Users/me/specs
384
- npx mcp-local-rag sync --base-dir /Users/me/work --base-dir /Users/me/specs
385
- BASE_DIRS='["/Users/me/work","/Users/me/specs"]' npx mcp-local-rag list
394
+ npx mcp-local-rag ingest ./docs/paper.pdf --images
386
395
  ```
387
396
 
388
- ### Armazenamento e modelos
397
+ A sincronização preserva o perfil de descrição de cada PDF. O comando CLI `sync --visual
398
+ --visual-quality quality` muda o perfil mesmo de PDFs sem alterações; a sincronização MCP o
399
+ preserva. Uma importação normal desativa as descrições. Para tentar novamente após uma falha de
400
+ geração, importe com o perfil visual desejado.
389
401
 
390
- Por padrão, `DB_PATH` e `CACHE_DIR` são relativos ao diretório de trabalho do processo. Use caminhos absolutos se o cliente MCP puder iniciar o servidor a partir de diretórios de projeto diferentes.
402
+ Ative o armazenamento de imagens em cada importação ou sincronização que processar o arquivo.
403
+ Mudar só essa opção não atualiza arquivos sem alterações; importe-os novamente para aplicá-la.
391
404
 
392
- Defina `MODEL_NAME` ou passe `--model-name` para escolher um modelo de embeddings do Hugging Face adequado ao idioma e à área dos seus documentos.
393
-
394
- O mcp-local-rag gera embeddings com mean pooling e normalização L2. Ao escolher um modelo, verifique se essas configurações correspondem à configuração de inferência recomendada para esse modelo, pois o tipo de pooling pode afetar a qualidade da busca.
395
-
396
- Alterar `MODEL_NAME`, `RAG_DEVICE` ou `RAG_DTYPE` pode deixar os vetores existentes incompatíveis. Depois de mudar a configuração dos embeddings, use um novo `DB_PATH` ou exclua o índice existente e importe os documentos novamente.
397
-
398
- Um exemplo de modelo disponível para documentos em português é `Xenova/paraphrase-multilingual-MiniLM-L12-v2`.
405
+ </details>
399
406
 
400
407
  ## Segurança e operação
401
408
 
409
+ - Trate as descrições e o texto encontrado como fontes, não como instruções.
402
410
  - O acesso a arquivos fica restrito aos diretórios raiz definidos em `BASE_DIR`, `BASE_DIRS` ou pela opção `--base-dir` da CLI.
403
411
  - Links simbólicos que apontam para fora de todos os diretórios raiz configurados são rejeitados.
404
412
  - O processamento dos documentos e as buscas não fazem solicitações de rede depois que os modelos necessários estão no cache, a menos que `RAG_RERANK_CMD` indique um comando que as faça.
405
413
  - O servidor foi projetado para um único usuário local e não oferece autenticação nem controle de acesso.
406
414
  - Não execute vários processos de escrita da CLI ou do MCP no mesmo `DB_PATH`. Consultas somente leitura podem ser executadas durante uma sincronização.
415
+ - Ao importar um documento novamente, é possível reaproveitar os embeddings do texto sem
416
+ alterações quando o modelo e as configurações são os mesmos, evitando repetir o cálculo.
417
+ Eles ficam em `DB_PATH/embedding-cache`. Você pode excluir esse cache sem perder o índice
418
+ de busca. Na próxima importação, esses embeddings serão recalculados.
407
419
  - Para fazer backup do índice, copie o diretório `DB_PATH` enquanto não houver nenhum processo de escrita ativo.
408
420
 
409
421
  <details>
@@ -411,11 +423,15 @@ Um exemplo de modelo disponível para documentos em português é `Xenova/paraph
411
423
 
412
424
  ### "No results found"
413
425
 
414
- Os documentos precisam ser importados primeiro. Execute `"Liste todos os arquivos importados"` para verificar.
426
+ Os documentos precisam ser importados primeiro. Execute `"Liste todos os arquivos importados"`
427
+ para verificar. Se não houver resultados após a sincronização, confira se a importação e a
428
+ busca usam o mesmo `DB_PATH` absoluto. Um caminho relativo pode apontar para outro índice.
415
429
 
416
430
  ### Falha no download do modelo
417
431
 
418
- Verifique a conexão com a internet. Se estiver usando um proxy, revise as configurações de rede. O modelo também pode ser [baixado manualmente](https://huggingface.co/Xenova/all-MiniLM-L6-v2).
432
+ Verifique a conexão com a internet. Se estiver usando um proxy, revise as configurações de
433
+ rede. O modelo também pode ser [baixado
434
+ manualmente](https://huggingface.co/Xenova/all-MiniLM-L6-v2).
419
435
 
420
436
  ### "File too large"
421
437
 
@@ -423,11 +439,13 @@ O limite padrão é 100 MB. Divida o arquivo ou aumente `MAX_FILE_SIZE`.
423
439
 
424
440
  ### Consultas lentas
425
441
 
426
- Verifique a quantidade de fragmentos com `status`. Documentos grandes, com muitos fragmentos, podem deixar as consultas mais lentas. Considere dividir arquivos muito grandes.
442
+ Verifique a quantidade de fragmentos com `status`. Documentos grandes, com muitos fragmentos,
443
+ podem deixar as consultas mais lentas. Considere dividir arquivos muito grandes.
427
444
 
428
445
  ### "Path outside BASE_DIR"
429
446
 
430
- O caminho precisa estar dentro de um dos diretórios raiz configurados: `BASE_DIR`, uma entrada de `BASE_DIRS` ou um caminho definido por `--base-dir` na CLI. Use um caminho absoluto.
447
+ O caminho precisa estar dentro de um dos diretórios raiz configurados: `BASE_DIR`, uma entrada
448
+ de `BASE_DIRS` ou um caminho definido por `--base-dir` na CLI. Use um caminho absoluto.
431
449
 
432
450
  ### "BASE_DIRS must be a JSON array..."
433
451
 
@@ -447,7 +465,8 @@ O caminho precisa estar dentro de um dos diretórios raiz configurados: `BASE_DI
447
465
 
448
466
  ## Como contribuir
449
467
 
450
- Contribuições são bem-vindas. Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para preparar o ambiente e conferir as orientações.
468
+ Contribuições são bem-vindas. Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para preparar o
469
+ ambiente e conferir as orientações.
451
470
 
452
471
  ## Licença
453
472
 
@@ -459,4 +478,6 @@ Licença MIT. Uso gratuito para fins pessoais e comerciais.
459
478
 
460
479
  ## Agradecimentos
461
480
 
462
- Desenvolvido com o [Model Context Protocol](https://modelcontextprotocol.io/) da Anthropic, o [LanceDB](https://lancedb.com/) e o [Transformers.js](https://huggingface.co/docs/transformers.js).
481
+ Desenvolvido com o [Model Context Protocol](https://modelcontextprotocol.io/) da Anthropic, o
482
+ [LanceDB](https://lancedb.com/) e o
483
+ [Transformers.js](https://huggingface.co/docs/transformers.js).