@ssmeo/mcp-local-rag 0.18.13 → 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 (165) 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/download-model.d.ts +3 -0
  19. package/dist/cli/download-model.d.ts.map +1 -0
  20. package/dist/cli/download-model.js +21 -0
  21. package/dist/cli/download-model.js.map +1 -0
  22. package/dist/cli/file-collection.d.ts +2 -1
  23. package/dist/cli/file-collection.d.ts.map +1 -1
  24. package/dist/cli/file-collection.js +2 -2
  25. package/dist/cli/file-collection.js.map +1 -1
  26. package/dist/cli/ingest.d.ts +1 -0
  27. package/dist/cli/ingest.d.ts.map +1 -1
  28. package/dist/cli/ingest.js +45 -25
  29. package/dist/cli/ingest.js.map +1 -1
  30. package/dist/cli/list.d.ts.map +1 -1
  31. package/dist/cli/list.js +9 -13
  32. package/dist/cli/list.js.map +1 -1
  33. package/dist/cli/options.d.ts +8 -0
  34. package/dist/cli/options.d.ts.map +1 -1
  35. package/dist/cli/options.js +21 -0
  36. package/dist/cli/options.js.map +1 -1
  37. package/dist/cli/query.d.ts.map +1 -1
  38. package/dist/cli/query.js +2 -1
  39. package/dist/cli/query.js.map +1 -1
  40. package/dist/cli/read-neighbors.d.ts.map +1 -1
  41. package/dist/cli/read-neighbors.js +1 -0
  42. package/dist/cli/read-neighbors.js.map +1 -1
  43. package/dist/cli/relocate.d.ts +3 -0
  44. package/dist/cli/relocate.d.ts.map +1 -0
  45. package/dist/cli/relocate.js +135 -0
  46. package/dist/cli/relocate.js.map +1 -0
  47. package/dist/cli/sync.d.ts.map +1 -1
  48. package/dist/cli/sync.js +17 -8
  49. package/dist/cli/sync.js.map +1 -1
  50. package/dist/cli-main.d.ts +1 -1
  51. package/dist/cli-main.d.ts.map +1 -1
  52. package/dist/cli-main.js +5 -0
  53. package/dist/cli-main.js.map +1 -1
  54. package/dist/embedder/embedding-snapshot.d.ts +52 -0
  55. package/dist/embedder/embedding-snapshot.d.ts.map +1 -0
  56. package/dist/embedder/embedding-snapshot.js +413 -0
  57. package/dist/embedder/embedding-snapshot.js.map +1 -0
  58. package/dist/embedder/index.d.ts +36 -5
  59. package/dist/embedder/index.d.ts.map +1 -1
  60. package/dist/embedder/index.js +351 -24
  61. package/dist/embedder/index.js.map +1 -1
  62. package/dist/embedder/remote.d.ts +42 -4
  63. package/dist/embedder/remote.d.ts.map +1 -1
  64. package/dist/embedder/remote.js +113 -5
  65. package/dist/embedder/remote.js.map +1 -1
  66. package/dist/embedder/sentence-transformers-config.d.ts +24 -0
  67. package/dist/embedder/sentence-transformers-config.d.ts.map +1 -0
  68. package/dist/embedder/sentence-transformers-config.js +93 -0
  69. package/dist/embedder/sentence-transformers-config.js.map +1 -0
  70. package/dist/features/sync.js +1 -1
  71. package/dist/features/sync.js.map +1 -1
  72. package/dist/ingest/compute.d.ts +15 -7
  73. package/dist/ingest/compute.d.ts.map +1 -1
  74. package/dist/ingest/compute.js +74 -14
  75. package/dist/ingest/compute.js.map +1 -1
  76. package/dist/ingest/file.d.ts +3 -3
  77. package/dist/ingest/file.d.ts.map +1 -1
  78. package/dist/ingest/file.js +0 -5
  79. package/dist/ingest/file.js.map +1 -1
  80. package/dist/ingest/visual.d.ts +6 -2
  81. package/dist/ingest/visual.d.ts.map +1 -1
  82. package/dist/ingest/visual.js +20 -4
  83. package/dist/ingest/visual.js.map +1 -1
  84. package/dist/parser/docx-parser.d.ts +2 -0
  85. package/dist/parser/docx-parser.d.ts.map +1 -1
  86. package/dist/parser/docx-parser.js +12 -3
  87. package/dist/parser/docx-parser.js.map +1 -1
  88. package/dist/parser/index.d.ts +11 -1
  89. package/dist/parser/index.d.ts.map +1 -1
  90. package/dist/parser/index.js +27 -11
  91. package/dist/parser/index.js.map +1 -1
  92. package/dist/parser/pdf-extract.d.ts +2 -0
  93. package/dist/parser/pdf-extract.d.ts.map +1 -1
  94. package/dist/parser/pdf-extract.js +3 -0
  95. package/dist/parser/pdf-extract.js.map +1 -1
  96. package/dist/parser/pdf-filter.d.ts +2 -9
  97. package/dist/parser/pdf-filter.d.ts.map +1 -1
  98. package/dist/parser/pdf-filter.js +110 -144
  99. package/dist/parser/pdf-filter.js.map +1 -1
  100. package/dist/parser/pdf-headings.d.ts +6 -0
  101. package/dist/parser/pdf-headings.d.ts.map +1 -0
  102. package/dist/parser/pdf-headings.js +166 -0
  103. package/dist/parser/pdf-headings.js.map +1 -0
  104. package/dist/parser/text-source-map.d.ts +3 -0
  105. package/dist/parser/text-source-map.d.ts.map +1 -0
  106. package/dist/parser/text-source-map.js +33 -0
  107. package/dist/parser/text-source-map.js.map +1 -0
  108. package/dist/pdf-visual/captioner.d.ts.map +1 -1
  109. package/dist/pdf-visual/captioner.js +7 -4
  110. package/dist/pdf-visual/captioner.js.map +1 -1
  111. package/dist/pdf-visual/detector.js +3 -3
  112. package/dist/pdf-visual/detector.js.map +1 -1
  113. package/dist/rerank/command.d.ts +10 -7
  114. package/dist/rerank/command.d.ts.map +1 -1
  115. package/dist/rerank/command.js +51 -10
  116. package/dist/rerank/command.js.map +1 -1
  117. package/dist/rerank/index.d.ts +3 -3
  118. package/dist/rerank/index.d.ts.map +1 -1
  119. package/dist/rerank/index.js +3 -3
  120. package/dist/rerank/index.js.map +1 -1
  121. package/dist/server/index.d.ts +8 -1
  122. package/dist/server/index.d.ts.map +1 -1
  123. package/dist/server/index.js +129 -81
  124. package/dist/server/index.js.map +1 -1
  125. package/dist/server/list-scanner.d.ts +2 -1
  126. package/dist/server/list-scanner.d.ts.map +1 -1
  127. package/dist/server/list-scanner.js +2 -2
  128. package/dist/server/list-scanner.js.map +1 -1
  129. package/dist/server/tool-definitions.js +2 -2
  130. package/dist/server/tool-definitions.js.map +1 -1
  131. package/dist/server/types.d.ts +9 -0
  132. package/dist/server/types.d.ts.map +1 -1
  133. package/dist/server-main.d.ts +2 -2
  134. package/dist/server-main.d.ts.map +1 -1
  135. package/dist/server-main.js +22 -20
  136. package/dist/server-main.js.map +1 -1
  137. package/dist/utils/base-dirs.d.ts +9 -10
  138. package/dist/utils/base-dirs.d.ts.map +1 -1
  139. package/dist/utils/base-dirs.js +28 -30
  140. package/dist/utils/base-dirs.js.map +1 -1
  141. package/dist/utils/scan.d.ts +25 -5
  142. package/dist/utils/scan.d.ts.map +1 -1
  143. package/dist/utils/scan.js +40 -10
  144. package/dist/utils/scan.js.map +1 -1
  145. package/dist/utils/source-context.d.ts +29 -0
  146. package/dist/utils/source-context.d.ts.map +1 -0
  147. package/dist/utils/source-context.js +86 -0
  148. package/dist/utils/source-context.js.map +1 -0
  149. package/dist/utils/sync-path-key.d.ts +1 -1
  150. package/dist/utils/sync-path-key.d.ts.map +1 -1
  151. package/dist/utils/sync-path-key.js +1 -1
  152. package/dist/utils/sync-path-key.js.map +1 -1
  153. package/dist/vectordb/index.d.ts +4 -2
  154. package/dist/vectordb/index.d.ts.map +1 -1
  155. package/dist/vectordb/index.js +33 -8
  156. package/dist/vectordb/index.js.map +1 -1
  157. package/dist/vectordb/relocate.d.ts +18 -0
  158. package/dist/vectordb/relocate.d.ts.map +1 -0
  159. package/dist/vectordb/relocate.js +179 -0
  160. package/dist/vectordb/relocate.js.map +1 -0
  161. package/dist/vectordb/types.d.ts +10 -23
  162. package/dist/vectordb/types.d.ts.map +1 -1
  163. package/dist/vectordb/types.js +14 -23
  164. package/dist/vectordb/types.js.map +1 -1
  165. package/package.json +14 -14
package/README.es.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
- Busca en documentos privados desde un cliente MCP o desde la terminal sin enviarlos a una API de embeddings.
25
+ Busca en documentos privados desde un cliente MCP o desde la terminal sin enviarlos a una API
26
+ de embeddings.
22
27
 
23
- mcp-local-rag indexa archivos PDF, DOCX y Markdown, además de archivos de texto, en tu equipo. La búsqueda combina similitud semántica y coincidencia de palabras clave. Así tiene en cuenta tanto el sentido de la consulta como los términos técnicos exactos, por ejemplo nombres de API, clases y códigos de error.
28
+ mcp-local-rag indexa archivos PDF, DOCX y Markdown, además de archivos de texto, en tu equipo.
29
+ La búsqueda combina similitud semántica y coincidencia de palabras clave. Así tiene en cuenta
30
+ tanto el sentido de la consulta como los términos técnicos exactos, por ejemplo nombres de API,
31
+ clases y códigos de error. Los resultados incluyen pasajes del documento y, cuando están
32
+ disponibles, títulos de sección y números de línea o página para consultar y citar el original.
24
33
 
25
- ## Funciones
26
-
27
- - **Ejecución local:** El análisis de documentos, los embeddings, el almacenamiento y la búsqueda se realizan en tu equipo. Después de descargar el modelo por primera vez, la incorporación de texto y las búsquedas funcionan sin conexión.
28
- - **Búsqueda híbrida:** La recuperación semántica encuentra conceptos relacionados y la coincidencia de palabras clave da más peso a los términos técnicos exactos.
29
- - **Embeddings configurables:** Puedes elegir un modelo de embeddings de Hugging Face adecuado para el idioma y el ámbito de tus documentos.
30
- - **Segmentación semántica:** Los documentos se dividen cuando cambia el tema, no cada cierto número de caracteres. Los bloques de código Markdown se mantienen intactos.
31
- - **MCP y CLI:** Usa el mismo índice desde una herramienta de programación con IA o directamente desde la terminal.
32
-
33
- No hace falta una clave de API, Docker, Python ni una base de datos externa.
34
+ No hace falta una clave de API, Docker, Python ni una base de datos externa. Tras descargar el
35
+ modelo por primera vez, la incorporación de texto y la búsqueda funcionan sin conexión.
34
36
 
35
37
  ## Inicio rápido
36
38
 
37
39
  ### Requisitos
38
40
 
39
- - Node.js 22 o posterior
41
+ - Node.js 22.20 o posterior
40
42
  - Acceso a Internet durante el primer uso para descargar el paquete npm y el modelo de embeddings
41
43
  - Un directorio con los documentos que quieras consultar
42
44
 
43
- Asigna ese directorio a `BASE_DIR`. También será el límite de seguridad para las operaciones con archivos. Sustituye `/absolute/path/to/your/documents` en los ejemplos por la ruta absoluta del directorio.
45
+ Asigna ese directorio a `BASE_DIR`. También será el límite de seguridad para las operaciones
46
+ con archivos. Sustituye `/absolute/path/to/your/documents` en los ejemplos por la ruta absoluta
47
+ del directorio.
44
48
 
45
- mcp-local-rag usa el protocolo MCP estándar mediante un servidor stdio local. Por eso funciona con herramientas de programación con IA y otros hosts MCP que admitan servidores MCP locales.
49
+ Usa uno de los ejemplos siguientes o registra `npx -y mcp-local-rag` y configura `BASE_DIR` con
50
+ el formato de configuración MCP de tu cliente.
46
51
 
47
- Usa uno de los ejemplos siguientes o registra `npx -y mcp-local-rag` y configura `BASE_DIR` con el formato de configuración MCP de tu cliente.
52
+ Configura también `DB_PATH` y `CACHE_DIR` con rutas absolutas. Las rutas relativas parten del
53
+ directorio de trabajo del servidor, por lo que iniciarlo desde distintos proyectos crea un
54
+ índice y una caché de modelos en cada uno.
48
55
 
49
- **Claude Code:** Ejecuta este comando:
56
+ <details>
57
+ <summary>Claude Code</summary>
58
+
59
+ Ejecuta 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:** Añade lo siguiente a `~/.codex/config.toml`:
65
+ </details>
66
+
67
+ <details>
68
+ <summary>Codex</summary>
69
+
70
+ Añade lo siguiente 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:** Añade lo siguiente a `~/.config/opencode/opencode.json` (o `opencode.jsonc`):
81
+ </details>
82
+
83
+ <details>
84
+ <summary>OpenCode</summary>
85
+
86
+ Añade lo siguiente a `~/.config/opencode/opencode.json` (o `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:** Añade lo siguiente a `~/.cursor/mcp.json`:
103
+ </details>
104
+
105
+ <details>
106
+ <summary>Cursor</summary>
107
+
108
+ Añade lo siguiente a `~/.cursor/mcp.json`:
84
109
 
85
110
  ```json
86
111
  {
@@ -96,13 +121,17 @@ BASE_DIR = "/absolute/path/to/your/documents"
96
121
  }
97
122
  ```
98
123
 
124
+ </details>
125
+
99
126
  Reinicia el cliente y pídele que construya el índice:
100
127
 
101
128
  ```text
102
129
  Sincroniza todos los documentos del directorio raíz configurado y espera a que termine.
103
130
  ```
104
131
 
105
- La primera sincronización descarga el modelo de embeddings predeterminado (unos 90 MB). Pueden pasar entre 1 y 2 minutos antes de que comience la incorporación. Las ejecuciones posteriores usan la caché local.
132
+ La primera sincronización descarga el modelo de embeddings predeterminado (unos 90 MB). Pueden
133
+ pasar entre 1 y 2 minutos antes de que comience la incorporación. Las ejecuciones posteriores
134
+ usan la caché local.
106
135
 
107
136
  Cuando termine la sincronización, prueba con una consulta:
108
137
 
@@ -119,27 +148,45 @@ npx mcp-local-rag ingest ./docs/
119
148
  npx mcp-local-rag query "API de autenticación"
120
149
  ```
121
150
 
122
- La CLI usa el directorio actual como raíz de documentos de forma predeterminada. Ejecuta ambos comandos desde el mismo directorio para que compartan el índice predeterminado, o configura `BASE_DIR` y `DB_PATH` de forma explícita.
123
-
124
- ## Por qué existe
125
-
126
- Algunos conjuntos de documentos no se pueden enviar a un servicio de embeddings alojado por motivos de confidencialidad o por las políticas de una organización. Un índice local permite consultarlos sin añadir un coste de API por búsqueda.
127
-
128
- Una búsqueda puramente semántica puede pasar por alto identificadores exactos que son importantes en la documentación técnica. El reajuste por palabras clave mantiene visibles esos términos sin renunciar a las consultas en lenguaje natural.
151
+ La CLI usa el directorio actual como raíz de documentos de forma predeterminada. Ejecuta ambos
152
+ comandos desde el mismo directorio para que compartan el índice predeterminado, o configura
153
+ `BASE_DIR` y `DB_PATH` de forma explícita.
129
154
 
130
155
  ## Contenido compatible
131
156
 
132
157
  | Entrada | Cómo incorporarla |
133
158
  |---|---|
134
159
  | PDF, DOCX, TXT, Markdown | Incorporación de archivos o sincronización de directorios |
135
- | HTML ya obtenido por el cliente | `ingest_data`; se limpia con Readability y se convierte a Markdown |
160
+ | HTML ya obtenido por el cliente | `ingest_data` |
136
161
  | Texto sin formato o Markdown en memoria | `ingest_data` con un identificador de origen estable |
137
162
 
138
- El servidor no descarga páginas HTML. Un cliente MCP puede obtener una página y pasar su HTML a `ingest_data`.
163
+ El servidor no descarga páginas HTML. Un cliente MCP puede obtener una página y pasar su HTML a
164
+ `ingest_data`.
165
+
166
+ La incorporación de archivos no admite Excel, PowerPoint, imágenes independientes ni
167
+ extensiones de código fuente. De forma opcional, los PDF pueden usar un modelo visual local
168
+ para describir figuras, pero esta función no es OCR ni búsqueda de imágenes.
169
+
170
+ ## Usar el índice
171
+
172
+ Sincroniza el índice después de añadir, modificar o eliminar documentos. Para buscar y ampliar
173
+ el contexto, puedes pedirle al cliente MCP:
139
174
 
140
- La incorporación de archivos no admite Excel, PowerPoint, imágenes independientes ni extensiones de código fuente. De forma opcional, los PDF pueden usar un modelo visual local para describir figuras, pero esta función no es OCR ni búsqueda de imágenes.
175
+ ```text
176
+ Busca qué dice la documentación sobre ERR_CONNECTION_REFUSED.
177
+ Lee también los segmentos anteriores y posteriores a ese resultado.
178
+ ```
179
+
180
+ También puedes incorporar un solo archivo o HTML que el cliente ya haya obtenido. Para
181
+ actualizar una entrada existente, vuelve a incorporar el documento con la misma ruta o
182
+ identificador de origen. `sync` omite los archivos sin cambios. Las rutas de archivos en MCP
183
+ deben ser absolutas y estar dentro de un directorio raíz configurado.
141
184
 
142
- ## Herramientas MCP
185
+ Los títulos de sección detectados en un PDF pueden ser incorrectos. Si necesitas el título
186
+ exacto, compruébalo en la página original.
187
+
188
+ <details>
189
+ <summary>Herramientas MCP</summary>
143
190
 
144
191
  | Herramienta | Función |
145
192
  |---|---|
@@ -153,131 +200,140 @@ La incorporación de archivos no admite Excel, PowerPoint, imágenes independien
153
200
  | `delete_file` | Eliminar un archivo indexado o un elemento de `ingest_data` |
154
201
  | `status` | Mostrar el estado del índice y de la búsqueda |
155
202
 
156
- ### Sincronizar un directorio raíz
157
-
158
- `sync_start` incorpora archivos nuevos o modificados, omite los que son idénticos byte a byte y elimina del índice los archivos que ya no existen:
159
-
160
- ```text
161
- Sincroniza todo el contenido de los directorios raíz configurados y espera a que termine.
162
- ```
163
-
164
- La herramienta devuelve un `jobId` de inmediato. El cliente debe consultar `sync_status` hasta que el estado sea `succeeded` o `failed`. Un PDF modificado conserva el perfil visual con el que se indexó; un PDF sin perfil registrado se mantiene solo como texto. `sync_start` no puede cambiar el perfil.
165
-
166
- El proceso del servidor solo conserva un trabajo de sincronización. Un trabajo nuevo sustituye el registro de uno ya terminado y el registro se pierde al reiniciar el servidor.
167
-
168
- ### Incorporar un archivo
169
-
170
- `ingest_file` admite PDF, DOCX, TXT y Markdown. Las rutas de archivo enviadas mediante MCP deben ser absolutas y estar dentro de un directorio raíz configurado:
171
-
172
- ```text
173
- Incorpora el documento /Users/me/docs/api-spec.pdf.
174
- ```
175
-
176
- Si se vuelve a incorporar la misma ruta, sus segmentos anteriores se sustituyen.
177
-
178
- ### Buscar y leer más contexto
203
+ </details>
179
204
 
180
- ```text
181
- ¿Qué dice la documentación de la API sobre la autenticación?
182
- Busca el comportamiento documentado de ERR_CONNECTION_REFUSED.
183
- ```
205
+ ## CLI
184
206
 
185
- Los resultados contienen el texto, la ruta de origen, el título, el índice del segmento y la puntuación de relevancia. Si necesitas más contexto, pasa a `read_chunk_neighbors` el `chunkIndex` y el `filePath` o `source` del resultado:
207
+ Usa la CLI para actualizar el índice, acotar las búsquedas o eliminar contenido indexado:
186
208
 
187
- ```text
188
- Lee los segmentos contiguos a ese resultado sobre autenticación.
209
+ ```bash
210
+ npx mcp-local-rag sync ./docs/
211
+ npx mcp-local-rag query "autenticación" --scope /docs/api --scope /docs/guide
212
+ npx mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5
213
+ npx mcp-local-rag list
214
+ npx mcp-local-rag status
215
+ npx mcp-local-rag delete ./docs/old.pdf
216
+ npx mcp-local-rag delete --source "https://example.com/docs"
189
217
  ```
190
218
 
191
- Tanto `query_documents` como `list_files` aceptan un prefijo de ruta absoluto opcional en `scope`, o una lista de prefijos. Cada prefijo coincide con la ruta exacta y con todo lo que contiene.
192
-
193
- ### Incorporar HTML
219
+ `ingest` incorpora los archivos seleccionados; `sync` también retira del índice los archivos
220
+ eliminados y omite los que no han cambiado. Usa `--scope` para limitar los resultados a un
221
+ prefijo de ruta y repítelo para incluir varios prefijos.
194
222
 
195
- Usa `ingest_data` después de que el cliente MCP haya obtenido la página:
223
+ Las opciones globales, como `--db-path`, `--cache-dir` y `--model-name`, van antes del
224
+ subcomando. Las opciones propias del subcomando van después:
196
225
 
197
- ```text
198
- Obtén https://example.com/docs e incorpora el HTML.
226
+ ```bash
227
+ npx mcp-local-rag --db-path ./my-db query "autenticación"
199
228
  ```
200
229
 
201
- El servidor extrae el artículo principal, lo convierte a Markdown y lo guarda con el identificador de origen indicado. Si se reutiliza el mismo origen, se actualiza el contenido existente.
202
-
203
- Respeta las condiciones y los derechos de autor del sitio de origen al indexar contenido externo.
204
-
205
- ### Figuras de PDF
230
+ Ejecuta `npx mcp-local-rag --help` para ver la referencia completa de comandos.
206
231
 
207
- El modo visual añade una descripción generada a las páginas de un PDF que contienen muchas figuras. Es opcional y no carga ningún modelo visual durante una incorporación normal.
232
+ `query` escribe sus resultados en stdout como JSON, con la mejor coincidencia primero, de modo
233
+ que puedes canalizarlos hacia otra herramienta. La definición de cada campo está en
234
+ [`docs/schema/query-output.schema.json`](docs/schema/query-output.schema.json).
208
235
 
209
- ```text
210
- Incorpora /Users/me/docs/research-paper.pdf con visual: true.
211
- ```
236
+ Si vas a mover un proyecto y quieres conservar su índice, detén el servidor MCP y los demás
237
+ procesos de escritura. Mueve juntos los archivos y la base de datos, manteniendo la estructura
238
+ de directorios, y ejecuta:
212
239
 
213
240
  ```bash
214
- npx mcp-local-rag ingest ./docs/research-paper.pdf --visual
241
+ npx mcp-local-rag --db-path /new/project/lancedb relocate --from /old/project --to /new/project
215
242
  ```
216
243
 
217
- | Perfil | Caché del modelo | Uso |
218
- |---|---:|---|
219
- | `fast` (predeterminado) | unos 250 MB | Indexación visual ligera |
220
- | `quality` | unos 1,7 GB | Figuras con etiquetas, anotaciones u otro texto dentro de la imagen |
221
-
222
- Selecciona el modelo más grande con `visualQuality: "quality"` en MCP o con `--visual-quality quality` en la CLI. En pruebas con CPU, la inferencia tardó aproximadamente el triple que con `fast`, aunque el resultado depende del hardware y de las actualizaciones del modelo.
244
+ En la configuración MCP, actualiza `BASE_DIR`/`BASE_DIRS`, `DB_PATH` y las demás rutas
245
+ afectadas. Luego reinicia el cliente.
223
246
 
224
- #### Actualizar las descripciones `quality` existentes
247
+ ## Agent Skills
225
248
 
226
- Desde 0.18.4, `quality` usa Qwen3.5-2B; las versiones anteriores usaban Qwen2.5-VL-3B. Las descripciones ya indexadas conservan el texto del modelo anterior y `sync` no las regenera, así que vuelve a importar los archivos que quieras actualizar:
249
+ Las [Agent Skills](https://agentskills.io/) ofrecen a los asistentes de IA instrucciones para
250
+ formular consultas e incorporar contenido:
227
251
 
228
252
  ```bash
229
- npx mcp-local-rag ingest ./docs/research-paper.pdf --visual --visual-quality quality
253
+ npx mcp-local-rag skills install --claude-code
254
+ npx mcp-local-rag skills install --claude-code --global
255
+ npx mcp-local-rag skills install --codex
230
256
  ```
231
257
 
232
- Añade `--images` si el archivo se incorporó con esa opción, porque una ejecución sin ella reemplaza las imágenes almacenadas. El modelo anterior permanece en el disco. Cuando ya nada lo use, elimina `onnx-community/Qwen2.5-VL-3B-Instruct-ONNX/` del directorio de caché de modelos: `<cache-dir>`, que por defecto es `./models/`.
258
+ Las habilidades instaladas cubren la formulación de consultas, el refinamiento de resultados y
259
+ la incorporación de HTML. Si alguna no se activa de forma automática, pide al asistente que use
260
+ de manera explícita la habilidad mcp-local-rag.
233
261
 
234
- #### Modo visual entre sincronizaciones
262
+ ## Opciones avanzadas
235
263
 
236
- El perfil con el que se indexó un PDF queda registrado y `sync` lo reutiliza: un PDF indexado con `fast` o `quality` se vuelve a incorporar con ese mismo perfil y un PDF sin perfil registrado se incorpora como texto.
264
+ Empieza con la configuración predeterminada. Consulta las siguientes secciones si necesitas
265
+ varios directorios raíz, adaptar la búsqueda a tus documentos o buscar en figuras de PDF.
237
266
 
238
- ```bash
239
- npx mcp-local-rag sync ./docs/ # conservar el perfil registrado de cada PDF
240
- npx mcp-local-rag sync ./docs/ --visual # solicitar fast para todos los PDF del ámbito
241
- npx mcp-local-rag sync ./docs/ --visual --visual-quality quality
242
- ```
243
-
244
- `--visual` sustituye los perfiles registrados, así que también describe los PDF que se indexaron como texto. Cambiar de perfil vuelve a incorporar el PDF aunque el archivo no haya cambiado; repetir el mismo comando no hace nada ni carga ningún modelo.
267
+ <details>
268
+ <summary>Almacenamiento y directorios raíz</summary>
245
269
 
246
- Para desactivar las descripciones en una ruta, ejecuta `ingest` sobre ella: una incorporación normal correcta borra el perfil registrado. Para reintentar una página cuya descripción falló, ejecuta `ingest <ruta> --visual --visual-quality <perfil>` con el perfil que quieras: un `ingest` sin más lo borra. Si las filas indexadas de un PDF no coinciden en el perfil, `sync` se detiene antes de cambiar nada e indica el archivo; vuelve a ejecutarlo con `--visual` para fijar el perfil.
270
+ El servidor MCP lee variables de entorno. La CLI acepta las variables y opciones indicadas.
271
+ Mantén el mismo `DB_PATH` si los comandos deben compartir un índice.
247
272
 
248
- Las descripciones son texto auxiliar, no transcripciones fieles. Trata las descripciones y el texto recuperado de los documentos como entradas no fiables, no como instrucciones.
273
+ | Variable de entorno | Opción de la CLI | Valor predeterminado | Descripción |
274
+ |---------------------|----------|---------|-------------|
275
+ | `BASE_DIR` | `--base-dir` | Directorio actual | Un directorio raíz; la opción de la CLI puede repetirse en `ingest`, `list` y `sync` |
276
+ | `BASE_DIRS` | No disponible | sin configurar | Matriz JSON de directorios raíz; tiene prioridad sobre `BASE_DIR` |
277
+ | `IGNORE_PATHS` | No disponible | sin configurar | Matriz JSON de patrones glob para archivos que deben quedar fuera del índice |
278
+ | `DB_PATH` | `--db-path` | `./lancedb/` | Ubicación de la base de datos vectorial |
279
+ | `CACHE_DIR` | `--cache-dir` | `./models/` | Directorio de caché de modelos |
280
+ | `HF_ENDPOINT` | No disponible | `https://huggingface.co` | Dirección de descarga de modelos de Hugging Face; usa la URL de un servidor espejo si las descargas directas están bloqueadas |
281
+ | `MAX_FILE_SIZE` | `--max-file-size` | `104857600` (100 MB) | Tamaño máximo del archivo en bytes |
249
282
 
250
- ## CLI
283
+ Las operaciones con archivos se limitan a los directorios raíz configurados. Para usar varios,
284
+ configura `BASE_DIRS='["/absolute/docs","/absolute/specs"]'` o repite `--base-dir` en la CLI.
285
+ Prioridad: directorios de la CLI, `BASE_DIRS`, `BASE_DIR` y directorio actual. Solo se usa la
286
+ fuente de mayor prioridad; los directorios de distintas fuentes no se combinan. Un `BASE_DIRS`
287
+ incorrecto produce un error. Las rutas relativas de `DB_PATH` y `CACHE_DIR` parten del
288
+ directorio de trabajo.
289
+
290
+ Para dejar archivos fuera del índice, configura `IGNORE_PATHS` con una matriz JSON de patrones
291
+ glob, por ejemplo `IGNORE_PATHS='["plugs/**","**/*.draft.md"]'`. Cada patrón se compara con la
292
+ ruta del archivo relativa al directorio raíz que lo contiene, escrita con `/` en cualquier
293
+ sistema operativo. `*` y `**` no coinciden con nombres que empiezan por `.`, así que escribe
294
+ esos directorios completos, como `".obsidian/**"`. Cuando `ingest`, `list` y `sync` recorren un
295
+ directorio, omiten los archivos que coinciden, y `sync` retira del índice los que ya estaban
296
+ indexados. Un `IGNORE_PATHS` incorrecto produce un error.
251
297
 
252
- La CLI usa el mismo analizador, generador de embeddings y almacén vectorial sin necesidad de un cliente MCP:
298
+ </details>
253
299
 
254
- ```bash
255
- npx mcp-local-rag ingest ./docs/
256
- npx mcp-local-rag sync ./docs/
257
- npx mcp-local-rag query "API de autenticación"
258
- npx mcp-local-rag query "autenticación" --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
- ```
300
+ <details>
301
+ <summary>Modelos y ajuste de la búsqueda</summary>
265
302
 
266
- Las opciones globales, como `--db-path`, `--cache-dir` y `--model-name`, van antes del subcomando. Las opciones propias del subcomando van después:
303
+ Elige un modelo de embeddings adecuado para el idioma y el tema de tus documentos. Compara los
304
+ ajustes con tus consultas habituales y comprueba los pasajes que devuelve la búsqueda. Elige un
305
+ modelo compatible con mean pooling y normalización L2, que son los métodos usados para generar
306
+ los embeddings.
267
307
 
268
- ```bash
269
- npx mcp-local-rag --db-path ./my-db query "autenticación"
270
- ```
308
+ | Variable de entorno | Opción de la CLI | Valor predeterminado | Descripción |
309
+ |---------------------|----------|---------|-------------|
310
+ | `MODEL_NAME` | `--model-name` | `Xenova/all-MiniLM-L6-v2` | Modelo de embeddings de Hugging Face |
311
+ | `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Longitud mínima de un segmento normal en caracteres (1–10000); un fragmento resultante de dividir contenido para respetar el límite de tokens del modelo puede ser más corto |
312
+ | `EMBED_TITLE_PREFIX` | No disponible | `false` | Añade el título del documento a la entrada usada para generar el embedding de cada segmento |
313
+ | `EMBED_HEADING_PREFIX` | No disponible | `false` | Añade la jerarquía de títulos de sección a la entrada de cada segmento, si cabe en el límite de tokens |
314
+ | `RAG_DEVICE` | No disponible | `cpu` | Dispositivo de ejecución de ONNX Runtime |
315
+ | `RAG_DTYPE` | No disponible | `fp32` | Tipo de datos de los embeddings que recibe el modelo seleccionado |
271
316
 
272
- Ejecuta `npx mcp-local-rag --help` para ver la referencia completa de comandos.
317
+ Ambas opciones de prefijo están desactivadas por defecto (`false`) y son independientes. Prueba
318
+ `EMBED_TITLE_PREFIX` cuando un segmento necesite el tema general del documento, o
319
+ `EMBED_HEADING_PREFIX` cuando le falte el tema de su sección. Activar ambas no siempre mejora
320
+ los resultados. Afectan a los embeddings, no al texto devuelto ni al índice de palabras clave;
321
+ el contexto de sección se omite si supera el presupuesto de entrada.
273
322
 
274
- La CLI no lee la configuración del cliente MCP. Configura las mismas variables de entorno u opciones si ambas interfaces deben compartir un índice. En particular, `MODEL_NAME` y la opción `--model-name` de la CLI deben coincidir cuando usan la misma base de datos.
323
+ Al cambiar de modelo de embeddings, crea un índice nuevo en otro `DB_PATH`. Los vectores de
324
+ modelos distintos no son comparables, aunque tengan las mismas dimensiones. Si cambias
325
+ `RAG_DTYPE` o una opción de prefijo, vuelve a incorporar todos los documentos indexados antes
326
+ de buscar. `sync` omite los archivos sin cambios.
275
327
 
276
- `query` escribe sus resultados en stdout como JSON, con la mejor coincidencia primero, de modo que puedes canalizarlos hacia otra herramienta. La definición de cada campo está en [`docs/schema/query-output.schema.json`](docs/schema/query-output.schema.json).
328
+ La CLI no lee la configuración del cliente MCP. Si comparten un índice, usa el mismo modelo,
329
+ `RAG_DTYPE` y ajustes de prefijo al incorporar documentos y al buscar. Cambiar únicamente
330
+ `RAG_DEVICE` no exige crear otro índice.
277
331
 
278
- ## Ajuste de la búsqueda
332
+ ### Ajustes de búsqueda
279
333
 
280
- El refuerzo de palabras clave está activado de forma predeterminada. Para corpus que necesiten una selección más estricta, también se pueden configurar la agrupación por saltos de relevancia y los filtros de distancia y de archivos. Las cuatro se aplican por igual al servidor MCP y a `query` en la CLI.
334
+ Los primeros cuatro ajustes de la tabla se aplican tanto a MCP como a la CLI. Para dar más peso
335
+ a los términos exactos, prueba a subir `RAG_HYBRID_WEIGHT` y compara los resultados con tus
336
+ propias consultas. El reordenamiento externo solo está disponible en MCP.
281
337
 
282
338
  | Variable | Valor predeterminado | Descripción |
283
339
  |----------|---------|-------------|
@@ -285,125 +341,86 @@ El refuerzo de palabras clave está activado de forma predeterminada. Para corpu
285
341
  | `RAG_GROUPING` | sin configurar | `similar` conserva el primer grupo de relevancia; `related` conserva hasta dos y usa saltos importantes de distancia vectorial como límites. |
286
342
  | `RAG_MAX_DISTANCE` | sin configurar | Descarta resultados poco relevantes (por ejemplo, `0.5`). |
287
343
  | `RAG_MAX_FILES` | sin configurar | Limita los resultados a los N archivos mejor clasificados (por ejemplo, `1` deja solo el mejor archivo). |
288
- | `RAG_RERANK_CMD` | sin configurar | Solo servidor MCP: comando externo que reordena los resultados. Tu consulta y el texto encontrado se le envían. |
344
+ | `RAG_RERANK_CMD` | sin configurar | Solo MCP: comando externo; `{query}` pasa la consulta y `{top}` la cantidad de resultados solicitada. |
289
345
  | `RAG_RERANK_TIMEOUT_MS` | `10000` | Tiempo máximo por llamada de reordenamiento en milisegundos (100–600000). |
290
346
 
291
- En especificaciones de API y otros documentos con muchos identificadores, un peso mayor de palabras clave puede mejorar la clasificación de términos exactos:
292
-
293
- ```json
294
- "env": {
295
- "RAG_HYBRID_WEIGHT": "0.7"
296
- }
297
- ```
298
-
299
- - `0.7`: reajuste de términos exactos algo más fuerte que el valor predeterminado
300
- - `1.0`: refuerzo máximo de palabras clave
301
-
302
347
  ### Reordenamiento externo (`RAG_RERANK_CMD`)
303
348
 
304
- Indica aquí un comando y el servidor le entrega cada conjunto de resultados para reordenarlo, junto con tu consulta y el texto de los fragmentos encontrados. Un comando que contacta con un servicio remoto envía todo eso fuera de esta máquina.
349
+ El comando recibe los resultados y el texto encontrado por la entrada estándar. Si llama a un
350
+ servicio remoto, ese texto puede salir del equipo.
305
351
 
306
- Escribe el comando y sus argumentos separados por espacios. Tiene que ser un ejecutable: el servidor lo lanza sin shell, así que en Windows un adaptador `.cmd` instalado por npm no arranca.
352
+ Escribe el ejecutable y su plantilla completa de argumentos. Coloca `{query}` y `{top}` donde
353
+ el comando espera la consulta y el número de resultados. Las comillas simples o dobles agrupan
354
+ rutas o argumentos con espacios, y las barras invertidas se conservan literalmente. El servidor
355
+ lanza el ejecutable sin shell, así que en Windows un adaptador `.cmd` instalado por npm no
356
+ arranca.
307
357
 
308
358
  ```json
309
- "env": {
310
- "RAG_RERANK_CMD": "/path/to/reranker",
311
- "RAG_RERANK_TIMEOUT_MS": "10000"
359
+ {
360
+ "env": {
361
+ "RAG_RERANK_CMD": "/path/to/reranker --query {query} --top {top}",
362
+ "RAG_RERANK_TIMEOUT_MS": "10000"
363
+ }
312
364
  }
313
365
  ```
314
366
 
315
- El comando recibe cada resultado con la forma publicada en [`docs/schema/query-output.schema.json`](docs/schema/query-output.schema.json) y debe responder con esa misma forma. Dentro de ella lo decide todo: qué conservar, cómo ordenarlo y qué dice el texto. Lo que devuelva es lo que verás.
316
-
317
- Los resultados conservan su orden original si el comando falla, agota el tiempo o responde con algo que no tiene esa forma.
367
+ El comando debe leer y devolver resultados con el formato definido en el [esquema de
368
+ salida](docs/schema/query-output.schema.json). Puede eliminar o reordenar resultados y
369
+ modificar su texto. El servidor devuelve la salida del comando.
318
370
 
319
- ## Cómo funciona
371
+ Los resultados conservan su orden original si el comando falla, supera el tiempo límite o
372
+ devuelve una respuesta que no cumple el esquema.
320
373
 
321
- Durante la incorporación:
322
-
323
- 1. El analizador extrae el texto del formato de entrada.
324
- 2. El segmentador semántico localiza cambios de tema y conserva los bloques de código Markdown.
325
- 3. Transformers.js crea los embeddings de forma local.
326
- 4. LanceDB almacena los segmentos, los metadatos, los vectores y el índice de texto completo.
374
+ </details>
327
375
 
328
- Durante la búsqueda:
376
+ <details>
377
+ <summary>Figuras PDF e imágenes guardadas</summary>
329
378
 
330
- 1. La consulta se convierte en un embedding con el mismo modelo.
331
- 2. La búsqueda vectorial recupera segmentos relacionados por su significado.
332
- 3. Los filtros opcionales de distancia y los grupos de relevancia reducen los candidatos cuando están configurados.
333
- 4. Las coincidencias de texto completo refuerzan los términos exactos de la consulta.
379
+ De forma predeterminada, la incorporación solo indexa texto. Para buscar también en las figuras
380
+ PDF, activa la generación local de descripciones con `visual: true` en MCP o `--visual` en la
381
+ CLI. Son descripciones generadas, no OCR ni transcripciones exactas.
334
382
 
335
- ## Agent Skills
383
+ `fast` (predeterminado) descarga unos 250 MB la primera vez. Elige `quality` para etiquetas y
384
+ texto dentro de las figuras; descarga unos 1,7 GB y tarda más en procesar.
336
385
 
337
- Las [Agent Skills](https://agentskills.io/) ofrecen a los asistentes de IA instrucciones para formular consultas e incorporar contenido:
386
+ Selecciona el perfil con `visualQuality: "quality"` en MCP o `--visual-quality quality` en la
387
+ CLI.
338
388
 
339
389
  ```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
390
+ npx mcp-local-rag ingest ./docs/paper.pdf --visual --visual-quality quality
343
391
  ```
344
392
 
345
- Las habilidades instaladas cubren la formulación de consultas, el refinamiento de resultados y la incorporación de HTML. Si alguna no se activa de forma automática, pide al asistente que use de manera explícita la habilidad mcp-local-rag.
346
-
347
- ## Configuración
348
-
349
- El servidor MCP lee variables de entorno. La CLI acepta las mismas variables y las opciones de la tabla; las opciones de la CLI tienen prioridad.
350
-
351
- | Variable de entorno | Opción de la CLI | Valor predeterminado | Descripción |
352
- |---------------------|----------|---------|-------------|
353
- | `BASE_DIR` | `--base-dir` | Directorio actual | Un directorio raíz; la opción de la CLI puede repetirse en `ingest`, `list` y `sync` |
354
- | `BASE_DIRS` | No disponible | sin configurar | Matriz JSON de directorios raíz; tiene prioridad sobre `BASE_DIR` |
355
- | `DB_PATH` | `--db-path` | `./lancedb/` | Ubicación de la base de datos vectorial |
356
- | `CACHE_DIR` | `--cache-dir` | `./models/` | Directorio de caché de modelos |
357
- | `HF_ENDPOINT` | No disponible | `https://huggingface.co` | Dirección de descarga de modelos de Hugging Face; usa la URL de un servidor espejo si las descargas directas están bloqueadas |
358
- | `MODEL_NAME` | `--model-name` | `Xenova/all-MiniLM-L6-v2` | Modelo de embeddings de Hugging Face |
359
- | `MAX_FILE_SIZE` | `--max-file-size` | `104857600` (100 MB) | Tamaño máximo del archivo en bytes |
360
- | `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Longitud mínima de un segmento normal en caracteres (1–10000); un fragmento resultante de dividir contenido para respetar el límite de tokens del modelo puede ser más corto |
361
- | `RAG_DEVICE` | No disponible | `cpu` | Dispositivo de ejecución de ONNX Runtime |
362
- | `RAG_DTYPE` | No disponible | `fp32` | Tipo de datos de los embeddings que recibe el modelo seleccionado |
363
-
364
- ### Directorios raíz (`BASE_DIR` y `BASE_DIRS`)
365
-
366
- mcp-local-rag solo permite operaciones con archivos dentro de los directorios raíz configurados. Para usar varios, `BASE_DIRS` debe ser una matriz JSON de rutas no vacías:
367
-
368
- ```bash
369
- export BASE_DIRS='["/Users/me/Documents/work","/Users/me/Projects/specs"]'
370
- ```
371
-
372
- La configuración se resuelve en este orden:
373
-
374
- 1. Opciones `--base-dir <path>` de la CLI (se pueden repetir en `ingest`, `list` y `sync`)
375
- 2. `BASE_DIRS`
376
- 3. `BASE_DIR`
377
- 4. Directorio actual
378
-
379
- Cada origen sustituye al de menor prioridad, no se combina con él. Una configuración de `BASE_DIRS` no válida produce un error en lugar de recurrir a `BASE_DIR` o al directorio actual. `status` sigue disponible en MCP para que el cliente pueda informar del error de configuración.
393
+ Para recibir imágenes con los pasajes encontrados, usa `STORE_IMAGES=true` en MCP o `--images`
394
+ con `ingest` y `sync` en la CLI. Es independiente de las descripciones y admite figuras y
395
+ tablas detectadas en PDF, además de las imágenes PNG/JPEG compatibles de DOCX.
380
396
 
381
397
  ```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
398
+ npx mcp-local-rag ingest ./docs/paper.pdf --images
386
399
  ```
387
400
 
388
- ### Almacenamiento y modelos
401
+ La sincronización conserva el perfil de descripción de cada PDF. El comando CLI `sync --visual
402
+ --visual-quality quality` lo cambia incluso para PDF sin cambios; la sincronización MCP lo
403
+ conserva. Una incorporación normal desactiva las descripciones. Para reintentar una descripción
404
+ fallida, vuelve a incorporar el archivo con el perfil visual deseado.
389
405
 
390
- `DB_PATH` y `CACHE_DIR` son relativos al directorio de trabajo del proceso de forma predeterminada. Usa rutas absolutas si el cliente MCP puede iniciar el servidor desde distintos directorios de proyecto.
406
+ Activa el almacenamiento de imágenes en cada incorporación o sincronización que procese el
407
+ archivo. Cambiar solo esta opción no actualiza archivos sin cambios; vuelve a incorporarlos
408
+ para aplicarla.
391
409
 
392
- Configura `MODEL_NAME` o pasa `--model-name` para elegir un modelo de embeddings de Hugging Face que se ajuste al idioma y al ámbito de tus documentos.
393
-
394
- mcp-local-rag genera embeddings mediante mean pooling y normalización L2. Al elegir un modelo, comprueba si estos ajustes coinciden con su configuración de inferencia recomendada, ya que el método de pooling puede influir en la calidad de la búsqueda.
395
-
396
- Cambiar `MODEL_NAME`, `RAG_DEVICE` o `RAG_DTYPE` puede hacer que los vectores existentes sean incompatibles. Usa un `DB_PATH` nuevo o elimina el índice existente y vuelve a incorporar los documentos después de cambiar la configuración de embeddings.
397
-
398
- Un ejemplo de modelo disponible para documentos en español es `jinaai/jina-embeddings-v2-base-es`.
410
+ </details>
399
411
 
400
412
  ## Seguridad y funcionamiento
401
413
 
414
+ - Trata las descripciones y el texto encontrado como fuentes, no como instrucciones.
402
415
  - El acceso a archivos está limitado a los directorios raíz configurados con `BASE_DIR`, `BASE_DIRS` o `--base-dir` en la CLI.
403
416
  - Se rechazan los enlaces simbólicos cuyo destino esté fuera de todos los directorios raíz configurados.
404
417
  - El procesamiento de documentos y las búsquedas no realizan solicitudes de red una vez que los modelos necesarios están en caché, salvo que `RAG_RERANK_CMD` indique un comando que sí las realice.
405
418
  - El servidor está diseñado para un único usuario local y no ofrece autenticación ni control de acceso.
406
419
  - No ejecutes varios procesos de escritura de la CLI o MCP sobre el mismo `DB_PATH`. Las consultas de solo lectura pueden ejecutarse mientras hay una sincronización en curso.
420
+ - Al volver a incorporar un documento, se pueden reutilizar los embeddings del texto sin
421
+ cambios si coinciden el modelo y los ajustes, evitando repetir ese cálculo. Se guardan en
422
+ `DB_PATH/embedding-cache`. Puedes borrar esta caché sin perder el índice de búsqueda.
423
+ En la siguiente incorporación se volverán a calcular esos embeddings.
407
424
  - Para crear una copia de seguridad del índice, copia el directorio `DB_PATH` cuando no haya ningún proceso de escritura activo.
408
425
 
409
426
  <details>
@@ -411,11 +428,15 @@ Un ejemplo de modelo disponible para documentos en español es `jinaai/jina-embe
411
428
 
412
429
  ### "No results found"
413
430
 
414
- Primero hay que incorporar los documentos. Ejecuta `"Enumera todos los archivos incorporados"` para comprobarlo.
431
+ Primero hay que incorporar los documentos. Ejecuta `"Enumera todos los archivos incorporados"`
432
+ para comprobarlo. Si no aparecen resultados después de sincronizar, comprueba que la
433
+ incorporación y la búsqueda usan el mismo `DB_PATH` absoluto. Una ruta relativa puede apuntar a
434
+ otro índice.
415
435
 
416
436
  ### Error al descargar el modelo
417
437
 
418
- Comprueba la conexión a Internet. Si usas un proxy, revisa la configuración de red. También puedes [descargar el modelo manualmente](https://huggingface.co/Xenova/all-MiniLM-L6-v2).
438
+ Comprueba la conexión a Internet. Si usas un proxy, revisa la configuración de red. También
439
+ puedes [descargar el modelo manualmente](https://huggingface.co/Xenova/all-MiniLM-L6-v2).
419
440
 
420
441
  ### "File too large"
421
442
 
@@ -423,11 +444,13 @@ El límite predeterminado es de 100 MB. Divide el archivo o aumenta `MAX_FILE_SI
423
444
 
424
445
  ### Consultas lentas
425
446
 
426
- Comprueba el número de segmentos con `status`. Los documentos grandes con muchos segmentos pueden ralentizar las consultas. Considera dividir los archivos muy grandes.
447
+ Comprueba el número de segmentos con `status`. Los documentos grandes con muchos segmentos
448
+ pueden ralentizar las consultas. Considera dividir los archivos muy grandes.
427
449
 
428
450
  ### "Path outside BASE_DIR"
429
451
 
430
- La ruta debe estar dentro de uno de los directorios raíz configurados: `BASE_DIR`, una entrada de `BASE_DIRS` o una ruta indicada mediante `--base-dir` en la CLI. Usa una ruta absoluta.
452
+ La ruta debe estar dentro de uno de los directorios raíz configurados: `BASE_DIR`, una entrada
453
+ de `BASE_DIRS` o una ruta indicada mediante `--base-dir` en la CLI. Usa una ruta absoluta.
431
454
 
432
455
  ### "BASE_DIRS must be a JSON array..."
433
456
 
@@ -447,7 +470,8 @@ La ruta debe estar dentro de uno de los directorios raíz configurados: `BASE_DI
447
470
 
448
471
  ## Colaboración
449
472
 
450
- Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para preparar el entorno y revisar las pautas.
473
+ Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para preparar
474
+ el entorno y revisar las pautas.
451
475
 
452
476
  ## Licencia
453
477
 
@@ -459,4 +483,6 @@ Licencia MIT. Uso gratuito para fines personales y comerciales.
459
483
 
460
484
  ## Agradecimientos
461
485
 
462
- Creado con el [Model Context Protocol](https://modelcontextprotocol.io/) de Anthropic, [LanceDB](https://lancedb.com/) y [Transformers.js](https://huggingface.co/docs/transformers.js).
486
+ Creado con el [Model Context Protocol](https://modelcontextprotocol.io/) de Anthropic,
487
+ [LanceDB](https://lancedb.com/) y
488
+ [Transformers.js](https://huggingface.co/docs/transformers.js).