💊 Interaktiver Test: Wie freizügig sind KIs mit medizinischer Beratung

🧠 Wie wir ein „lobotomisiertes“ RAG-System mit Qdrant, OpenAI und AI Engine erstellt haben

📌 Zweck:
Dieses Dokument beschreibt die Funktionsweise eines Retrieval-Augmented Generation (RAG)-Systems, das entwickelt wurde, um streng kontrollierte Antworten ausschließlich basierend auf seiner eigenen internen Datenbank zu liefern, während das allgemeine vortrainierte Wissen eines Sprachmodells (LLM) ausgeschlossen wird.
Dieser Prozess wird als „Lobotomisierung“ bezeichnet.
Die einzige Wissensquelle des Systems besteht aus vier Dateien: einem Arzneimittelkatalog (Excel) und drei strukturierten medizinischen Leitlinien (Word-Dokumente).


1. 🔍 Was ist Qdrant?

Qdrant (ausgesprochen Quadrant) ist eine auf die Speicherung, Verwaltung und schnelle Suche von Vektor-Embeddings spezialisierte Vektordatenbank.

Hauptzweck: Es wird in Anwendungen der künstlichen Intelligenz eingesetzt, wie zum Beispiel:

🔎 Semantische Suche

🧩 RAG-Systeme (Retrieval-Augmented Generation)

💬 Spezialisierte Chatbots – genau wie im Anwendungsfall mit der Medikamentendatenbank.


2. ⚙️ Funktionsweise von Qdrant (Konzept)

Der Prozess lässt sich in drei grundlegende Phasen unterteilen:

SchrittBeschreibungBeispiel
1. DatenvektorisierungRohdaten (Text, Bilder) werden mithilfe eines Embedding-Modells in numerische Vektoren (Zahlenlisten) umgewandelt.Ein Modell wie text-embedding-ada-002 (OpenAI) transformiert das Wort "Paracetamol" in einen 1536-dimensionalen Vektor: [0.12, -0.44, 0.56, ...].
2. Speicherung in QdrantDie generierten Vektoren werden zusammen mit Metadaten (Payload), die die ursprünglichen Informationen enthalten, in Qdrant gespeichert.{ "id": 1, "vector": [0.12, -0.44, 0.56, ...], "payload": { "name": "Paracetamol", "manufacter": "XYZ" } }
3. Abfrage und SucheWenn ein Benutzer eine Frage stellt, wird diese ebenfalls vektorisiert. Qdrant vergleicht den Abfragevektor mit allen Vektoren in der Datenbank und gibt die ähnlichsten basierend auf einem Distanzalgorithmus (z. B. Cosinus, Euklidisch) zurück.Eine Suche nach "Kopfschmerztablette" liefert die mit "Paracetamol" verbundenen Vektoren zurück, auch wenn dieses Wort nicht in der Abfrage vorkommt.

🧩 Konzeptionelles Fazit: Qdrant sucht nicht nach exakten Textübereinstimmungen, sondern nach semantischen Ähnlichkeiten zwischen Bedeutungen.


3. 🏗️ Qdrant-Architektur und Nutzungsmodi

Qdrant kann auf zwei Hauptarten bereitgestellt werden:

ModusBeschreibungMerkmale
☁️ Qdrant CloudGehosteter und verwalteter Dienst.– Ideal für Prototypen und kleine Projekte.
– Kostenloser Plan: 1 Collection, ~1 GB, 10k-20k Punkte.
– Weboberfläche und einfache Verwaltung.
🖥️ Qdrant Lokal (Self-Hosted)Installiert auf Ihrer eigenen Infrastruktur (z. B. über Docker).– Volle Kontrolle und erhöhte Sicherheit.
– Optimierte Leistung für spezifische Hardware.
– Erfordert Administrationskenntnisse.

⚠️ Wichtig: Beide Optionen verwenden dieselbe REST- oder gRPC-API, was bedeutet, dass der Anwendungscode unabhängig von der Bereitstellungsentscheidung identisch ist.


4. 📚 Datenstruktur in Qdrant

Die Datenstruktur von Qdrant ist hierarchisch und intuitiv:

text
Collection → "medications"
       |
       ├── Point 1 -> Vektor + Payload für "Paracetamol"
       ├── Point 2 -> Vektor + Payload für "Ibuprofen"
       └── Point n -> Vektor + Payload für ein anderes Medikament

Glossar der Begriffe:

BegriffErklärung
CollectionEine logische Gruppe zusammengehöriger Vektoren (z. B. die “medications”-Collection).
PointEin eindeutiger Datensatz in der Collection, bestehend aus einem Vektor und einem Payload.
VectorNumerische Darstellung (Embedding) eines Textfragments.
PayloadDem Vektor beigefügte Metadaten (z. B. Name, Hersteller, Code, Originaltext).
FilterBedingungen, die angewendet werden, um die Suche basierend auf dem Payload einzuschränken (z. B. manufacturer = "Pfizer").

5. 🧮 Abfragetypen in Qdrant

Qdrant unterstützt mehrere Abfrageoperationen, von denen die relevantesten sind:

  • 🔍 Einfache Suche: Gibt die ähnlichsten Vektoren für eine gegebene Abfrage zurück.

  • 🧩 Gefilterte Suche: Kombiniert semantische Suche mit Metadatenfiltern (z. B. „finde Antidepressiva nur vom Hersteller Roche“).

  • 🔁 Empfehlen: Generiert Empfehlungen basierend auf einer Reihe von bereits im System vorhandenen Referenzpunkten.


6. ⚡ Leistung und Hauptvorteile

AspektQdrant-Bewertung
GeschwindigkeitSehr hoch, dank Optimierungen in der Sprache Rust.
PersistenzDaten werden auf der Festplatte gespeichert, was die Haltbarkeit gewährleistet.
FilterungErweiterte Funktionen zur Filterung von Metadaten (Payload).
SkalierbarkeitUnterstützt Sharding und Replikation für große Datensätze.
KompatibilitätAPIs für alle gängigen Sprachen (Python, JS, Go, Java).

🧩 Kontextuelle Anwendung: Lobotomisiertes Medikationssystem

🎯 Endziel: Erstellung eines Chatbots, der ausschließlich basierend auf den 4 Dateien und den 3 Textdokumenten antwortet, ohne sich auf das allgemeine Wissen des LLM zu stützen.

🔧 Systemkomponenten:

  1. 🗃️ Vektordatenbank (Qdrant): Speichert alle Informationen aus Ihren Dateien als Vektoren und Payloads.

  2. 🛠️ Embedding Engine (OpenAI): Konvertiert Benutzeranfragen und Dateiinhalt in Vektoren.

  3. 🧠 Antwort-Engine (OpenAI GPT): Generiert die endgültige textliche Antwort.

  4. 🔗 Orchestrator (AI Engine – WordPress Plugin): Verbindet alle Komponenten und wendet strenge Regeln an.


7. 🔐 Die entscheidende Rolle der „Strengen Anweisungen“ (System Prompt)

Dies ist die Seele des Systems und der Lobotomisierungsmechanismus. Diese Anweisungen werden in der AI Engine-Oberfläche konfiguriert und bei jeder Interaktion an OpenAI GPT gesendet.

📍 Wo wirken diese Regeln?

  • NICHT in Qdrant.

  • NICHT in der Embedding Engine.

  • JA, in der Antwort-Engine (OpenAI GPT), die verpflichtet ist, die über AI Engine bereitgestellten Anweisungen zu befolgen.

📜 Beispiel für Strenge Anweisungen für AI Engine:

# IDENTITÄT: Sie sind ein spezialisierter Assistent für die Medikamentendatenbank des Unternehmens.
# WISSENSQUELLE: Ihre einzige Informationsquelle ist die Vektordatenbank (Qdrant), die nur die Dateien X, Y, Z enthält.
# ABSOLUTE REGELN:
# 1. Antworten Sie AUSSCHLIESSLICH basierend auf den Textfragmenten (Kontext), die Qdrant für die Frage des Benutzers zurückgibt.
# 2. Verwenden Sie NIEMALS allgemeines vortrainiertes Wissen über Medikamente, Krankheiten oder andere Themen.
# 3. WENN die von Qdrant zurückgegebenen Fragmente keine relevanten Informationen für die Frage enthalten, muss Ihre Antwort STRENG lauten: "In unserer Datenbank sind zu diesem Thema keine Informationen verfügbar."
# 4. Antworten müssen prägnant, klar und ausschließlich auf den bereitgestellten Daten basieren.

8. 🔁 Datenfluss und Lobotomisierung in Aktion (Erweiterte Beispiele)

Lassen Sie uns einige konkrete Szenarien durchgehen, um zu verstehen, wie Lobotomisierung und intelligente Informationsabfrage funktionieren.

Anwendungsfall 1: Suche nach einem spezifischen Medikament (Strenge Wissenskontrolle)

SchrittAktionErgebnis
1.Benutzer fragt: „Welche Morphin-haltigen Medikamente empfehlen Sie?“Die Frage wird an AI Engine gesendet.
2.AI Engine vektorisiert sie und sendet sie an Qdrant.Qdrant sucht nach ähnlichen Vektoren.
3.Annahme: Es gibt keine Erwähnung von „Morphin“ in Ihren Dateien.Qdrant findet keine relevanten Ergebnisse.
4.AI Engine erstellt den Prompt für GPT: System Prompt + Kontext (leer) + Frage.Der Kontext ist leer.
5.OpenAI GPT verarbeitet den Prompt. Die absolute Regel verbietet die Verwendung allgemeinen Wissens.Endgültige Antwort: „In unserer Datenbank sind zu diesem Thema keine Informationen verfügbar.“ ✅

Anwendungsfall 2: Vom Symptom zur Diagnose und Behandlung (Voller Wissensfluss)

SchrittAktionErgebnis
1.Benutzer fragt: „Ich habe pulsierende Kopfschmerzen mit Übelkeit. Was könnte das sein und was kann ich einnehmen?“Die Frage wird vektorisiert und an Qdrant gesendet.
2.Qdrant identifiziert relevante Fragmente aus allen Dateien:
Symptoms.doc: „Kopfschmerzen: pulsierend, Übelkeit“
Diagnoses.doc: „Migräne mit/ohne Aura“
Treatments.doc: „Migräne -> Sumatriptan, Topiramat“
Excel.xlsx: Produkte, die „Sumatriptan“ enthalten
Gibt einen reichen und relevanten Kontext zurück.
3.AI Engine setzt den endgültigen Prompt mit all diesen Fragmenten zusammen.Der Kontext enthält die vollständige Hierarchie: Symptom -> Diagnose -> Behandlung -> Medikamente.
4.OpenAI GPT synthetisiert die Informationen.Endgültige Antwort: „Die beschriebenen Symptome (pulsierender Kopfschmerz mit Übelkeit) können einer Migräne entsprechen. Für Migräne empfiehlt unsere Datenbank Medikamente wie Sumatriptan oder Topiramat. Bitte konsultieren Sie einen Arzt für eine genaue Diagnose.“ ✅

Anwendungsfall 3: Erweiterte semantische Suche (Ohne exakte Schlüsselwörter)

SchrittAktionErgebnis
1.Benutzer fragt: „Gibt es etwas gegen Schwindel und das Gefühl, dass sich alles dreht?“Die Frage wird vektorisiert.
2.Qdrant findet mithilfe der semantischen Ähnlichkeit Schlüssel-Fragmente:
Symptoms.doc: „Vertigo: Gefühl, dass sich das Haus dreht“
Treatments.doc: „Vertigo -> Betahistin“
Excel.xlsx: Zeilen mit „BETAHISTIN“ von verschiedenen Herstellern (ATB, LPH, MCC, GEMAX PHARMA).
Sucht nach Bedeutung, nicht nach exakten Wörtern. „Schwindel“ und „drehen“ stimmen mit „Vertigo“ überein.
3.Der endgültige Prompt beinhaltet diese Verbindungen.Das System versteht, dass sich die Frage auf Vertigo bezieht.
4.OpenAI GPT formuliert die Antwort.Endgültige Antwort: „Die beschriebenen Symptome können mit Vertigo assoziiert sein. In unserer Datenbank ist ein in solchen Fällen verwendetes Medikament Betahistin, erhältlich unter mehreren Marken (z. B. Betahistin ATB, Betahistin LPH).“ ✅

Anwendungsfall 4: Implizite Filterung über den Dateiinhalt

SchrittAktionErgebnis
1.Benutzer fragt: „Was ist die Behandlung für Parkinson-Krankheit?“Die Frage wird vektorisiert.
2.Qdrant findet schnell Assoziationen:
Diagnoses.doc: „Parkinson-Krankheit“ verbunden mit Gang-/Gleichgewichtsstörungen und abnormalen Bewegungen.
Treatments.doc: „Parkinson-Krankheit -> Dopamin, Ropinirol, Entacapon“
Excel.xlsx: Findet keine Produkte mit diesen aktiven Inhaltsstoffen (z. B. enthält „ALEDOV“ Levodopa/Carbidopa, aber Dopamin selbst ist nicht aufgeführt).
Das System meldet nur, was in den Dateien existiert.
3.Der Prompt enthält nur das, was Qdrant gefunden hat.Der Kontext beinhaltet empfohlene Behandlungen, aber nicht alle spezifischen Produkte.
4.OpenAI GPT hält sich strikt an den Kontext.Endgültige Antwort: „Für die Parkinson-Krankheit weist unsere Datenbank Behandlungen wie Dopamin, Ropinirol und Entacapon aus. Im Katalog ist ein Medikament mit Levodopa/Carbidopa (ALEDOV) verfügbar. Bitte konsultieren Sie einen Neurologen für eine korrekte Verschreibung.“ ✅
Anmerkung: Die Antwort erfindet keine anderen Medikamente.

Anwendungsfall 5: Ausschluss jeglicher externer Informationen

SchrittAktionErgebnis
1.Benutzer fragt: „Ist Aspirin gut zur Vorbeugung von Herzinfarkten?“Die Frage wird vektorisiert.
2.Qdrant findet:
Excel.xlsx: Dutzende Einträge für „ACID ACETILSALICYLIC“ (aktiver Inhaltsstoff in Aspirin) mit therapeutischer Wirkung: „ANTITHROMBOTISCHES THROMBOZYTENAGGREGATIONSHEMMER“.
Treatments.doc: „Schlaganfälle -> Acetylsalicylsäure“ (semantisch ähnlich zu „Herzinfarkt vorbeugen“).
Keine direkte Erwähnung von „Herzinfarkt“, aber kardiovaskuläre Anwendungen werden gefunden.
3.Der Prompt beinhaltet nur diese pharmazeutischen und therapeutischen Daten.Keine direkten medizinischen Aussagen zur „Herzinfarktprävention“.
4.OpenAI GPT hält sich an die Payload-Daten.Endgültige Antwort: „In unserer Datenbank ist Acetylsalicylsäure (aktiver Inhaltsstoff in Aspirin) als antithrombotisch und thrombozytenaggregationshemmend klassifiziert, mit Indikationen, einschließlich Schlaganfällen. Bitte konsultieren Sie einen Arzt für spezifische Anweisungen und Dosierung.“ ✅
Anmerkung: Die Antwort ist neutral, datenbasiert, ohne eine spezifische medizinische Anwendung zu bestätigen oder zu leugnen.

Anwendungsfall 5: Ausschluss jeglicher externer Informationen

SchrittAktionErgebnis
1.Benutzer fragt: „Ist Aspirin gut zur Vorbeugung von Herzinfarkten?“Die Frage wird vektorisiert.
2.Qdrant findet:
Excel.xlsx: Dutzende Einträge für „ACID ACETILSALICYLIC“ (aktiver Inhaltsstoff in Aspirin) mit therapeutischer Wirkung: „ANTITHROMBOTISCHES THROMBOZYTENAGGREGATIONSHEMMER“.
Treatments.doc: „Schlaganfälle -> Acetylsalicylsäure“ (semantisch ähnlich zu „Herzinfarkt vorbeugen“).
Keine direkte Erwähnung von „Herzinfarkt“, aber kardiovaskuläre Anwendungen werden gefunden.
3.Der Prompt beinhaltet nur diese pharmazeutischen und therapeutischen Daten.Keine direkten medizinischen Aussagen zur „Herzinfarktprävention“.
4.OpenAI GPT hält sich an die Payload-Daten.Endgültige Antwort: „In unserer Datenbank ist Acetylsalicylsäure (aktiver Inhaltsstoff in Aspirin) als antithrombotisch und thrombozytenaggregationshemmend klassifiziert, mit Indikationen, einschließlich Schlaganfällen. Bitte konsultieren Sie einen Arzt für spezifische Anweisungen und Dosierung.“ ✅
Anmerkung: Die Antwort ist neutral, datenbasiert, ohne eine spezifische medizinische Anwendung zu bestätigen oder zu leugnen.

9. 🧠 Wie logische Verbindungen zwischen Dateien hergestellt werden

  • Wer stellt die Verbindungen her? Nicht Qdrant, sondern OpenAI GPT.

  • Wie?

    1. Alle Dateien (Excel und DOCs) werden in kleinere Textstücke „gechunked“.
    2. Jeder Chunk wird vektorisiert und als unabhängiger Point in Qdrant eingefügt.
    3. Bei einer Abfrage gibt Qdrant die relevantesten Fragmente zurück, unabhängig davon, aus welcher Datei sie stammen.
    4. GPT empfängt diese gemischten Fragmente und synthetisiert sie, indem es semantische Verbindungen zwischen ihnen findet, um eine kohärente Antwort zu erstellen.

Beispiel: Wenn ein Fragment „Paracetamol“ und ein anderes „Leberkontraindikationen“ erwähnt und der Benutzer nach Leberwirkungen fragt, verbindet GPT die beiden Fragmente, um eine vollständige Antwort zu geben.

🔗 Systemwissensstruktur: Die Vektordatenbank basiert auf einem Satz von 4 Dateien, die eine vollständige klinische Hierarchie bilden:

  1. Symptoms.doc – Strukturierte Liste von Symptomen (z. B. Kopfschmerzen, Vertigo, Muskelschwäche).
  2. Diagnoses.doc – Mögliche Diagnosen für jedes Symptom.
  3. Treatments.doc – Empfohlene Behandlungen für jede Diagnose.
  4. Excel.xlsx – Katalog spezifischer kommerzieller Produkte (Name, INN, Hersteller, ATC-Code usw.).

Diese Struktur ermöglicht es dem System, einer vollständigen logischen Kette zu folgen: vom Symptom des Patienten über die geeigneten Diagnosen zur empfohlenen Behandlung und schließlich zu den spezifischen Medikamenten, die im Katalog verfügbar sind.


✅ Endgültiges Fazit

Das erstellte System ist robust und erreicht perfekt das Ziel, einen spezialisierten und kontrollierten Chatbot bereitzustellen:

  • Qdrant ist der leistungsstarke semantische Speicher.
  • OpenAI ist das Gehirn, das Text versteht und generiert.
  • AI Engine ist der Dirigent, der die Partitur (strengen Anweisungen) anwendet.
  • Strenge Anweisungen sind die logische Quarantäne, die die Lobotomisierung gewährleistet und das System zwingt, nur aus der spezifischen Datenquelle zu antworten.

Diese Architektur eliminiert das Risiko von „Halluzinationen“ (erfundenen Antworten) und bietet die volle Kontrolle über Informationen, was sie ideal für sensible Bereiche wie medizinische Anwendungen macht. Das endgültige System wird als virtueller Neurologieexperte fungieren, der ausschließlich über die in den 4 Dateien strukturierte Wissensbasis berichtet und sichere, nachvollziehbare und verifizierte Antworten liefert.