AI Personal Learning
und praktische Anleitung
CyberKnife-Zeichenspiegel

Dify Tutorial zur Anbindung an externe Wissensdatenbanken

Zur besseren Unterscheidung wird in diesem Papier Dify Wissensspeicher außerhalb der Plattform werden zusammenfassend als "externe Wissensspeicher" bezeichnet.

Funktion Einführung

Die in Dify eingebaute Wissensdatenbankfunktionalität und die Mechanismen zur Textsuche erfüllen möglicherweise nicht die Anforderungen einiger fortgeschrittener Entwickler, die eine präzisere Kontrolle über die Ergebnisse des Textabrufs benötigen.

Einige Teams entscheiden sich für die Selbstforschung RAG Algorithmen zu verwenden und ein Texterkennungssystem eigenständig zu pflegen oder einen von einem Cloud-Anbieter bereitgestellten Wissensdatenbankdienst (z. B. AWS Bedrock) zu nutzen.


Dify, als offene LLM-Anwendungsentwicklungsplattform, möchte Entwicklern mehr Möglichkeiten bieten.

Dify kann über die Funktion "Connect to External Knowledge Bases" mit externen Wissensdatenbanken verbunden werden. Dadurch erhalten KI-Anwendungen Zugang zu mehr Informationsquellen.

Im Einzelnen ergeben sich die folgenden Vorteile:

  • Dify kann direkt auf Text zugreifen, der in der Wissensdatenbank des Cloud-Anbieters gehostet wird, so dass die Entwickler den Inhalt nicht in die Wissensdatenbank von Dify kopieren müssen.
  • Dify kann direkt auf den algorithmisch verarbeiteten Text in der selbst erstellten Wissensdatenbank zugreifen, und die Entwickler müssen sich nur darauf konzentrieren, den Mechanismus der Informationsbeschaffung zu optimieren, um die Abrufgenauigkeit zu verbessern.
  • Im Vergleich zur direkten Nutzung der Wissensdatenbank-Services von Cloud-Anbietern bietet Dify flexiblere Integrationsmöglichkeiten auf der Anwendungsebene, die es Entwicklern leicht machen, verschiedene KI-Anwendungen zu erstellen.

Die folgende Abbildung veranschaulicht das Prinzip der Verbindung mit einer externen Wissensbasis:

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

 

Schritte zur Verbindung

1. eine konforme externe Wissensdatenbank-API einzurichten

Lesen Sie die von Dify verfasste Spezifikation der externen Wissensdatenbank-API sorgfältig durch, bevor Sie Ihren API-Dienst einrichten.

2. assoziierte externe Wissensdatenbank-APIs

Bitte beachten Sie, dass Dify derzeit nur das Abrufen von externen Wissensdatenbanken unterstützt, nicht aber deren Änderung. Die Entwickler müssen externe Wissensdatenbanken selbst pflegen.

Gehen Sie zur Seite "Wissensdatenbank", klicken Sie auf "Externe Wissensdatenbank-API" in der oberen rechten Ecke und dann auf "Externe Wissensdatenbank-API hinzufügen".

Folgen Sie den Aufforderungen auf der Seite, um das Formular auszufüllen:

  • Name der Wissensdatenbank: Kann angepasst werden, um zwischen verschiedenen externen Wissensdatenbank-APIs zu unterscheiden.
  • Adresse der API-Schnittstelle: Die Adresse des Links zur externen Wissensdatenbank, z. B. api-endpoint/retrieval. Ausführliche Anweisungen finden Sie in der externen Wissensdatenbank API.
  • API-Schlüssel: Der Verbindungsschlüssel für die externe Wissensdatenbank, siehe Externe Wissensdatenbank-API für Details.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

3. die Verbindung zu externen Wissensdatenbanken

Klicken Sie auf dem Bildschirm "Wissensdatenbank" unter "Wissensdatenbank hinzufügen" auf "Mit externer Wissensdatenbank verbinden", um den Bildschirm zur Konfiguration der Parameter aufzurufen.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Füllen Sie die folgenden Parameter aus:

  • Wissensdatenbank Name und Beschreibung
  • Externe Wissensdatenbank-API: Wählen Sie die in Schritt 2 verknüpfte externe Wissensdatenbank-API aus. Dify wird den Textinhalt der externen Wissensdatenbank über die API-Verbindung aufrufen.
  • Externe Wissensdatenbank ID: Geben Sie die ID der externen Wissensdatenbank an, mit der Sie verknüpft werden sollen. Einzelheiten finden Sie unter Externe Wissensdatenbank-API.
  • Passen Sie die Abrufeinstellungen an:
    • Top K: Je größer der Wert, desto mehr Textfragmente werden abgerufen. Es wird empfohlen, mit kleineren Werten zu beginnen und diese schrittweise zu erhöhen, bis die optimale Balance gefunden ist.
    • Schwellenwert für die Punktzahl: Je höher der Wert, desto relevanter sind die abgerufenen Textsegmente für die Frage, aber die Anzahl nimmt ab. Es wird empfohlen, mit einem höheren Wert zu beginnen und diesen schrittweise zu verringern, um eine ausreichende Menge an relevantem Text zu erhalten.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

4. testet Verbindungen und Rückrufe

Nachdem die Verbindung hergestellt wurde, können Sie die problematischen Schlüsselwörter im "Abruftest" simulieren und eine Vorschau der aus der externen Wissensdatenbank abgerufenen Textfragmente anzeigen. Wenn Sie mit den Ergebnissen nicht zufrieden sind, können Sie versuchen, die Abrufparameter zu ändern oder die Sucheinstellungen der externen Wissensdatenbank anzupassen.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

5. die Integration in Anwendungen

  • Anwendung vom Typ Chatbot/Agent: Wählen Sie im Kontext auf der Seite Arrangement das Bild mit dem EXTERN Markiert als externe Wissensdatenbank.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

  • Anwendung vom Typ Chatflow/Workflow: Fügen Sie den Knoten Knowledge Retrieval hinzu und wählen Sie den Knoten mit dem EXTERN Markiert als externe Wissensdatenbank.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

6. die Verwaltung der externen Wissensbasis

Auf der Seite Wissensdatenbank wird die Karte Externe Wissensdatenbank in der oberen rechten Ecke der Karte mit folgendem Text versehen EXTERN Registerkarte. Geben Sie die Wissensbasis ein, die Sie ändern möchten, und klicken Sie auf "Einstellungen", um sie zu ändern:

  • Name und Beschreibung der Wissensdatenbank
  • Umfang der Sichtbarkeit ("Nur ich", "Alle Teammitglieder" und "Einige Teammitglieder"). Mitglieder ohne Berechtigungen können nicht auf die Wissensdatenbank zugreifen.
  • Abrufeinstellungen (Schwellenwerte für Top K und Score)

Hinweis: Es ist nicht möglich, die verknüpfte externe Wissensdatenbank-API und die externe Wissens-ID zu ändern. Wenn Sie sie ändern möchten, verknüpfen Sie bitte eine neue externe Wissensdatenbank-API und stellen Sie sie erneut her.

 

Verbindungsbeispiel: Wie stelle ich eine Verbindung mit der AWS Bedrock Knowledge Base her?

In diesem Beitrag wird erläutert, wie die Dify-Plattform über eine externe Wissensdatenbank-API mit der AWS Bedrock Knowledge Base verbunden werden kann. Dadurch können KI-Anwendungen innerhalb der Dify-Plattform direkt auf die in der AWS Bedrock Knowledge Base gespeicherten Inhalte zugreifen und den Zugang zu neuen Informationsquellen erweitern.

Vorab-Positionierung

  • AWS Bedrock Wissensdatenbank
  • Dify SaaS Dienstleistungen / Dify Community Edition
  • Grundlagen der Backend-API-Entwicklung

1. registrieren und AWS Bedrock Knowledge Base erstellen

Besuchen Sie AWS Bedrock, um einen Knowledge Base-Service zu erstellen.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Erstellen einer AWS Bedrock Knowledge Base

2. back-end API-Dienste aufbauen

Die Dify-Plattform kann sich noch nicht direkt mit der AWS Bedrock Knowledge Base verbinden. Das Entwicklungsteam muss sich auf die API-Definition von Dify für die externe Wissensdatenbank-Verbindung beziehen und den Back-End-API-Service manuell erstellen, um die Verbindung mit AWS Bedrock herzustellen. Bitte sehen Sie sich das Architekturdiagramm an:

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Aufbau von Backend-API-Diensten

Sie können sich auf die folgenden 2 Codedateien beziehen, um die Backend-Service-API zu erstellen.

wissen.py

from flask import request
from flask_restful import Ressource, reqparse

from bedrock.knowledge_service import ExternalDatasetService

class BedrockRetrievalApi(Ressource).
    # url : /retrieval
    def post(self): parser = reqparse
        parser = reqparse.RequestParser()
        parser.add_argument("abruf_setting", nullable=False, required=True, type=dict, location="json")
        parser.add_argument("abfrage", nullable=False, required=True, type=str,)
        parser.add_argument("knowledge_id", nullable=False, required=True, type=str)
        args = parser.parse_args()

        # Autorisierungsprüfung
        auth_header = request.headers.get("Autorisierung")
        wenn " " nicht in auth_header.
            zurückgeben {
                "error_code": 1001, "error_msg": 1001, "error_code": 1001, "error_msg": 1001
                "error_msg": "Ungültiges Authorization-Header-Format, erwartetes Format 'Bearer '".
            }, 403
        auth_scheme, auth_token = auth_header.split(None, 1)
        auth_scheme = auth_scheme.lower()
        if auth_scheme ! = "bearer".
            zurückgeben {
                "error_code": 1001, "error_msg": 1001
                "error_msg": "Ungültiges Format des Autorisierungs-Headers, erwartetes Format 'Bearer '".
            }, 403
        if auth_token: "Erwartetes 'Bearer '-Format.
            # verarbeitet hier Ihre Autorisierungslogik
            pass

        # Rufen Sie das Wissen auf Abruf Ergebnis = ExternalDatasetService.knowledge_retrieval()
        Ergebnis = ExternalDatasetService.knowledge_retrieval(
            args["abfrage_einstellung"], args["abfrage"], args["wissen_id"]
        )
        return result, 200

wissens_dienst.py

importieren boto3

Klasse ExternalDatasetService.
    @staticmethod
    def knowledge_retrieval(retrieval_setting: dict, query: str, knowledge_id: str):
        # get bedrock client
        client = boto3.client(
            "bedrock-agent-runtime",
            aws_secret_access_key="AWS_SECRET_ACCESS_KEY",
            aws_access_key_id="AWS_ACCESS_KEY_ID",
            # Beispiel: us-east-1
            region_name="AWS_REGION_NAME",
        )
        # holt externes Wissen ab
        response = client.retrieve(
            knowledgeBaseId=knowledge_id,
            retrievalConfiguration={
                "vectorSearchConfiguration": {"numberOfResults": abruf_setting.get("top_k"), "overrideSearchType": "HYBRID"}
            },
            retrievalQuery={"text": query},
        )
        #-Antwort parsen
        results = []
        if response.get("ResponseMetadata") und response.get("ResponseMetadata").get("HTTPStatusCode") == 200:: if response.get("ResponseResults"): if response.get("ResponseMetadata").get("HTTPStatusCode") == 200
            if response.get("AbfrageErgebnisse")::
                abruf_Ergebnisse = response.get("abrufErgebnisse")
                for retrieval_result in retrieval_results: # filtert Ergebnisse heraus mit
                    # filtert Ergebnisse aus, deren Punktzahl unter dem Schwellenwert liegt
                    if retrieval_result.get("score") < retrieval_setting.get("score_threshold", .0):: # filtert Ergebnisse mit einer Punktzahl kleiner als der Schwelle heraus
                        weiter
                    result = {
                        "metadata": abruf_ergebnis.get("metadata"),
                        "score": retrieval_result.get("score"),
                        "title": retrieval_result.get("metadata").get("x-amz-bedrock-kb-source-uri"),
                        "Inhalt": retrieval_result.get("Inhalt").get("Text"),
                    }
                    results.append(result)
        return {
            "records": results
        }

In diesem Prozess können Sie die API-Schnittstellenadresse und den API-Schlüssel für die Authentifizierung und nachfolgende Verbindungen erstellen.

3. eine AWS Bedrock Knowledge Base ID zu erhalten

Melden Sie sich am AWS Bedrock Knowledge Backend an und rufen Sie die ID der erstellten Knowledge Base ab. Dieser Parameter wird in den folgenden Schritten verwendet, um eine Verbindung zur Dify-Plattform herzustellen.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Erhalten Sie eine AWS Bedrock Knowledge Base ID

4. verlinkte externe Wissens-API

Gehen Sie zur Dify Plattform "Wissensbasis" Seite, klicken Sie auf die obere rechte Ecke der "Externe Wissensdatenbank-API"Entspannen Sie sich. "Externe Wissensdatenbank-API hinzufügen".

Folgen Sie den Anweisungen auf der Seite und füllen Sie die folgenden Felder der Reihe nach aus:

  • Der Name der Wissensdatenbank, der einen individuellen Namen zur Unterscheidung zwischen den verschiedenen externen Wissens-APIs ermöglicht, die mit der Dify-Plattform verbunden sind;
  • Die API-Schnittstellenadresse, also die Verbindungsadresse der externen Wissensdatenbank, kann im zweiten Schritt angepasst werden. Beispiel api-endpoint/retrieval.;
  • Der API-Schlüssel, der Verbindungsschlüssel zur externen Wissensdatenbank, kann im zweiten Schritt angepasst werden.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1
5. die Verbindung zu externen Wissensdatenbanken

Urlaub für "Wissensbasis" Seite, klicken Sie auf die Karte Wissensdatenbank hinzufügen unter dem "Verbindung zu externen Wissensdatenbanken" Springen Sie zur Seite für die Parameterkonfiguration.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Füllen Sie die folgenden Parameter aus:

  • Wissensdatenbank Name und Beschreibung
  • Externe Wissensdatenbank-APIWählen Sie die in Schritt 4 zugeordnete externe Wissensdatenbank-API
  • Externe Wissensdatenbank-IDGeben Sie die in Schritt 3 erhaltene AWS Bedrock Knowledge Base ID ein
  • Anpassen der AbrufeinstellungenTop K: Wenn ein Nutzer eine Frage stellt, wird eine externe Wissens-API angefordert, um hochrelevante Inhaltssegmente zu erhalten. Mit diesem Parameter werden Textsegmente gefiltert, die einen hohen Ähnlichkeitsgrad mit der Frage des Benutzers aufweisen. Der Standardwert ist 3. Je höher der Wert, desto mehr relevante Textsegmente werden abgerufen.

    Score Threshold: der Ähnlichkeitsschwellenwert für das Filtern von Textfragmenten, nur Textfragmente, die den eingestellten Score überschreiten, werden abgerufen, der Standardwert ist 0,5. Je höher der Wert, desto höher die Ähnlichkeit zwischen dem Text und der Frage, desto geringer die Anzahl der Texte, die abgerufen werden sollen, und desto genauer ist das Ergebnis.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Nach dem Einrichten können Sie eine Verbindung zur externen Wissensdatenbank-API herstellen.

6. das Testen von Verbindungen zu externen Wissensdatenbanken und von Abrufen

Nachdem eine Verbindung zu einer externen Wissensdatenbank hergestellt wurde, kann ein Entwickler "Rückrufaktion". Entwerfen Sie mögliche Problemschlüsselwörter in der Vorschau von Textsegmenten, die aus der AWS Bedrock Knowledge Base abgerufen werden.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Testen Sie die Verbindung und den Abruf von externen Wissensdatenbanken

Wenn Sie mit den Ergebnissen des Abrufs nicht zufrieden sind, können Sie versuchen, die Abrufparameter zu ändern oder die Sucheinstellungen der AWS Bedrock Knowledge Base selbst anzupassen.

Dify-Verbindung zu externen Wissensdatenbanken Tutorial-1

Anpassen der AWS Bedrock Knowledge Base Textverarbeitungsparameter

 

allgemeine Probleme

Was ist, wenn ich einen Fehler beim Verbinden mit der externen Wissensdatenbank-API erhalte?

Nachstehend finden Sie die Fehlercodes und die entsprechenden Lösungen:

Fehlercode falsch eine Angelegenheit regeln
1001 Ungültiges Autorisierungs-Header-Format Überprüfen Sie das Format des Autorisierungs-Headers der Anfrage
1002 Anomalien validieren Prüfen, ob der API-Schlüssel korrekt ist
2001 Wissensbasis nicht vorhanden Überprüfung der externen Wissensbasis

 

Externe Wissensdatenbank API-Spezifikation

Anfangs- oder Endpunkt (in Geschichten usw.)

POST /Abruf

Anfragekopf

Diese API wird verwendet, um eine Verbindung zu unabhängig verwalteten Wissensdatenbanken innerhalb eines Teams herzustellen. Weitere Anleitungen dazu finden Sie unter Verbindung zu externen Wissensdatenbanken herstellen.

kann in der Kopfzeile der HTTP-Anfrage gefunden werden Autorisierung Felder unter Verwendung der API-Schlüssel um Berechtigungen zu authentifizieren. Die Authentifizierungslogik wird von Ihnen in der Retrieval-API definiert, wie unten dargestellt:

Autorisierung: Überbringer {API_KEY}

Antragsteller

Die Anfrage nimmt Daten im folgenden JSON-Format entgegen:

Kausalität Pflichtfeld Typologie Beschreibungen Beispielwert
wissens_id sein string (Informatik) Wissensdatenbank Eindeutige ID AAA-BBB-CCC
Abfrage sein string (Informatik) Benutzeranfragen Was ist Dify?
abrufen_einstellen sein Freund Parameter für die Wissensbeschaffung siehe unten

abrufen_einstellen Das Attribut enthält die folgenden Schlüssel:

Kausalität Pflichtfeld Typologie Beschreibungen Beispielwert
oben_k sein Ganzzahl (math.) Maximale Anzahl von Suchergebnissen 5
score_threshold sein Fließkomma Grenzwert für die Relevanz der Ergebnisse für die Abfrage, Bereich: 0~1 0.5

Beispiel für einen Antrag

POST /Abruf HTTP/1.1
Inhalt-Typ: anwendung/json
Authorization: Bearer your-api-key
{
"knowledge_id": "your-knowledge-id",

"retrieval_setting": {
"top_k": 2, "score_threshold": {
"score_threshold": 0.5
}
}

Antwortkörper

Wenn der Vorgang erfolgreich ist, gibt der Dienst eine HTTP 200-Antwort mit den folgenden Daten im JSON-Format zurück:

Kausalität Pflichtfeld Typologie Beschreibungen Beispielwert
Datensätze sein Objektliste Liste der abgefragten Datensätze aus der Wissensdatenbank siehe unten

Datensätze ist eine Liste von Objekten mit den folgenden Schlüsseln:

Kausalität Pflichtfeld Typologie Beschreibungen Beispielwert
Inhalt sein string (Informatik) Textbausteine in der Wissensdatenbank Dify: GenAI-Anwendungsentwicklungsplattform
Ergebnis sein Fließkomma Korrelationswert zwischen Ergebnissen und Abfrage, Bereich: 0~1 0.98
Titel sein string (Informatik) Titel des Dokuments Einführung in Dify
Metadaten Verstopft JSON Metadatenattribute und ihre Werte für Dokumente in der Datenquelle Siehe Beispiel

Beispielhafte Antwort

HTTP/1.1 200
Inhalt-Typ: application/json
{
"records": [
{
"metadata": {

"description": "dify Wissensdokument"
},
"score": 0.98, "title": "knowledge.txt".
"title": "knowledge.txt", "content": "Dies ist ein externes Dokument".
"content": "Dies ist das externe Wissensdokument".
},
{
"metadata": {
"Pfad": "s3://dify/introduce.txt", {
"description": "Einführung in dify".
},

"title": "introduce.txt", "content": "GenAI Apps": "GenAI Apps".
"content": "Innovationsmotor für GenAI-Anwendungen"
}
]
}

falsch

Wenn der Vorgang fehlschlägt, gibt der Dienst die folgende Fehlermeldung (im JSON-Format) zurück:

Kausalität Pflichtfeld Typologie Beschreibungen Beispielwert
fehler_code sein Ganzzahl (math.) Fehlercode 1001
fehler_msg sein string (Informatik) API-Ausnahme Beschreibung Ungültiges Format des Autorisierungs-Headers.

fehler_code Attribut Typ:

Kodierung Beschreibungen
1001 Ungültiges Autorisierungs-Header-Format
1002 Autorisierungsfehler
2001 Wissensbasis nicht vorhanden

HTTP Status Code

  • AccessDeniedException: Fehlende Zugriffsrechte. (HTTP-Statuscode: 403)
  • InternalServerException: Interner Serverfehler. (HTTP-Statuscode: 500)
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Dify Tutorial zur Anbindung an externe Wissensdatenbanken

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)