Externe Wissensdatenbank anbinden

Wie man eigene Wissensdatenbanken mit der moinAI-Knowledge-Base verbindet

Im moinAI Hub ist es nicht nur möglich, Ressourcen wie Webseiten, PDFs oder CSV-Dateien in der Knowledge Base zu hinterlegen, sondern auch Artikel aus einer eigenen bereits bestehenden Wissensdatenbank zu nutzen. Die Verknüpfung einer Wissensdatenbank bietet insbesondere den Vorteil, dass der KI-Chatbot basierend auf bestehenden Wissensdatenbanken Antworten bietet. Es ist nicht erforderlich, die Knowledge Base extra zu pflegen. 

Außerdem erfolgt eine ständige Inhalts-Synchronisation, sodass auch hier keine Pflege der Knowledge Base notwendig ist.

Die Anbindung der eigenen Wissensdatenbank erfolgt dabei über eine Schnittstelle. Über diese Schnittstelle erfolgt die Übertragung der Artikel in die moinAI Knowledge Base.

Im Folgenden ist beschrieben, wie die Anbindung der Wissensdatenbank konkret erfolgt. Außerdem ist beschrieben, wie das automatische Synchronisieren funktioniert.

  1. Wissensdatenbank anbinden
  2. Automatisches Synchronisieren

Wissensdatenbank anbinden

Eine umfassende Beschreibung, wie die Anbindung erfolgt, bietet diese technische Dokumentation.

Bei Fragen steht das Customer Success Team von moinAI zur Verfügung.

Automatisches Synchronisieren

Es ist möglich, Inhalte aus einem beliebigen Quellsystem (CMS, Git-Repo o. ä.) automatisch mit der moinAI-Knowledge-Base synchron zu halten. Sobald sich der Originaltext ändert, wird derselbe Artikel in moinAI entweder angelegt oder per "PUT" aktualisiert – ganz ohne manuelles „Neuladen". Diese Synchronisation erfolgt in fünf Schritten.

Ablauf in 5 Schritten  

  1. Änderung erkennen: Dein CMS, Git-Repo, Google-Doc usw. löst einen Webhook oder CI-Job aus, sobald der Inhalt geändert wurde.
  2. Artikel suchen
    • API-Call: GET /knowledge?metadata.externalId=<ID>  
    • Prüfen auf: data[].id, updatedAt
  3. Anlegen oder Aktualisieren
    • Wenn kein Artikel gefunden wurde: `POST /knowledge` 
    • Wenn Artikel existiert: `PUT /knowledge/:id`  
  4. Indexierung abwarten: Man wiederholt `GET /knowledge/:id`, bis `status == "active" zurückkommt.
  5. Fehler & Quotas behandeln: 429 (Schreib-Rate) oder 422 (Quota) werden abgefangen und es später erneut versucht.

Beispiel (Python 3) 

import os, requests, json




API  = "https://api.moin.ai/api/v1/knowledge"

HEAD = {

    "x-api-key": os.environ["MOIN_API_KEY"],

    "Content-Type": "application/json"

}




def sync_article(ext_id: str, title: str, md_body: str, version: int):

    """Legt einen Artikel an oder aktualisiert ihn, falls er schon existiert."""

    # 2. Suchen

    r = requests.get(API, headers=HEAD,

                     params={"metadata.externalId": ext_id})

    items = r.json().get("data", [])




    payload = {

        "title": title,

        "body": md_body,

        "metadata": {

            "externalId": ext_id,

            "version":    version

        }

    }




    if items:                                    # Update

        art_id = items[0]["id"]

        requests.put(f"{API}/{art_id}", headers=HEAD, json=payload)

    else:                                        # Create

        requests.post(API, headers=HEAD, json=payload)

Beispielaufruf

sync_article(

    ext_id="SKU-4711",

    title="Turbo-Besen 2000 – Handbuch",

    md_body="# Turbo-Besen 2000\nNeue Montage-Anleitung …",

    version=3

)

Best Practices

  • Eindeutige externe ID (z. B. externalId) im metadata-Block speichern.
  • Versionsnummer oder Hash mitsenden, um unnötige Uploads zu vermeiden.
  • Back-off bei 429 bei Überschreitung der Schreib-Rate mit wachsender Wartezeit erneut versuchen.
  • Logging & Monitoring: Status-Codes und die Dauer der Indexierung erfassen.
  • Rollback-Strategie: Für eine Versionshistorie löscht man den alten Artikel und legt einen neuen an.