Skip to main content
Glama
hailampy123

solid-knowledge-ai

by hailampy123

Solid Knowledge AI

Ein Multi-Quellen-Dokument-Wissensassistent, gesteuert von einem selbstreflektiven LangGraph-Agenten. Er nimmt PDF + Markdown + Webseiten in einen einzigen Vektor-Store auf und beantwortet dann Fragen über einen Agenten, der seine eigene Abfrage bewertet und seine eigene Antwort auf Fundierung prüft – mit erneutem Versuch bei umgeschriebener Abfrage, wenn eine der Prüfungen fehlschlägt, und der sich weigert, zu erfinden, wenn er keine Antwort fundieren kann. Mit Langfuse getracet, mit DeepEval qualitätsgetestet und über MCP bereitgestellt.

Entwickelt, um agentische Entwicklung zu demonstrieren: LangGraph · LiteLLM · ChromaDB · MCP · Langfuse · DeepEval.

Warum das nicht „nur RAG“ ist

Der Agent ist eine korrektive / selbstreflektive RAG-Schleife, keine lineare retrieve → generate-Kette:

question
   │
   ▼
 route ──chitchat/out_of_scope──▶ generate ──▶ END
   │ kb
   ▼
retrieve ──▶ grade_docs ──irrelevant (rewrite query, retry)──▶ retrieve
                 │ relevant
                 ▼
             generate ──▶ self_check ──ungrounded (retry)──▶ retrieve
                              │ grounded / budget spent
                              ▼
                     answer + citations  (or an honest "I don't know")
  • route – überspringt die Abfrage bei Smalltalk / Fragen außerhalb des Themenbereichs.

  • grade_docs – ein LLM-Relevanz-Gate; bei Fehlschlag wird die Abfrage umgeschrieben und erneut versucht.

  • self_check – verifiziert, dass der entworfene Antwortentwurf durch den abgerufenen Kontext gedeckt ist; wenn nicht, wird erneut versucht oder abgeschwächt, anstatt zu halluzinieren.

  • Ein gemeinsames Wiederholungsbudget (max_retries, Standard 2) begrenzt beide Schleifen.

  • Memory – ein SQLite-Checkpointer hält den Zustand von Multi-Turn-Gesprächen pro thread_id fest.

Related MCP server: PDF MCP Server

Schnellstart

# 1. Install (Python 3.11+, uv)
uv sync

# 2. Configure — only ANTHROPIC_API_KEY is required
cp .env.example .env      # then edit .env

# 3. Ingest the sample corpus (2 Markdown + 1 PDF + 1 Wikipedia article)
uv run skai ingest        # -> builds ./.chroma  (local MiniLM embeddings, no API)

# 4. Ask (defaults to Haiku 4.5; switch per-call with --model)
uv run skai ask "What do orcas eat?"
uv run skai ask "How do orcas communicate?" --source md
uv run skai ask "Summarize orca threats" --model sonnet   # haiku | sonnet (Opus blocked)

# 5. Multi-turn chat (remembers the conversation)
uv run skai chat

# 6. Web UI (chat + feedback + live data ingestion)
uv run skai ui        # http://localhost:7860

# 7. Serve over MCP (stdio) for Claude Desktop / an IDE
uv run skai mcp

Web-UI

skai ui startet eine Gradio-App mit den Funktionen, die eine Live-Demo benötigt:

  • Chat mit Sitzungsspeicher; jede Antwort zeigt ihre Quellen, Route und Modell.

  • Feedback nach jeder Antwort – 👍/👎 + ein optionaler Kommentar, gespeichert in SQLite (.skai/feedback.sqlite) und als Langfuse-Score auf dem Trace dieser Runde übertragen, wenn Tracing aktiviert ist. Das ist die geschlossene Schleife: echte Nutzung wird zu einem Eval-Signal.

  • Beispiel-Prompts zur Orientierung für die erste Interaktion.

  • Wissensbasis live erweitern – eine .md/.txt/.pdf-Datei hochladen oder eine URL einfügen, und sie wird sofort in Chroma aufgenommen, sodass die Demo nicht auf das Startkorpus beschränkt ist.

  • Modell (haiku/sonnet) und Quellenfilter (all/pdf/md/web) Auswahlmöglichkeiten.

Feedback ist über skai.feedback.export_jsonl als JSONL-Eval-Seed exportierbar.

Befehle

Befehl

Was er tut

skai ingest [--path data/docs --urls data/urls.txt --reset]

Laden → Chunken → Einbetten → in Chroma speichern

skai ask "..." [--source pdf|md|web] [--thread-id X]

Einmalige Frage mit Zitaten

skai chat

Interaktiver Multi-Turn-Chat mit Speicher

skai ui [--port 7860 --share]

Gradio-Web-UI: Chat, Feedback, Live-Aufnahme

skai mcp

MCP-Server ausführen, der search_kb und ask bereitstellt

skai eval

DeepEval-Qualitätssuite ausführen (benötigt --group eval + Schlüssel)

MCP-Client-Konfiguration

Der Server stellt zwei Werkzeuge bereit – search_kb(query, source_type?) (rohe Abfrage) und ask(question) (voller Agent). Richten Sie einen MCP-Client darauf aus:

{
  "mcpServers": {
    "solid-knowledge-ai": {
      "command": "uv",
      "args": ["run", "skai", "mcp"],
      "cwd": "/absolute/path/to/solid-knowledge-ai"
    }
  }
}

Modellauswahl

Standard ist Haiku 4.5 (schnell, günstig – gut für eine Q&A-Router+Grader+Generator-Schleife). Wechseln Sie pro Aufruf mit --model oder global über SKAI_MODEL in .env:

Wert

Wird aufgelöst zu

haiku (Standard)

anthropic/claude-haiku-4-5

sonnet

anthropic/claude-sonnet-4-5

beliebige LiteLLM-ID

durchgereicht (z. B. openai/gpt-4o-mini)

Opus ist absichtlich blockiert (resolve_model wirft eine Ausnahme), sodass der Assistent nicht versehentlich auf die teuerste Stufe zeigen kann.

Beobachtbarkeit

Setzen Sie LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY (und optional LANGFUSE_HOST) in .env. Jeder Graph-Lauf erzeugt dann einen Trace mit einem Span pro Knoten und pro LLM-Aufruf. Ohne Schlüssel ist Tracing ein sauberer No-op – sonst ändert sich nichts.

Qualitätsbewertung (DeepEval)

uv sync --group eval
export ANTHROPIC_API_KEY=...
uv run skai ingest
uv run --group eval pytest evals -v      # or: skai eval

Der Bewerter ist Claude über LiteLLM, daher ist kein OpenAI-Schlüssel erforderlich. Metriken: Faithfulness, Antwortrelevanz, kontextuelle Relevanz – plus ein günstiges Keyword-Gate.

Tests

uv run pytest        # 39 tests, fully offline: no network, no API keys

Das LLM ist dependency-injiziert, sodass der gesamte Graph in Tests gegen einen deterministischen Stub läuft, und Chroma verwendet eine deterministische In-Process-Embedding-Funktion.

Wie es aufgebaut ist

src/skai/
  config.py            settings (.env)              agent/llm.py     ChatLiteLLM -> Claude
  models.py            Document/Chunk/AgentState    agent/nodes.py   route/retrieve/grade/generate/self_check
  ingest/loaders.py    pdf | md | web  -> Document  agent/prompts.py node prompts
  ingest/chunk.py      source-aware splitting       agent/graph.py   StateGraph + SQLite memory
  ingest/store.py      Chroma add/query             observability.py Langfuse handler (or no-op)
  cli.py               ingest|ask|chat|mcp|eval     mcp_server.py    search_kb / ask as MCP tools
evals/                 DeepEval suite               tests/           offline unit + graph tests

Agentengraph- und Komponentendiagramme (Mermaid): siehe docs/ARCHITECTURE.md. Designbegründung und technische Abwägungen: siehe docs/DECISIONS.md.

Status

Verifiziert: uv run skai ingest lädt alle drei Quellentypen (2 md + 1 pdf + 1 web → 170 Chunks) und echte semantische Abfrage liefert relevante Passagen. 39 Offline-Tests bestehen. ask/chat/eval erfordern einen ANTHROPIC_API_KEY.

F
license - not found
B
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables intelligent search and question-answering over PDF documents using semantic similarity and keyword search. Supports OCR for scanned PDFs, persistent vector storage with ChromaDB, and maintains source tracking with page numbers.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-powered querying of PDF documents using hybrid retrieval (BM25 + vector search) and retrieval-augmented generation, returning structured answers with source citations and confidence scores.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Convert PDF documents to Markdown and query them using AI with source attribution and confidence scoring, supporting multiple LLM providers.
    MIT

View all related MCP servers

Related MCP Connectors

  • Governed, auditable knowledge your team curates for its AI assistants, self-hostable

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Your company's brain for AI agents. Cited, permission-aware knowledge across every system.

View all MCP Connectors

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/hailampy123/solid-knowledge-ai'

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