abb-opencode-local-rag 0.1.2 → 0.1.3
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.
- package/dist/bin/install-skills.d.ts +4 -4
- package/dist/bin/install-skills.js +20 -20
- package/dist/bin/install-skills.js.map +1 -1
- package/dist/cli/delete.js +1 -1
- package/dist/cli/ingest.js +2 -2
- package/dist/cli/ingest.js.map +1 -1
- package/dist/cli/list.js +1 -1
- package/dist/cli/options.js +2 -2
- package/dist/cli/options.js.map +1 -1
- package/dist/cli/query.js +2 -2
- package/dist/cli/query.js.map +1 -1
- package/dist/cli/read-neighbors.js +2 -2
- package/dist/cli/status.js +1 -1
- package/dist/cli/sync.js +1 -1
- package/dist/cli-main.js +2 -2
- package/dist/cli-main.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server-main.d.ts +1 -1
- package/dist/server-main.js +1 -1
- package/package.json +4 -47
- package/README.de.md +0 -416
- package/README.es.md +0 -416
- package/README.fr.md +0 -416
- package/README.md +0 -491
- package/README.pt-BR.md +0 -416
- package/README.zh-CN.md +0 -416
- package/skills/mcp-local-rag/SKILL.md +0 -308
- package/skills/mcp-local-rag/references/cli-reference.md +0 -175
- package/skills/mcp-local-rag/references/html-ingestion.md +0 -78
- package/skills/mcp-local-rag/references/query-optimization.md +0 -57
- package/skills/mcp-local-rag/references/result-refinement.md +0 -56
package/README.pt-BR.md
DELETED
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="assets/banner.jpg" alt="MCP Local RAG: Search below the surface." width="600" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
# MCP Local RAG
|
|
6
|
-
|
|
7
|
-
[](https://github.com/shinpr/mcp-local-rag)
|
|
8
|
-
[](https://www.npmjs.com/package/mcp-local-rag)
|
|
9
|
-
[](https://opensource.org/licenses/MIT)
|
|
10
|
-
[](https://registry.modelcontextprotocol.io/)
|
|
11
|
-
|
|
12
|
-
<p align="center">
|
|
13
|
-
<a href="README.md">English</a> |
|
|
14
|
-
<a href="README.zh-CN.md">简体中文</a> |
|
|
15
|
-
<a href="README.de.md">Deutsch</a> |
|
|
16
|
-
<a href="README.es.md">Español</a> |
|
|
17
|
-
<strong>Português (Brasil)</strong> |
|
|
18
|
-
<a href="README.fr.md">Français</a>
|
|
19
|
-
</p>
|
|
20
|
-
|
|
21
|
-
Pesquise documentos privados usando um cliente MCP ou o terminal sem enviá-los a uma API de embeddings.
|
|
22
|
-
|
|
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.
|
|
24
|
-
|
|
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
|
-
|
|
35
|
-
## Início rápido
|
|
36
|
-
|
|
37
|
-
### Requisitos
|
|
38
|
-
|
|
39
|
-
- Node.js 22 ou mais recente
|
|
40
|
-
- Acesso à internet no primeiro uso para baixar o pacote npm e o modelo de embeddings
|
|
41
|
-
- Um diretório com os documentos que você quer pesquisar
|
|
42
|
-
|
|
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.
|
|
44
|
-
|
|
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.
|
|
46
|
-
|
|
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.
|
|
48
|
-
|
|
49
|
-
**Claude Code:** Execute este comando:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
claude mcp add local-rag --scope user --env BASE_DIR=/absolute/path/to/your/documents -- npx -y mcp-local-rag
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Codex:** Adicione a `~/.codex/config.toml`:
|
|
56
|
-
|
|
57
|
-
```toml
|
|
58
|
-
[mcp_servers.local-rag]
|
|
59
|
-
command = "npx"
|
|
60
|
-
args = ["-y", "mcp-local-rag"]
|
|
61
|
-
|
|
62
|
-
[mcp_servers.local-rag.env]
|
|
63
|
-
BASE_DIR = "/absolute/path/to/your/documents"
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**OpenCode:** Adicione a `~/.config/opencode/opencode.json` (ou `opencode.jsonc`):
|
|
67
|
-
|
|
68
|
-
```json
|
|
69
|
-
{
|
|
70
|
-
"$schema": "https://opencode.ai/config.json",
|
|
71
|
-
"mcp": {
|
|
72
|
-
"local-rag": {
|
|
73
|
-
"type": "local",
|
|
74
|
-
"command": ["npx", "-y", "mcp-local-rag"],
|
|
75
|
-
"environment": {
|
|
76
|
-
"BASE_DIR": "/absolute/path/to/your/documents"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
**Cursor:** Adicione a `~/.cursor/mcp.json`:
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"mcpServers": {
|
|
88
|
-
"local-rag": {
|
|
89
|
-
"command": "npx",
|
|
90
|
-
"args": ["-y", "mcp-local-rag"],
|
|
91
|
-
"env": {
|
|
92
|
-
"BASE_DIR": "/absolute/path/to/your/documents"
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Reinicie o cliente e peça para ele criar o índice:
|
|
100
|
-
|
|
101
|
-
```text
|
|
102
|
-
Sincronize todos os documentos do diretório raiz configurado e aguarde a conclusão.
|
|
103
|
-
```
|
|
104
|
-
|
|
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.
|
|
106
|
-
|
|
107
|
-
Quando a sincronização terminar, faça uma pergunta:
|
|
108
|
-
|
|
109
|
-
```text
|
|
110
|
-
O que a documentação da API diz sobre autenticação?
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Início rápido pela CLI
|
|
114
|
-
|
|
115
|
-
Para usar a CLI sem um cliente MCP:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
npx mcp-local-rag ingest ./docs/
|
|
119
|
-
npx mcp-local-rag query "API de autenticação"
|
|
120
|
-
```
|
|
121
|
-
|
|
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.
|
|
129
|
-
|
|
130
|
-
## Conteúdo compatível
|
|
131
|
-
|
|
132
|
-
| Entrada | Como importar |
|
|
133
|
-
|---|---|
|
|
134
|
-
| 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 |
|
|
136
|
-
| Texto simples ou Markdown em memória | `ingest_data` com um identificador de origem estável |
|
|
137
|
-
|
|
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`.
|
|
139
|
-
|
|
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.
|
|
141
|
-
|
|
142
|
-
## Ferramentas MCP
|
|
143
|
-
|
|
144
|
-
| Ferramenta | Finalidade |
|
|
145
|
-
|---|---|
|
|
146
|
-
| `sync_start` | Sincronizar o índice com todos os diretórios raiz configurados ou com um caminho |
|
|
147
|
-
| `sync_status` | Consultar uma sincronização em andamento |
|
|
148
|
-
| `ingest_file` | Importar ou substituir um arquivo |
|
|
149
|
-
| `ingest_data` | Importar texto, Markdown ou HTML que já esteja disponível no cliente |
|
|
150
|
-
| `query_documents` | Pesquisar com correspondência semântica e reforço por palavras-chave |
|
|
151
|
-
| `read_chunk_neighbors` | Ler os fragmentos próximos a um resultado de busca |
|
|
152
|
-
| `list_files` | Mostrar os arquivos compatíveis e o estado de importação |
|
|
153
|
-
| `delete_file` | Excluir um arquivo indexado ou um item de `ingest_data` |
|
|
154
|
-
| `status` | Mostrar o estado do índice e da busca |
|
|
155
|
-
|
|
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`. Não há modo visual durante a sincronização; arquivos PDF alterados são importados como texto.
|
|
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
|
|
179
|
-
|
|
180
|
-
```text
|
|
181
|
-
O que a documentação da API diz sobre autenticação?
|
|
182
|
-
Encontre o comportamento documentado de ERR_CONNECTION_REFUSED.
|
|
183
|
-
```
|
|
184
|
-
|
|
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:
|
|
186
|
-
|
|
187
|
-
```text
|
|
188
|
-
Leia os fragmentos próximos a esse resultado sobre autenticação.
|
|
189
|
-
```
|
|
190
|
-
|
|
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
|
|
194
|
-
|
|
195
|
-
Use `ingest_data` depois que o cliente MCP buscar a página:
|
|
196
|
-
|
|
197
|
-
```text
|
|
198
|
-
Busque https://example.com/docs e importe o HTML.
|
|
199
|
-
```
|
|
200
|
-
|
|
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
|
|
206
|
-
|
|
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.
|
|
208
|
-
|
|
209
|
-
```text
|
|
210
|
-
Importe /Users/me/docs/research-paper.pdf com visual: true.
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
npx mcp-local-rag ingest ./docs/research-paper.pdf --visual
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
| Perfil | Cache do modelo | Indicação |
|
|
218
|
-
|---|---:|---|
|
|
219
|
-
| `fast` (padrão) | cerca de 250 MB | Indexação visual leve |
|
|
220
|
-
| `quality` | cerca de 2,9 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 dobro do tempo de `fast`, mas o resultado depende do hardware e das atualizações do modelo.
|
|
223
|
-
|
|
224
|
-
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.
|
|
225
|
-
|
|
226
|
-
## CLI
|
|
227
|
-
|
|
228
|
-
A CLI usa o mesmo analisador, gerador de embeddings e banco vetorial sem precisar de um cliente MCP:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
npx mcp-local-rag ingest ./docs/
|
|
232
|
-
npx mcp-local-rag sync ./docs/
|
|
233
|
-
npx mcp-local-rag query "API de autenticação"
|
|
234
|
-
npx mcp-local-rag query "autenticação" --scope /docs/api --scope /docs/guide
|
|
235
|
-
npx mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5
|
|
236
|
-
npx mcp-local-rag list
|
|
237
|
-
npx mcp-local-rag status
|
|
238
|
-
npx mcp-local-rag delete ./docs/old.pdf
|
|
239
|
-
npx mcp-local-rag delete --source "https://example.com/docs"
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
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:
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
npx mcp-local-rag --db-path ./my-db query "autenticação"
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
Execute `npx mcp-local-rag --help` para consultar a referência completa dos comandos.
|
|
249
|
-
|
|
250
|
-
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.
|
|
251
|
-
|
|
252
|
-
## Ajuste da busca
|
|
253
|
-
|
|
254
|
-
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.
|
|
255
|
-
|
|
256
|
-
| Variável | Padrão | Descrição |
|
|
257
|
-
|----------|---------|-------------|
|
|
258
|
-
| `RAG_HYBRID_WEIGHT` | `0.6` | Fator de reforço por palavras-chave (0.0–1.0). 0 desativa o reordenamento por palavras-chave e 1 aplica o reforço máximo. |
|
|
259
|
-
| `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. |
|
|
260
|
-
| `RAG_MAX_DISTANCE` | não definido | Descarta resultados pouco relevantes, por exemplo, com `0.5`. |
|
|
261
|
-
| `RAG_MAX_FILES` | não definido | Limita os resultados aos N arquivos mais bem classificados, por exemplo, `1` para apenas o melhor arquivo. |
|
|
262
|
-
|
|
263
|
-
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:
|
|
264
|
-
|
|
265
|
-
```json
|
|
266
|
-
"env": {
|
|
267
|
-
"RAG_HYBRID_WEIGHT": "0.7"
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
- `0.7`: reordenamento de termos exatos um pouco mais forte que o padrão
|
|
272
|
-
- `1.0`: reforço máximo por palavras-chave
|
|
273
|
-
|
|
274
|
-
## Como funciona
|
|
275
|
-
|
|
276
|
-
Durante a importação:
|
|
277
|
-
|
|
278
|
-
1. O analisador extrai o texto do formato de entrada.
|
|
279
|
-
2. O divisor semântico encontra as mudanças de assunto e preserva os blocos de código Markdown.
|
|
280
|
-
3. O Transformers.js cria os embeddings localmente.
|
|
281
|
-
4. O LanceDB armazena os fragmentos, metadados, vetores e o índice de texto completo.
|
|
282
|
-
|
|
283
|
-
Durante a busca:
|
|
284
|
-
|
|
285
|
-
1. A consulta é convertida em embedding pelo mesmo modelo.
|
|
286
|
-
2. A busca vetorial recupera fragmentos relacionados pelo significado.
|
|
287
|
-
3. Quando configurados, os filtros opcionais de distância e os grupos de relevância reduzem os candidatos.
|
|
288
|
-
4. As correspondências de texto completo reforçam os termos exatos da consulta.
|
|
289
|
-
|
|
290
|
-
## Agent Skills
|
|
291
|
-
|
|
292
|
-
As [Agent Skills](https://agentskills.io/) orientam assistentes de IA na formulação de consultas e na importação de conteúdo:
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
|
-
npx mcp-local-rag skills install --claude-code
|
|
296
|
-
npx mcp-local-rag skills install --claude-code --global
|
|
297
|
-
npx mcp-local-rag skills install --codex
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
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.
|
|
301
|
-
|
|
302
|
-
## Configuração
|
|
303
|
-
|
|
304
|
-
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.
|
|
305
|
-
|
|
306
|
-
| Variável de ambiente | Opção da CLI | Padrão | Descrição |
|
|
307
|
-
|---------------------|----------|---------|-------------|
|
|
308
|
-
| `BASE_DIR` | `--base-dir` | Diretório atual | Um diretório raiz; a opção da CLI pode ser repetida em `ingest`, `list` e `sync` |
|
|
309
|
-
| `BASE_DIRS` | N/D | não definido | Array JSON de diretórios raiz; tem prioridade sobre `BASE_DIR` |
|
|
310
|
-
| `DB_PATH` | `--db-path` | `./lancedb/` | Local do banco de dados vetorial |
|
|
311
|
-
| `CACHE_DIR` | `--cache-dir` | `./models/` | Diretório de cache dos modelos |
|
|
312
|
-
| `MODEL_NAME` | `--model-name` | `Xenova/all-MiniLM-L6-v2` | Modelo de embeddings do Hugging Face |
|
|
313
|
-
| `MAX_FILE_SIZE` | `--max-file-size` | `104857600` (100 MB) | Tamanho máximo do arquivo em bytes |
|
|
314
|
-
| `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Tamanho mínimo de um fragmento em caracteres (1–10000) |
|
|
315
|
-
| `RAG_DEVICE` | N/D | `cpu` | Dispositivo de execução do ONNX Runtime |
|
|
316
|
-
| `RAG_DTYPE` | N/D | `fp32` | Tipo de dados dos embeddings enviado ao modelo selecionado |
|
|
317
|
-
|
|
318
|
-
### Diretórios raiz (`BASE_DIR` e `BASE_DIRS`)
|
|
319
|
-
|
|
320
|
-
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:
|
|
321
|
-
|
|
322
|
-
```bash
|
|
323
|
-
export BASE_DIRS='["/Users/me/Documents/work","/Users/me/Projects/specs"]'
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
A configuração é resolvida nesta ordem:
|
|
327
|
-
|
|
328
|
-
1. Opções `--base-dir <path>` da CLI (podem ser repetidas em `ingest`, `list` e `sync`)
|
|
329
|
-
2. `BASE_DIRS`
|
|
330
|
-
3. `BASE_DIR`
|
|
331
|
-
4. Diretório atual
|
|
332
|
-
|
|
333
|
-
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.
|
|
334
|
-
|
|
335
|
-
```bash
|
|
336
|
-
npx mcp-local-rag ingest --base-dir /Users/me/work --base-dir /Users/me/specs /Users/me/work/readme.md
|
|
337
|
-
npx mcp-local-rag list --base-dir /Users/me/work --base-dir /Users/me/specs
|
|
338
|
-
npx mcp-local-rag sync --base-dir /Users/me/work --base-dir /Users/me/specs
|
|
339
|
-
BASE_DIRS='["/Users/me/work","/Users/me/specs"]' npx mcp-local-rag list
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
### Armazenamento e modelos
|
|
343
|
-
|
|
344
|
-
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.
|
|
345
|
-
|
|
346
|
-
Defina `MODEL_NAME` ou passe `--model-name` para escolher um modelo de embeddings do Hugging Face adequado ao idioma e à área dos seus documentos.
|
|
347
|
-
|
|
348
|
-
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.
|
|
349
|
-
|
|
350
|
-
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.
|
|
351
|
-
|
|
352
|
-
Um exemplo de modelo disponível para documentos em português é `Xenova/paraphrase-multilingual-MiniLM-L12-v2`.
|
|
353
|
-
|
|
354
|
-
## Segurança e operação
|
|
355
|
-
|
|
356
|
-
- O acesso a arquivos fica restrito aos diretórios raiz definidos em `BASE_DIR`, `BASE_DIRS` ou pela opção `--base-dir` da CLI.
|
|
357
|
-
- Links simbólicos que apontam para fora de todos os diretórios raiz configurados são rejeitados.
|
|
358
|
-
- O processamento dos documentos e as buscas não fazem solicitações de rede depois que os modelos necessários estão no cache.
|
|
359
|
-
- O servidor foi projetado para um único usuário local e não oferece autenticação nem controle de acesso.
|
|
360
|
-
- 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.
|
|
361
|
-
- Para fazer backup do índice, copie o diretório `DB_PATH` enquanto não houver nenhum processo de escrita ativo.
|
|
362
|
-
|
|
363
|
-
<details>
|
|
364
|
-
<summary><strong>Solução de problemas</strong></summary>
|
|
365
|
-
|
|
366
|
-
### "No results found"
|
|
367
|
-
|
|
368
|
-
Os documentos precisam ser importados primeiro. Execute `"Liste todos os arquivos importados"` para verificar.
|
|
369
|
-
|
|
370
|
-
### Falha no download do modelo
|
|
371
|
-
|
|
372
|
-
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).
|
|
373
|
-
|
|
374
|
-
### "File too large"
|
|
375
|
-
|
|
376
|
-
O limite padrão é 100 MB. Divida o arquivo ou aumente `MAX_FILE_SIZE`.
|
|
377
|
-
|
|
378
|
-
### Consultas lentas
|
|
379
|
-
|
|
380
|
-
Verifique a quantidade de fragmentos com `status`. Documentos grandes, com muitos fragmentos, podem deixar as consultas mais lentas. Considere dividir arquivos muito grandes.
|
|
381
|
-
|
|
382
|
-
### "Path outside BASE_DIR"
|
|
383
|
-
|
|
384
|
-
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.
|
|
385
|
-
|
|
386
|
-
### "BASE_DIRS must be a JSON array..."
|
|
387
|
-
|
|
388
|
-
`BASE_DIRS` aceita um array JSON com um ou mais caminhos não vazios:
|
|
389
|
-
|
|
390
|
-
- Válido: `BASE_DIRS='["/Users/me/work","/Users/me/specs"]'`
|
|
391
|
-
- Inválido: `BASE_DIRS=/a:/b` (a sintaxe com separadores não é aceita)
|
|
392
|
-
- Inválido: `BASE_DIRS='[]'` (array vazio)
|
|
393
|
-
|
|
394
|
-
### O cliente MCP não mostra as ferramentas
|
|
395
|
-
|
|
396
|
-
1. Verifique a sintaxe do arquivo de configuração
|
|
397
|
-
2. Feche o cliente por completo e abra novamente (Cmd+Q no Mac para o Cursor)
|
|
398
|
-
3. Teste diretamente: `npx mcp-local-rag` deve iniciar sem erros
|
|
399
|
-
|
|
400
|
-
</details>
|
|
401
|
-
|
|
402
|
-
## Como contribuir
|
|
403
|
-
|
|
404
|
-
Contribuições são bem-vindas. Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para preparar o ambiente e conferir as orientações.
|
|
405
|
-
|
|
406
|
-
## Licença
|
|
407
|
-
|
|
408
|
-
Licença MIT. Uso gratuito para fins pessoais e comerciais.
|
|
409
|
-
|
|
410
|
-
## Artigos do blog
|
|
411
|
-
|
|
412
|
-
- [Building a Local RAG for Agentic Coding](https://www.norsica.jp/blog/local-rag-agentic-coding): análise técnica do design da divisão semântica e da busca híbrida.
|
|
413
|
-
|
|
414
|
-
## Agradecimentos
|
|
415
|
-
|
|
416
|
-
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).
|