Plugin External Knowledge Base
Dans NocoBase, un plugin de base de connaissances (External Knowledge Base Plugin) permet d'étendre les sources de récupération RAG utilisées par les AI employees. Dans la plupart des cas, une base Local suffit. Un plugin de base externe n'est nécessaire que lorsque les documents, les données vectorielles ou la logique de récupération sont déjà maintenus par un système externe.
Un plugin de base externe ne participe pas au téléversement, à la segmentation, à la vectorisation ni à la suppression des documents dans NocoBase. Il reçoit uniquement les requêtes de récupération pendant les conversations des AI employees et retourne les segments de documents correspondants.
- Vue d'ensemble de la base de connaissances - Comprendre les limites de Local, Readonly et External
- Plugin - Comprendre le cycle de vie du plugin serveur et
this.app.pm - i18n - Préparer les traductions si le plugin fournit un formulaire de configuration
Cas d'utilisation
Les bases de connaissances externes conviennent lorsque :
- Un service RAG indépendant existe déjà, par exemple un service interne de base de connaissances ou une API de récupération tierce
- Vous devez connecter une base vectorielle que NocoBase ne prend pas encore en charge nativement
- Vous devez appliquer des règles métier avant ou après la récupération, comme le filtrage des permissions, l'isolation des tenants, le reranking ou la déduplication
- Le cycle de vie des documents est entièrement géré par un système externe, et NocoBase ne fait que lire les résultats pendant les conversations
Si vous voulez seulement téléverser des fichiers dans NocoBase, découper les documents automatiquement et générer des index vectoriels, utilisez une base Local par défaut.
Point d'extension
Les bases externes sont enregistrées via le point d'extension vectorStoreProvider fourni par @nocobase/plugin-ai. Côté serveur, deux objets sont nécessaires :
providerName est l'identifiant unique du Provider. Le Provider sélectionné ou saisi lors de la création d'une base External doit correspondre au providerName enregistré côté serveur.
Enregistrer le Provider
Dans src/server/plugin.ts, récupérez l'instance du plugin AI et enregistrez votre VectorStoreProvider :
La phase load() convient à l'enregistrement des points d'extension. Il n'est pas nécessaire d'y connecter la base vectorielle externe ni d'y exécuter des requêtes de récupération. Placez la connexion et la requête réelles dans VectorStoreService.
Les plugins de base externe dépendent toujours de @nocobase/plugin-ai-knowledge-base. Il est recommandé de vérifier cette dépendance dans beforeEnable() :
Ainsi, si le plugin requis n'est pas activé, l'utilisateur obtient un message clair.
Implémenter le Provider
Le Provider fournit providerName et crée un service à partir de la configuration de la base.
vectorStoreProps provient du formulaire de configuration de la base externe, par exemple endpoint API, API key, modèle Embedding ou identifiant de tenant. NocoBase transmet ces valeurs au Provider pendant la récupération.
Implémenter le Service
Le Service contient la logique de récupération. Pour une base External, il suffit généralement de convertir les résultats externes au format DocumentSegmentedWithScore[] requis par NocoBase.
Points clés :
query- La question utilisée pour la récupérationtopK- Le nombre attendu de segments retournésscore- Le seuil de score configuré dans les paramètres de base de connaissances de l'AI employeevectorStoreProps- Les paramètres renseignés dans le formulaire de configuration de la base externe
L'interface VectorStoreService contient getVectorStore(). Une base External ne fait que la récupération et ne laisse pas NocoBase gérer le vector store sous-jacent, donc l'exemple lève directement une erreur.
Retourner les résultats
search() doit retourner DocumentSegmentedWithScore[] :
Où :
contentest le segment transmis au modèlemetadatastocke la source, le titre, l'URL, les informations de permission et d'autres métadonnéesscoreest le score de récupération. Il est recommandé de le normaliser pour qu'une valeur plus grande signifie une meilleure pertinenceididentifie le segment externe et facilite le diagnostic et la déduplication
Si le service externe utilise une autre signification du score, par exemple une distance plus petite signifie une meilleure pertinence, convertissez-la avant de la retourner à NocoBase.
Configurer les paramètres
Le serveur peut lire directement vectorStoreProps, mais ces paramètres doivent généralement être renseignés par l'utilisateur lors de la création d'une base External. Le formulaire de configuration doit donc être enregistré dans l'entrée frontend du plugin. Une fois enregistré, NocoBase affiche les champs correspondants dans le formulaire de création et transmet les valeurs au serveur pendant la récupération.
Le formulaire frontend est facultatif. Si votre base externe n'a pas besoin de paramètres personnalisés, vous n'avez pas besoin d'enregistrer vectorStorePropForm.
Pour les cas simples, utilisez defaultVectorStorePropForm() par défaut. Il reçoit une liste de champs, crée un item de formulaire pour chaque champ et utilise une saisie qui prend en charge la sélection de variables NocoBase :
Enregistrez le formulaire dans l'entrée frontend du plugin :
name doit correspondre au providerName côté serveur. key est le nom utilisé pour enregistrer le paramètre et le transmettre au serveur ; le serveur peut lire la valeur dans vectorStoreProps avec la même key.
Formulaire personnalisé
En plus de defaultVectorStorePropForm(), vous pouvez passer un composant React personnalisé à vectorStorePropForm :
Structure d'exemple
Un plugin de base externe peut être organisé ainsi :
Où :
plugin.tsenregistreVectorStoreProviderprovider.tsdéclareproviderNameet crée le serviceservice.tsimplémentesearch()et convertit les résultats externes enDocumentSegmentedWithScore[]client/index.tsxenregistre le formulaire de configuration
À ce stade, le plugin peut être appelé par les AI employees. Après la création d'une base External et la sélection du Provider correspondant, les conversations peuvent récupérer des segments via votre search().
Liens associés
- Vue d'ensemble de la base de connaissances - Limites de Local, Readonly et External
- Plugin - Cycle de vie du plugin serveur et
this.app.pm - i18n - Traductions frontend et serveur du plugin
- Vue d'ensemble du développement client - Entrée client, composants et capacités de contexte

