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.de.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
|
-
<strong>Deutsch</strong> |
|
|
16
|
-
<a href="README.es.md">Español</a> |
|
|
17
|
-
<a href="README.pt-BR.md">Português (Brasil)</a> |
|
|
18
|
-
<a href="README.fr.md">Français</a>
|
|
19
|
-
</p>
|
|
20
|
-
|
|
21
|
-
Durchsuche vertrauliche Dokumente über einen MCP-Client oder das Terminal, ohne sie an eine Embedding-API zu senden.
|
|
22
|
-
|
|
23
|
-
mcp-local-rag indexiert PDF-, DOCX-, Markdown- und Textdateien direkt auf deinem Rechner. Die Suche verbindet semantische Ähnlichkeit mit Stichwortsuche. Dadurch findet sie sowohl sinngleiche Inhalte als auch exakte technische Begriffe wie API-Namen, Klassennamen und Fehlercodes.
|
|
24
|
-
|
|
25
|
-
## Funktionen
|
|
26
|
-
|
|
27
|
-
- **Läuft lokal:** Dokument-Parsing, Embeddings, Speicherung und Suche finden auf deinem Rechner statt. Nach dem ersten Modelldownload funktionieren Textimport und Suche offline.
|
|
28
|
-
- **Hybride Suche:** Die semantische Suche findet verwandte Konzepte, während die Stichwortsuche exakte Fachbegriffe höher gewichtet.
|
|
29
|
-
- **Konfigurierbare Embeddings:** Wähle ein Hugging-Face-Embedding-Modell, das zur Sprache und zum Fachgebiet deiner Dokumente passt.
|
|
30
|
-
- **Semantische Aufteilung:** Dokumente werden an Themenwechseln statt nach einer festen Zeichenzahl geteilt. Markdown-Codeblöcke bleiben erhalten.
|
|
31
|
-
- **MCP und CLI:** KI-Programmierwerkzeuge und Terminal greifen auf denselben Index zu.
|
|
32
|
-
|
|
33
|
-
Es werden weder API-Schlüssel noch Docker, Python oder eine externe Datenbank benötigt.
|
|
34
|
-
|
|
35
|
-
## Schnellstart
|
|
36
|
-
|
|
37
|
-
### Voraussetzungen
|
|
38
|
-
|
|
39
|
-
- Node.js 22 oder neuer
|
|
40
|
-
- Internetzugang beim ersten Start, um das npm-Paket und das Embedding-Modell herunterzuladen
|
|
41
|
-
- Ein Verzeichnis mit den zu durchsuchenden Dokumenten
|
|
42
|
-
|
|
43
|
-
Setze `BASE_DIR` auf dieses Verzeichnis. Es bildet zugleich die Sicherheitsgrenze für Dateizugriffe. Ersetze `/absolute/path/to/your/documents` in den folgenden Beispielen durch den absoluten Pfad zu deinen Dokumenten.
|
|
44
|
-
|
|
45
|
-
mcp-local-rag verwendet das Standard-MCP-Protokoll über einen lokalen stdio-Server. Damit funktioniert es mit KI-Programmierwerkzeugen und anderen MCP-Hosts, die lokale MCP-Server unterstützen.
|
|
46
|
-
|
|
47
|
-
Nutze eines der folgenden Beispiele oder registriere `npx -y mcp-local-rag` im Konfigurationsformat deines Clients und setze dort `BASE_DIR`.
|
|
48
|
-
|
|
49
|
-
**Claude Code:** Führe diesen Befehl aus:
|
|
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:** Ergänze `~/.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:** Ergänze `~/.config/opencode/opencode.json` (oder `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:** Ergänze `~/.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
|
-
Starte den Client neu und lass ihn anschließend den Index aufbauen:
|
|
100
|
-
|
|
101
|
-
```text
|
|
102
|
-
Synchronisiere alle Dokumente im konfigurierten Stammverzeichnis und warte, bis der Vorgang abgeschlossen ist.
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Bei der ersten Synchronisierung wird das Standard-Embedding-Modell heruntergeladen (etwa 90 MB). Bis der Import beginnt, können 1–2 Minuten vergehen. Spätere Durchläufe verwenden den lokalen Cache.
|
|
106
|
-
|
|
107
|
-
Nach Abschluss der Synchronisierung kannst du zum Beispiel fragen:
|
|
108
|
-
|
|
109
|
-
```text
|
|
110
|
-
Was steht in der API-Dokumentation zur Authentifizierung?
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### CLI-Schnellstart
|
|
114
|
-
|
|
115
|
-
So verwendest du die CLI ohne MCP-Client:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
npx mcp-local-rag ingest ./docs/
|
|
119
|
-
npx mcp-local-rag query "Authentifizierungs-API"
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Die CLI verwendet standardmäßig das aktuelle Verzeichnis als Dokumentenstamm. Führe beide Befehle im selben Verzeichnis aus, damit sie denselben Standardindex verwenden, oder setze `BASE_DIR` und `DB_PATH` ausdrücklich.
|
|
123
|
-
|
|
124
|
-
## Hintergrund
|
|
125
|
-
|
|
126
|
-
Manche Dokumentensammlungen dürfen aus Vertraulichkeitsgründen oder aufgrund interner Richtlinien nicht an gehostete Embedding-Dienste gesendet werden. Mit einem lokalen Index bleiben sie durchsuchbar, ohne dass pro Anfrage API-Kosten entstehen.
|
|
127
|
-
|
|
128
|
-
Eine rein semantische Suche kann exakte Bezeichner übersehen, die in technischer Dokumentation wichtig sind. Die Stichwortgewichtung hält diese Treffer sichtbar, ohne auf natürlichsprachliche Suche zu verzichten.
|
|
129
|
-
|
|
130
|
-
## Unterstützte Inhalte
|
|
131
|
-
|
|
132
|
-
| Eingabe | Import |
|
|
133
|
-
|---|---|
|
|
134
|
-
| PDF, DOCX, TXT, Markdown | Einzelne Datei importieren oder Verzeichnis synchronisieren |
|
|
135
|
-
| Bereits vom Client abgerufenes HTML | Mit `ingest_data`; wird durch Readability bereinigt und in Markdown umgewandelt |
|
|
136
|
-
| Im Speicher vorliegender Klartext oder Markdown | Mit `ingest_data` und einer stabilen Quellkennung |
|
|
137
|
-
|
|
138
|
-
Der Server ruft HTML nicht selbst ab. Ein MCP-Client kann eine Seite laden und ihr HTML an `ingest_data` übergeben.
|
|
139
|
-
|
|
140
|
-
Excel, PowerPoint, einzelne Bilddateien und Quellcodedateien werden beim Dateiimport nicht unterstützt. Für Abbildungen in PDFs kann optional ein lokales Vision-Modell verwendet werden. Das ist weder OCR noch Bildsuche.
|
|
141
|
-
|
|
142
|
-
## MCP-Werkzeuge
|
|
143
|
-
|
|
144
|
-
| Werkzeug | Zweck |
|
|
145
|
-
|---|---|
|
|
146
|
-
| `sync_start` | Alle konfigurierten Stammverzeichnisse oder einen Pfad mit dem Index abgleichen |
|
|
147
|
-
| `sync_status` | Status einer laufenden Synchronisierung abrufen |
|
|
148
|
-
| `ingest_file` | Eine Datei importieren oder ersetzen |
|
|
149
|
-
| `ingest_data` | Bereits im Client vorliegenden Text, Markdown oder HTML importieren |
|
|
150
|
-
| `query_documents` | Mit semantischem Abgleich und Stichwortgewichtung suchen |
|
|
151
|
-
| `read_chunk_neighbors` | Benachbarte Abschnitte eines Suchtreffers lesen |
|
|
152
|
-
| `list_files` | Unterstützte Dateien und ihren Importstatus anzeigen |
|
|
153
|
-
| `delete_file` | Eine indexierte Datei oder einen `ingest_data`-Eintrag löschen |
|
|
154
|
-
| `status` | Status von Index und Suche anzeigen |
|
|
155
|
-
|
|
156
|
-
### Dokumentenstamm synchronisieren
|
|
157
|
-
|
|
158
|
-
`sync_start` importiert neue und geänderte Dateien, überspringt bytegleiche Dateien und entfernt Indexeinträge für Dateien, die nicht mehr vorhanden sind:
|
|
159
|
-
|
|
160
|
-
```text
|
|
161
|
-
Synchronisiere alle Inhalte in den konfigurierten Dokumentenstämmen und warte auf den Abschluss.
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
Das Werkzeug gibt sofort eine `jobId` zurück. Clients sollten `sync_status` abfragen, bis der Status `succeeded` oder `failed` lautet. Während der Synchronisierung gibt es keinen visuellen Modus; geänderte PDFs werden als Text importiert.
|
|
165
|
-
|
|
166
|
-
Der Serverprozess speichert nur einen Synchronisierungsauftrag. Ein neuer Auftrag ersetzt den Eintrag eines abgeschlossenen Auftrags. Beim Neustart des Servers geht der Eintrag verloren.
|
|
167
|
-
|
|
168
|
-
### Einzelne Datei importieren
|
|
169
|
-
|
|
170
|
-
`ingest_file` unterstützt PDF, DOCX, TXT und Markdown. MCP-Dateipfade müssen absolut sein und innerhalb eines konfigurierten Dokumentenstamms liegen:
|
|
171
|
-
|
|
172
|
-
```text
|
|
173
|
-
Importiere das Dokument /Users/me/docs/api-spec.pdf.
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
Ein erneuter Import desselben Pfads ersetzt die vorhandenen Abschnitte.
|
|
177
|
-
|
|
178
|
-
### Suchen und weiteren Kontext lesen
|
|
179
|
-
|
|
180
|
-
```text
|
|
181
|
-
Was steht in der API-Dokumentation zur Authentifizierung?
|
|
182
|
-
Finde das dokumentierte Verhalten von ERR_CONNECTION_REFUSED.
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Ergebnisse enthalten Text, Quellpfad, Titel, Abschnittsnummer und Relevanzwert. Wenn mehr Kontext nötig ist, übergib `chunkIndex` und entweder `filePath` oder `source` aus dem Treffer an `read_chunk_neighbors`:
|
|
186
|
-
|
|
187
|
-
```text
|
|
188
|
-
Lies die benachbarten Abschnitte dieses Treffers zur Authentifizierung.
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
`query_documents` und `list_files` akzeptieren optional ein absolutes `scope`-Pfadpräfix oder eine Liste von Präfixen. Ein Präfix entspricht dem angegebenen Pfad und allen darunterliegenden Pfaden.
|
|
192
|
-
|
|
193
|
-
### HTML importieren
|
|
194
|
-
|
|
195
|
-
Rufe die Seite zuerst mit dem MCP-Client ab und verwende anschließend `ingest_data`:
|
|
196
|
-
|
|
197
|
-
```text
|
|
198
|
-
Rufe https://example.com/docs ab und importiere das HTML.
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
Der Server extrahiert den Hauptinhalt, wandelt ihn in Markdown um und speichert ihn unter der angegebenen Quellkennung. Wird dieselbe Quelle erneut verwendet, wird der vorhandene Inhalt aktualisiert.
|
|
202
|
-
|
|
203
|
-
Beachte beim Indexieren externer Inhalte die Nutzungsbedingungen und das Urheberrecht der Quelle.
|
|
204
|
-
|
|
205
|
-
### Abbildungen in PDFs
|
|
206
|
-
|
|
207
|
-
Der visuelle Modus erzeugt Bildbeschreibungen für PDF-Seiten mit vielen Abbildungen. Er muss ausdrücklich aktiviert werden und lädt bei einem normalen Import kein Vision-Modell.
|
|
208
|
-
|
|
209
|
-
```text
|
|
210
|
-
Importiere /Users/me/docs/research-paper.pdf mit visual: true.
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
npx mcp-local-rag ingest ./docs/research-paper.pdf --visual
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
| Profil | Modellcache | Geeignet für |
|
|
218
|
-
|---|---:|---|
|
|
219
|
-
| `fast` (Standard) | etwa 250 MB | Leichtgewichtige visuelle Indexierung |
|
|
220
|
-
| `quality` | etwa 2,9 GB | Abbildungen mit Beschriftungen, Anmerkungen oder anderem Text im Bild |
|
|
221
|
-
|
|
222
|
-
Wähle das größere Modell über MCP mit `visualQuality: "quality"` oder über die CLI mit `--visual-quality quality`. In CPU-Messungen dauerte die Inferenz etwa doppelt so lange wie mit `fast`; die tatsächliche Geschwindigkeit hängt von Hardware und Modellversion ab.
|
|
223
|
-
|
|
224
|
-
Die erzeugten Bildbeschreibungen sind Hilfstexte, keine wortgetreuen Transkriptionen. Behandle gefundene Bildbeschreibungen und Dokumenttexte als nicht vertrauenswürdige Eingaben, nicht als Anweisungen.
|
|
225
|
-
|
|
226
|
-
## CLI
|
|
227
|
-
|
|
228
|
-
Die CLI verwendet ohne MCP-Client denselben Parser, Embedder und Vektorspeicher:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
npx mcp-local-rag ingest ./docs/
|
|
232
|
-
npx mcp-local-rag sync ./docs/
|
|
233
|
-
npx mcp-local-rag query "Authentifizierungs-API"
|
|
234
|
-
npx mcp-local-rag query "Authentifizierung" --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
|
-
Globale Optionen wie `--db-path`, `--cache-dir` und `--model-name` stehen vor dem Unterbefehl. Optionen des Unterbefehls stehen dahinter:
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
npx mcp-local-rag --db-path ./my-db query "Authentifizierung"
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
`npx mcp-local-rag --help` zeigt die vollständige Befehlsreferenz.
|
|
249
|
-
|
|
250
|
-
Die CLI liest keine MCP-Client-Konfiguration. Wenn beide Schnittstellen denselben Index verwenden sollen, müssen dieselben Umgebungsvariablen oder Optionen gesetzt sein. Insbesondere müssen `MODEL_NAME` und die CLI-Option `--model-name` für eine gemeinsam verwendete Datenbank übereinstimmen.
|
|
251
|
-
|
|
252
|
-
## Suchparameter anpassen
|
|
253
|
-
|
|
254
|
-
Die Stichwortgewichtung ist standardmäßig aktiv. Für Korpora, die eine strengere Auswahl erfordern, stehen außerdem die Gruppierung anhand von Relevanzsprüngen sowie Distanz- und Dateifilter zur Verfügung.
|
|
255
|
-
|
|
256
|
-
| Variable | Standard | Beschreibung |
|
|
257
|
-
|----------|---------|-------------|
|
|
258
|
-
| `RAG_HYBRID_WEIGHT` | `0.6` | Gewicht der Stichworttreffer (0.0–1.0). 0 deaktiviert die Stichwortgewichtung, 1 verwendet das höchste Gewicht. |
|
|
259
|
-
| `RAG_GROUPING` | nicht gesetzt | `similar` behält die erste Relevanzgruppe; `related` behält bis zu zwei Gruppen und trennt sie an deutlichen Sprüngen der Vektordistanz. |
|
|
260
|
-
| `RAG_MAX_DISTANCE` | nicht gesetzt | Filtert wenig relevante Treffer heraus, zum Beispiel mit `0.5`. |
|
|
261
|
-
| `RAG_MAX_FILES` | nicht gesetzt | Beschränkt die Treffer auf die besten N Dateien, zum Beispiel mit `1` auf die beste Datei. |
|
|
262
|
-
|
|
263
|
-
Bei API-Spezifikationen und anderen Dokumenten mit vielen Bezeichnern kann ein höheres Stichwortgewicht die Rangfolge exakter Treffer verbessern:
|
|
264
|
-
|
|
265
|
-
```json
|
|
266
|
-
"env": {
|
|
267
|
-
"RAG_HYBRID_WEIGHT": "0.7"
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
- `0.7`: etwas stärkere Gewichtung exakter Begriffe als in der Standardeinstellung
|
|
272
|
-
- `1.0`: höchste Stichwortgewichtung
|
|
273
|
-
|
|
274
|
-
## Funktionsweise
|
|
275
|
-
|
|
276
|
-
Beim Import:
|
|
277
|
-
|
|
278
|
-
1. Der Parser extrahiert den Text aus dem Eingabeformat.
|
|
279
|
-
2. Der semantische Chunker erkennt Themenwechsel und behält Markdown-Codeblöcke intakt.
|
|
280
|
-
3. Transformers.js erzeugt die Embeddings lokal.
|
|
281
|
-
4. LanceDB speichert Abschnitte, Metadaten, Vektoren und den Volltextindex.
|
|
282
|
-
|
|
283
|
-
Bei der Suche:
|
|
284
|
-
|
|
285
|
-
1. Die Abfrage wird mit demselben Modell eingebettet.
|
|
286
|
-
2. Die Vektorsuche findet semantisch verwandte Abschnitte.
|
|
287
|
-
3. Optionale Distanzfilter und Relevanzgruppen schränken die Kandidaten weiter ein.
|
|
288
|
-
4. Volltexttreffer erhöhen das Gewicht exakter Suchbegriffe.
|
|
289
|
-
|
|
290
|
-
## Agent Skills
|
|
291
|
-
|
|
292
|
-
[Agent Skills](https://agentskills.io/) geben KI-Assistenten Hinweise für Abfragen und Importe:
|
|
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
|
-
Die installierten Skills behandeln Abfrageformulierung, Trefferverfeinerung und HTML-Import. Falls ein Skill nicht automatisch aktiviert wird, bitte den Assistenten ausdrücklich darum, den mcp-local-rag-Skill zu verwenden.
|
|
301
|
-
|
|
302
|
-
## Konfiguration
|
|
303
|
-
|
|
304
|
-
Der MCP-Server liest Umgebungsvariablen. Die CLI unterstützt dieselben Variablen sowie die aufgeführten Optionen; CLI-Optionen haben Vorrang.
|
|
305
|
-
|
|
306
|
-
| Umgebungsvariable | CLI-Option | Standard | Beschreibung |
|
|
307
|
-
|---------------------|----------|---------|-------------|
|
|
308
|
-
| `BASE_DIR` | `--base-dir` | Aktuelles Verzeichnis | Ein Dokumentenstamm; die CLI-Option kann bei `ingest`, `list` und `sync` mehrfach verwendet werden |
|
|
309
|
-
| `BASE_DIRS` | – | nicht gesetzt | JSON-Array mit Dokumentenstämmen; hat Vorrang vor `BASE_DIR` |
|
|
310
|
-
| `DB_PATH` | `--db-path` | `./lancedb/` | Pfad zur Vektordatenbank |
|
|
311
|
-
| `CACHE_DIR` | `--cache-dir` | `./models/` | Verzeichnis für den Modellcache |
|
|
312
|
-
| `MODEL_NAME` | `--model-name` | `Xenova/all-MiniLM-L6-v2` | Hugging-Face-Embedding-Modell |
|
|
313
|
-
| `MAX_FILE_SIZE` | `--max-file-size` | `104857600` (100 MB) | Maximale Dateigröße in Byte |
|
|
314
|
-
| `CHUNK_MIN_LENGTH` | `--chunk-min-length` | `50` | Mindestlänge eines Abschnitts in Zeichen (1–10000) |
|
|
315
|
-
| `RAG_DEVICE` | – | `cpu` | ONNX-Runtime-Ausführungsgerät |
|
|
316
|
-
| `RAG_DTYPE` | – | `fp32` | An das ausgewählte Modell übergebener Embedding-Datentyp |
|
|
317
|
-
|
|
318
|
-
### Dokumentenstämme (`BASE_DIR` und `BASE_DIRS`)
|
|
319
|
-
|
|
320
|
-
mcp-local-rag erlaubt Dateizugriffe nur innerhalb der konfigurierten Stammverzeichnisse. Für mehrere Stammverzeichnisse muss `BASE_DIRS` ein JSON-Array mit nicht leeren Pfaden sein:
|
|
321
|
-
|
|
322
|
-
```bash
|
|
323
|
-
export BASE_DIRS='["/Users/me/Documents/work","/Users/me/Projects/specs"]'
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
Die Stammverzeichnisse werden in dieser Reihenfolge ermittelt:
|
|
327
|
-
|
|
328
|
-
1. CLI-Optionen `--base-dir <path>` (mehrfach bei `ingest`, `list` und `sync` möglich)
|
|
329
|
-
2. `BASE_DIRS`
|
|
330
|
-
3. `BASE_DIR`
|
|
331
|
-
4. Aktuelles Verzeichnis
|
|
332
|
-
|
|
333
|
-
Jede Quelle ersetzt die nachrangige Quelle vollständig, statt mit ihr zusammengeführt zu werden. Eine ungültige `BASE_DIRS`-Konfiguration führt zu einem Fehler; es wird nicht auf `BASE_DIR` oder das aktuelle Verzeichnis zurückgegriffen. `status` bleibt in MCP verfügbar, damit der Client den Konfigurationsfehler melden kann.
|
|
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
|
-
### Speicher und Modelle
|
|
343
|
-
|
|
344
|
-
`DB_PATH` und `CACHE_DIR` beziehen sich standardmäßig auf das Arbeitsverzeichnis des Prozesses. Verwende absolute Pfade, wenn der MCP-Client den Server aus unterschiedlichen Projektverzeichnissen starten kann.
|
|
345
|
-
|
|
346
|
-
Setze `MODEL_NAME` oder übergib `--model-name`, um ein Hugging-Face-Embedding-Modell auszuwählen, das zur Sprache und zum Fachgebiet deiner Dokumente passt.
|
|
347
|
-
|
|
348
|
-
mcp-local-rag erzeugt Embeddings mit Mean Pooling und L2-Normalisierung. Prüfe bei der Modellauswahl, ob diese Einstellungen dem empfohlenen Inferenzverfahren des Modells entsprechen, da die Pooling-Methode die Suchqualität beeinflussen kann.
|
|
349
|
-
|
|
350
|
-
Eine Änderung von `MODEL_NAME`, `RAG_DEVICE` oder `RAG_DTYPE` kann vorhandene Vektoren inkompatibel machen. Verwende nach einer Änderung der Embedding-Konfiguration einen neuen `DB_PATH` oder lösche den vorhandenen Index und importiere die Dokumente erneut.
|
|
351
|
-
|
|
352
|
-
Ein Beispiel für deutschsprachige Dokumente ist das Modell `jinaai/jina-embeddings-v2-base-de`.
|
|
353
|
-
|
|
354
|
-
## Sicherheit und Betrieb
|
|
355
|
-
|
|
356
|
-
- Dateizugriffe sind auf die mit `BASE_DIR`, `BASE_DIRS` oder der CLI-Option `--base-dir` festgelegten Stammverzeichnisse beschränkt.
|
|
357
|
-
- Symbolische Links, deren Ziel außerhalb aller konfigurierten Stammverzeichnisse liegt, werden abgelehnt.
|
|
358
|
-
- Sobald die benötigten Modelle im Cache liegen, greifen Dokumentverarbeitung und Suche nicht mehr auf das Netzwerk zu.
|
|
359
|
-
- Der Server ist für einen einzelnen lokalen Benutzer ausgelegt und bietet keine Authentifizierung oder Zugriffskontrolle.
|
|
360
|
-
- Mehrere CLI- oder MCP-Schreibprozesse dürfen nicht gleichzeitig denselben `DB_PATH` verwenden. Reine Leseabfragen sind während einer Synchronisierung möglich.
|
|
361
|
-
- Sichere den Index, indem du das `DB_PATH`-Verzeichnis kopierst, während kein Schreibprozess läuft.
|
|
362
|
-
|
|
363
|
-
<details>
|
|
364
|
-
<summary><strong>Fehlerbehebung</strong></summary>
|
|
365
|
-
|
|
366
|
-
### "No results found"
|
|
367
|
-
|
|
368
|
-
Dokumente müssen zuerst importiert werden. Prüfe den Importstatus mit `"Liste alle importierten Dateien auf"`.
|
|
369
|
-
|
|
370
|
-
### Modelldownload fehlgeschlagen
|
|
371
|
-
|
|
372
|
-
Prüfe die Internetverbindung. Wenn du einen Proxy verwendest, kontrolliere die Netzwerkeinstellungen. Das Modell kann auch [manuell heruntergeladen](https://huggingface.co/Xenova/all-MiniLM-L6-v2) werden.
|
|
373
|
-
|
|
374
|
-
### "File too large"
|
|
375
|
-
|
|
376
|
-
Die Standardgrenze beträgt 100 MB. Teile die Datei auf oder erhöhe `MAX_FILE_SIZE`.
|
|
377
|
-
|
|
378
|
-
### Langsame Abfragen
|
|
379
|
-
|
|
380
|
-
Prüfe die Anzahl der Abschnitte mit `status`. Große Dokumente mit vielen Abschnitten können Abfragen verlangsamen. Sehr große Dateien sollten gegebenenfalls geteilt werden.
|
|
381
|
-
|
|
382
|
-
### "Path outside BASE_DIR"
|
|
383
|
-
|
|
384
|
-
Der Dateipfad muss innerhalb eines konfigurierten Stammverzeichnisses liegen: `BASE_DIR`, ein Eintrag aus `BASE_DIRS` oder ein über `--base-dir` gesetzter Pfad. Verwende einen absoluten Pfad.
|
|
385
|
-
|
|
386
|
-
### "BASE_DIRS must be a JSON array..."
|
|
387
|
-
|
|
388
|
-
`BASE_DIRS` akzeptiert ein JSON-Array mit einem oder mehreren nicht leeren Pfaden:
|
|
389
|
-
|
|
390
|
-
- Gültig: `BASE_DIRS='["/Users/me/work","/Users/me/specs"]'`
|
|
391
|
-
- Ungültig: `BASE_DIRS=/a:/b` (Trennzeichensyntax wird nicht unterstützt)
|
|
392
|
-
- Ungültig: `BASE_DIRS='[]'` (leeres Array)
|
|
393
|
-
|
|
394
|
-
### MCP-Client zeigt keine Werkzeuge an
|
|
395
|
-
|
|
396
|
-
1. Syntax der Konfigurationsdatei prüfen
|
|
397
|
-
2. Client vollständig beenden und neu starten (bei Cursor auf dem Mac mit Cmd+Q)
|
|
398
|
-
3. Direkt testen: `npx mcp-local-rag` sollte ohne Fehler starten
|
|
399
|
-
|
|
400
|
-
</details>
|
|
401
|
-
|
|
402
|
-
## Mitwirken
|
|
403
|
-
|
|
404
|
-
Beiträge sind willkommen. Hinweise zur Einrichtung und zu den Richtlinien stehen in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
405
|
-
|
|
406
|
-
## Lizenz
|
|
407
|
-
|
|
408
|
-
MIT-Lizenz. Kostenlose Nutzung für private und kommerzielle Zwecke.
|
|
409
|
-
|
|
410
|
-
## Blogbeiträge
|
|
411
|
-
|
|
412
|
-
- [Building a Local RAG for Agentic Coding](https://www.norsica.jp/blog/local-rag-agentic-coding): Technischer Einblick in semantische Aufteilung und hybride Suche.
|
|
413
|
-
|
|
414
|
-
## Danksagung
|
|
415
|
-
|
|
416
|
-
Erstellt mit dem [Model Context Protocol](https://modelcontextprotocol.io/) von Anthropic, [LanceDB](https://lancedb.com/) und [Transformers.js](https://huggingface.co/docs/transformers.js).
|