Skip to main content
Glama
cgaeking

RLM Knowledge Base

by cgaeking

RLM Knowledge Base

Python 3.12+ License: MIT FastAPI MCP Platform

🇬🇧 English Version

Recursive Language Model (RLM) - Eine intelligente Dokumenten-Wissensdatenbank, die LLM-Agents direkten Zugriff auf Unternehmensdokumente gibt.

Was ist das?

Ein lokales System, das:

  1. Dokumente indexiert (PDF, DOCX, XLSX, TXT, MD) - ohne LLM-Kosten beim Indexieren

  2. Volltext-Suche via SQLite FTS5 ermöglicht

  3. LLM-Agent (Claude) intelligent durch die Dokumente navigieren lässt

Der RLM-Ansatz vs. klassisches RAG

Klassisches RAG:

Dokumente → Chunks → Embeddings → Vector-DB → "Hoffentlich relevanter Chunk"

RLM (dieses Projekt):

Dokumente → Volltext in DB → LLM entscheidet selbst was es liest

Der LLM-Agent hat Tools zur Verfügung und entscheidet autonom:

  • search_documents - FTS5-Volltextsuche mit Snippets

  • list_documents - Übersicht aller Dokumente

  • read_document - Liest Dokument (komplett oder Bereichsweise)

  • get_statistics - DB-Statistiken

Vorteile:

  • Kein Informationsverlust durch Chunking

  • Agent kann gezielt nachfragen/nachlesen

  • Transparentes Reasoning (zeigt welche Tools genutzt wurden)

  • Indexierung ist blitzschnell (kein LLM/Embedding nötig)

Related MCP server: smart-search

Quick Start

1. Installation

cd C:\Users\chris\Documents\MyProjects\rlm-connector

# Virtual Environment (optional aber empfohlen)
python -m venv venv
venv\Scripts\activate  # Windows

# Dependencies installieren
pip install -r requirements.txt

2. Konfiguration

.env Datei mit API-Key:

ANTHROPIC_API_KEY=sk-ant-api03-...

config.yaml - Dokumentenpfade anpassen:

llm:
  provider: anthropic
  model: claude-sonnet-4-6

connectors:
  - name: meine_dokumente
    type: local
    path: D:/Pfad/zu/Dokumenten
    include:
      - "*.pdf"
      - "*.docx"
      - "*.xlsx"
      - "*.txt"
      - "*.md"
    exclude:
      - ".*"
      - "~$*"
      - "node_modules"

3. Starten

python -m src.main

Öffnet:

4. Indexieren

In der UI auf "Index aktualisieren" klicken, oder:

curl -X POST http://localhost:8000/index/refresh

API Endpoints

Endpoint

Methode

Beschreibung

/

GET

Health Check

/statistics

GET

DB-Statistiken (Dokumente, Größe, Typen)

/documents

GET

Liste aller Dokumente

/documents/{id}

GET

Dokument-Metadaten

/documents/{id}/content

GET

Dokument-Inhalt (mit Range-Support)

/search?q=...

GET

FTS5 Volltextsuche

/query

POST

RLM-Query (LLM-gestützte Frage)

/index/refresh

POST

Index aktualisieren

/index/progress

GET

Indexier-Fortschritt

/connectors

GET

Konfigurierte Connectors

Beispiel: Frage stellen

curl -X POST http://localhost:8000/query \
  -H "Content-Type: application/json" \
  -d '{"question": "Erstelle mir eine Liste meiner Projekte"}'

Projektstruktur

rlm-connector/
├── src/
│   ├── api/              # FastAPI REST-API
│   │   ├── app.py        # App-Factory, Lifespan, AppState
│   │   └── routes.py     # API-Endpoints
│   ├── connectors/       # Datenquellen
│   │   ├── base.py       # BaseConnector Interface
│   │   └── local.py      # LocalConnector (Dateisystem)
│   ├── database/         # SQLite + FTS5
│   │   ├── models.py     # Document, SyncStatus Models
│   │   └── repository.py # DocumentRepository (CRUD, FTS5-Suche)
│   ├── indexer/          # Dokument-Indexierung
│   │   ├── indexer.py    # Haupt-Indexer (kein LLM!)
│   │   ├── parser.py     # PDF/DOCX/XLSX/TXT Parser
│   │   └── sync.py       # SyncManager (Scheduling)
│   ├── rlm_engine/       # LLM-Agent
│   │   └── engine.py     # KnowledgeBaseEngine (Tool-Use)
│   ├── ui/               # Gradio Chat-UI
│   │   └── chat.py
│   ├── config.py         # AppConfig, load_config()
│   ├── mcp_server.py     # MCP Server für Claude Desktop
│   └── main.py           # Entry Point
├── data/
│   └── index.db          # SQLite Datenbank + FTS5
├── config.yaml           # Konfiguration
├── .env                  # API Keys (nicht committen!)
└── requirements.txt

Technologie-Stack

Komponente

Technologie

Backend

Python 3.12, FastAPI, Uvicorn

Datenbank

SQLite + FTS5 (Volltext-Index)

LLM

Claude Sonnet 4 (Anthropic API)

UI

Gradio

Parser

PyMuPDF (PDF), python-docx, openpyxl

Datenbank-Schema

documents (Haupttabelle)

- id: STRING (SHA256 Hash aus connector:path)
- connector_name, file_path, file_name, file_type
- size_bytes, page_count, content_length
- content_text: TEXT (voller Dokumentinhalt!)
- content_hash: STRING (für Change Detection)
- status: pending|indexed|error|skipped
- indexed_at, created_at, modified_at

documents_fts (FTS5 Virtual Table)

- doc_id, file_name, content
- Tokenizer: unicode61 (Umlaute-Support)

RLM Engine - Wie funktioniert's?

  1. User stellt Frage → Chat UI oder /query API

  2. Engine startet Agentic Loop mit Claude + Tools

  3. Claude entscheidet welche Tools es braucht:

    • Meist zuerst search_documents mit Suchbegriffen

    • Dann read_document für Details

    • Iteriert bis Antwort vollständig

  4. Antwort mit Quellen wird zurückgegeben

Max 10 Iterationen, danach Abbruch mit Teilergebnis.

Performance & Kosten

Getestet mit ~600k Dateien:

  • Scan + Indexierung: ~20 Minuten

  • Davon indexiert: Nur lesbare Typen (PDF, DOCX, etc.)

  • FTS5-Suche: <100ms

  • RLM-Query: 3-15 Sekunden (je nach Komplexität)

Kosten:

Vorgang

Kosten

Indexierung

$0 (kein LLM)

Einfache Frage

~$0.02

Komplexe Frage (viele Iterationen)

~$0.05-0.10

CLI-Befehle

# Alles starten (API + UI)
python -m src.main

# Nur API
python -m src.main api --port 8000

# Nur UI
python -m src.main ui --port 7860

# Index manuell triggern
python -m src.main index
python -m src.main index --full  # Force Re-Index

Als Hintergrund-Dienst betreiben (Windows)

Der Connector ist das eigenständige Backend und läuft typischerweise als Windows-Dienst, der dauerhaft im Hintergrund indiziert – unabhängig davon, ob eine App geöffnet ist. Konfiguriert wird weiterhin über die config.yaml im Projektverzeichnis (oder bequem über die Desktop-App, die per REST-API in dieselbe Datei schreibt).

deploy/windows/ enthält Ein-Klick-Installer (Doppelklick genügt, fragt automatisch nach Admin-Rechten):

Datei

Zweck

install-api-service.bat

Installiert die REST-API (127.0.0.1:8000) als Dienst RLM-API – das Backend für die RootMind Desktop-App. Erkennt den MCP-Dienst und installiert dann ohne eigenen Indexer (kein Doppel-Indizieren).

install-as-windows-service.bat

Installiert den MCP-Server (Port 3000) als Dienst (für n8n / Claude / Sam), inkl. optionalem ngrok-Tunnel.

Verwalten: powershell -File deploy/windows/_service-api.ps1 -Status (bzw. -Start / -Stop / -Uninstall). Vordergrund zum Testen: deploy/windows/run-api-server.bat.

Indizierung soll nur einmal laufen: Wer den MCP-Dienst nutzt (der bereits indiziert), installiert die REST-API mit -NoIndex (macht die .bat automatisch). Andernfalls indiziert der REST-API-Dienst selbst.

RootMind Desktop-App

RootMind ist die optionale Windows-Desktop-App (Tauri) als komfortables Front-End: Ordner konfigurieren, Index-Status sehen, mit den Dokumenten chatten (inkl. anklickbarer Quellen) und Chat-Verlauf. Sie ist ein reiner Client der REST-API – sie startet oder verwaltet das Backend nicht. Voraussetzung ist ein laufender Connector (REST-API-Dienst auf 127.0.0.1:8000).

Aktuelle Features

  • Lokales Dateisystem indexieren

  • PDF, DOCX, XLSX, TXT, MD Parser

  • SQLite FTS5 Volltextsuche

  • Fuzzy-Suche mit Trigram-Matching

  • RLM Tool-Use Agent (Claude)

  • REST API mit OpenAPI Docs

  • Gradio Chat UI

  • MCP Server für Claude Desktop Integration

  • Inkrementelles Indexieren (Hash-basiert)

  • WAL-Mode für bessere DB-Performance

  • Hintergrund-Indizierung via Windows-Dienst (auto-start)

  • RootMind Desktop-App (Tauri) als REST-Client

MCP Server (Claude Desktop Integration)

Der RLM Knowledge Base kann als MCP Server betrieben werden, um die Dokumentensuche direkt in Claude Desktop oder anderen MCP-kompatiblen Clients zu nutzen.

Installation MCP Dependency

pip install mcp>=1.0.0
# oder komplettes Projekt neu installieren:
pip install -e .

Claude Desktop Konfiguration

Füge in %APPDATA%\Claude\claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "rlm-knowledge-base": {
      "command": "python",
      "args": ["-m", "src.mcp_server"],
      "cwd": "C:\\Users\\chris\\Documents\\MyProjects\\rlm-connector"
    }
  }
}

Wichtig: Der MCP Server verwendet die gleiche config.yaml und Datenbank wie die Hauptanwendung.

MCP Tools

Claude Desktop hat dann Zugriff auf:

Tool

Beschreibung

search_documents

FTS5 Volltextsuche mit Snippets

search_fuzzy

Tippfehler-tolerante Fuzzy-Suche

list_documents

Übersicht aller Dokumente

read_document

Dokument-Inhalt lesen

get_statistics

Datenbank-Statistiken

Beispiel-Nutzung in Claude Desktop

Nach der Konfiguration kannst du in Claude Desktop fragen:

  • "Suche in meinen Dokumenten nach Urlaubsregelungen"

  • "Was steht in der Projektdokumentation?"

  • "Liste alle PDF-Dateien"

Claude nutzt automatisch die MCP-Tools um in deiner lokalen Dokumentenbasis zu suchen.

MCP Server manuell starten (zum Testen)

python -m src.mcp_server

Geplante Features

  • n8n Custom Node

  • OCR für gescannte PDFs

  • Cleanup-Endpoint für gelöschte Dateien

  • Ollama-Support für lokale LLMs

Bekannte Einschränkungen

  • Gescannte PDFs ohne OCR-Layer können nicht gelesen werden

  • Sehr große Dokumente (>50k Zeichen) werden in Teilen gelesen

  • Rate Limits bei Anthropic API (automatisches Retry)


Projekt-Pfad: C:\Users\chris\Documents\MyProjects\rlm-connector Stand: Juni 2026

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cgaeking/rlm-connector'

If you have feedback or need assistance with the MCP directory API, please join our Discord server