External Knowledge Base Plugin
In NocoBase erweitert ein External Knowledge Base Plugin die RAG-Abrufquellen für AI employees. In den meisten Fällen reicht eine Local knowledge base aus. Ein externes Wissensdatenbank-Plugin wird nur benötigt, wenn Dokumente, Vektordaten oder die Abruflogik bereits in einem externen System verwaltet werden.
Ein externes Wissensdatenbank-Plugin nimmt nicht am Hochladen, Segmentieren, Vektorisieren oder Löschen von Dokumenten in NocoBase teil. Es empfängt nur Abrufanfragen während Gesprächen von AI employees und gibt passende Dokumentsegmente zurück.
- Überblick über Wissensdatenbanken - Grenzen von Local, Readonly und External verstehen
- Plugin - Lebenszyklus serverseitiger Plugins und
this.app.pm - i18n - Übersetzungen vorbereiten, wenn das Plugin ein Konfigurationsformular bereitstellt
Einsatzfälle
Externe Wissensdatenbanken eignen sich, wenn:
- bereits ein unabhängiger RAG-Dienst existiert, etwa ein interner Wissensdienst oder eine externe Retrieval-API
- eine Vektordatenbank angebunden werden muss, die NocoBase nicht direkt unterstützt
- Geschäftsregeln vor oder nach dem Abruf verarbeitet werden müssen, etwa Berechtigungsprüfungen, Tenant-Isolation, Reranking oder Deduplizierung
- der Dokumentlebenszyklus vollständig von einem externen System verwaltet wird und NocoBase nur Abrufresultate liest
Wenn Dateien nur in NocoBase hochgeladen, automatisch segmentiert und vektorisiert werden sollen, verwenden Sie standardmäßig eine Local knowledge base.
Erweiterungspunkt
Externe Wissensdatenbanken werden über den von @nocobase/plugin-ai bereitgestellten Erweiterungspunkt vectorStoreProvider registriert. Serverseitig werden zwei Objekte implementiert:
providerName ist die eindeutige Kennung des Providers. Der beim Erstellen einer External knowledge base ausgewählte oder eingegebene Provider muss mit dem serverseitig registrierten providerName übereinstimmen.
Provider registrieren
In src/server/plugin.ts wird die AI-Plugin-Instanz geholt und der VectorStoreProvider registriert:
Die Phase load() eignet sich zum Registrieren von Erweiterungspunkten. Die Verbindung zur externen Vektordatenbank und die eigentlichen Abfragen gehören in VectorStoreService.
Externe Wissensdatenbank-Plugins hängen immer von @nocobase/plugin-ai-knowledge-base ab. Es wird empfohlen, diese Abhängigkeit in beforeEnable() zu prüfen:
So erhält der Benutzer eine klare Meldung, wenn das benötigte Plugin nicht aktiviert ist.
Provider implementieren
Der Provider stellt providerName bereit und erstellt anhand der Konfiguration einen Service.
vectorStoreProps stammt aus dem Konfigurationsformular, zum Beispiel API endpoint, API key, Embedding-Modell oder Tenant-Kennung. NocoBase übergibt diese Werte beim Abruf an den Provider.
Service implementieren
Der Service enthält die zentrale Abruflogik. Bei einer External knowledge base reicht es normalerweise, externe Abrufresultate in das von NocoBase benötigte Format DocumentSegmentedWithScore[] umzuwandeln.
Wichtige Punkte:
query- Die Frage, gegen die der AI employee abrufen solltopK- Die erwartete Anzahl zurückgegebener Segmentescore- Der Score-Schwellenwert aus den Knowledge-Base-EinstellungenvectorStoreProps- Parameter aus dem Konfigurationsformular
Das Interface VectorStoreService enthält getVectorStore(). Eine External knowledge base ist nur für den Abruf zuständig und lässt NocoBase den darunterliegenden Vector Store nicht verwalten; deshalb wirft das Beispiel direkt einen Fehler.
Abrufresultate zurückgeben
search() muss DocumentSegmentedWithScore[] zurückgeben:
Dabei gilt:
contentist der Dokumentabschnitt, der an das Modell übergeben wirdmetadataspeichert Quelle, Dokumenttitel, URL, Berechtigungsinformationen und weitere Metadatenscoreist der Relevanzwert; größere Werte sollten höhere Relevanz bedeutenididentifiziert externe Dokumentsegmente und hilft bei Diagnose und Deduplizierung
Wenn der externe Dienst Scores anders interpretiert, etwa kleinere Distanz bedeutet höhere Relevanz, konvertieren Sie den Wert vor der Rückgabe an NocoBase.
Parameter konfigurieren
Der Server kann vectorStoreProps direkt lesen, diese Parameter müssen aber meist beim Erstellen einer External knowledge base eingegeben werden. Daher wird das Konfigurationsformular im Frontend-Einstieg des Plugins registriert. Danach zeigt NocoBase die Felder im Erstellungsformular an und übergibt die Werte beim Abruf an den Server.
Ein Frontend-Formular ist optional. Wenn keine benutzerdefinierten Parameter benötigt werden, muss vectorStorePropForm nicht registriert werden.
F ür einfache Fälle verwenden Sie standardmäßig defaultVectorStorePropForm(). Die Funktion erhält eine Feldliste, erzeugt pro Feld ein Formularelement und verwendet ein Eingabefeld, das NocoBase-Variablen auswählen kann:
Registrieren Sie das Formular im Frontend-Einstieg des Plugins:
name muss dem serverseitigen providerName entsprechen. key ist der Feldname, unter dem der Wert gespeichert und an den Server übergeben wird.
Benutzerdefiniertes Formular
Neben defaultVectorStorePropForm() kann auch eine eigene React-Komponente an vectorStorePropForm übergeben werden:
Beispielstruktur
Ein externes Wissensdatenbank-Plugin kann so organisiert werden:
Dabei:
plugin.tsregistriertVectorStoreProviderprovider.tsdeklariertproviderNameund erstellt den Serviceservice.tsimplementiertsearch()und konvertiert externe Ergebnisse inDocumentSegmentedWithScore[]client/index.tsxregistriert das Konfigurationsformular
Damit kann das externe Wissensdatenbank-Plugin von AI employees aufgerufen werden. Nach dem Erstellen einer External knowledge base und der Auswahl des Providers können Gespräche Segmente über search() abrufen.
Verwandte Links
- Überblick über Wissensdatenbanken - Grenzen von Local, Readonly und External
- Plugin - Serverseitiger Plugin-Lebenszyklus und
this.app.pm - i18n - Frontend- und serverseitige Übersetzungen
- Überblick Client-Entwicklung - Client-Einstieg, Komponenten und Context-Funktionen

