Plugin External Knowledge Base
En NocoBase, un plugin de base de conocimiento (External Knowledge Base Plugin) permite ampliar las fuentes de recuperación RAG usadas por los AI employees. En la mayoría de los casos basta con una base de conocimiento Local. Solo necesitas un plugin de base de conocimiento externa cuando los documentos, los vectores o la lógica de recuperación ya se mantienen fuera de NocoBase.
Un plugin de base de conocimiento externa no participa en la carga, segmentación, vectorización ni eliminación de documentos en NocoBase. Solo recibe solicitudes de recuperación durante las conversaciones de los AI employees y devuelve fragmentos de documentos.
- Visión general de la base de conocimiento - Límites de Local, Readonly y External
- Plugin - Ciclo de vida del plugin de servidor y
this.app.pm - i18n - Traducciones necesarias si el plugin proporciona un formulario de configuración
Casos de uso
Las bases de conocimiento externas son adecuadas cuando:
- Ya existe un servicio RAG independiente, como un servicio interno de conocimiento o una API de recuperación de terceros
- Necesitas conectar una base vectorial que NocoBase no soporta de forma integrada
- Necesitas aplicar reglas de negocio antes o después de la recuperación, como filtrado de permisos, aislamiento por tenant, reranking o deduplicación
- El ciclo de vida de los documentos lo mantiene por completo un sistema externo, y NocoBase solo lee los resultados durante las conversaciones
Si solo quieres cargar archivos en NocoBase, dividir documentos automáticamente y generar índices vectoriales, usa una base de conocimiento Local por defecto.
Punto de extensión
Las bases de conocimiento externas se registran mediante el punto de extensión vectorStoreProvider proporcionado por @nocobase/plugin-ai. En el servidor necesitas implementar dos objetos:
providerName es el identificador único del proveedor. El Provider seleccionado o introducido al crear una base External debe coincidir con el providerName registrado en el servidor.
Registrar el Provider
En src/server/plugin.ts, obtén la instancia del plugin AI y registra tu VectorStoreProvider:
La fase load() es adecuada para registrar puntos de extensión. No necesitas conectar la base vectorial externa aquí, ni ejecutar solicitudes de recuperación. La conexión y la consulta reales deben estar en VectorStoreService.
Los plugins de base de conocimiento externa siempre dependen de @nocobase/plugin-ai-knowledge-base. Se recomienda comprobar esta dependencia en beforeEnable():
Así, si el plugin dependiente no está habilitado, el usuario recibirá un mensaje claro.
Implementar el Provider
El Provider solo necesita proporcionar providerName y crear un service a partir de la configuración de la base de conocimiento.
vectorStoreProps proviene del formulario de configuración de la base externa, por ejemplo endpoint de API, API key, modelo de Embedding o identificador de tenant. NocoBase pasa estos valores al Provider al ejecutar la recuperación.
Implementar el Service
El Service contiene la lógica de recuperación. Para una base External, normalmente basta con convertir los resultados externos al formato DocumentSegmentedWithScore[] requerido por NocoBase.
Puntos clave:
query- La pregunta que el AI employee necesita recuperartopK- Número esperado de fragmentos devueltosscore- Umbral de puntuación configurado en la base de conocimiento del AI employeevectorStoreProps- Parámetros rellenados en el formulario de configuración de la base externa
La interfaz VectorStoreService incluye getVectorStore(). Una base External solo se encarga de recuperar datos y no permite que NocoBase gestione el vector store subyacente, por eso el ejemplo lanza un error directamente.
Devolver resultados de recuperación
search() debe devolver DocumentSegmentedWithScore[]:
Donde:
contentes el fragmento que se pasará al modelometadataguarda origen, título, URL, información de permisos y otros metadatosscorees la puntuación de recuperación. Se recomienda normalizarla para que un valor mayor signifique mayor relevanciaididentifica el fragmento externo y ayuda a depurar o deduplicar
Si el servicio externo usa otro significado de puntuación, por ejemplo una distancia menor significa mayor relevancia, conviértelo antes de devolverlo a NocoBase.
Configurar parámetros de la base externa
El servidor puede leer vectorStoreProps directamente, pero estos parámetros normalmente deben rellenarse al crear una base External. Por eso el formulario de configuración debe registrarse en la entrada frontend del plugin. Tras registrarlo, NocoBase mostrará los campos en el formulario de creación y pasará los valores al servidor durante la recuperación.
La configuración de formulario frontend no es obligatoria. Si tu base externa no necesita parámetros personalizados, no tienes que registrar vectorStorePropForm.
Para casos simples, usa defaultVectorStorePropForm() por defecto. Recibe una lista de campos, genera un item de formulario por cada campo y usa un input que permite seleccionar variables de NocoBase:
Registra el formulario en la entrada frontend del plugin:
name debe coincidir con el providerName del servidor. key es el nombre del campo usado al guardar el parámetro y pasarlo al servidor; el servidor puede leerlo desde vectorStoreProps con el mismo key.
Formulario personalizado
Además de defaultVectorStorePropForm(), puedes pasar un componente React personalizado a vectorStorePropForm:
Estructura de ejemplo
Un plugin de base de conocimiento externa puede organizarse así:
Donde:
plugin.tsregistraVectorStoreProviderprovider.tsdeclaraproviderNamey crea el serviceservice.tsimplementasearch()y convierte los resultados externos aDocumentSegmentedWithScore[]client/index.tsxregistra el formulario de configuración
Con esto, el plugin de base externa ya puede ser llamado por los AI employees. Cuando el usuario cree una base External y seleccione el Provider correspondiente, las conversaciones podrán recuperar fragmentos mediante tu search().
Enlaces relacionados
- Visión general de la base de conocimiento - Límites de Local, Readonly y External
- Plugin - Ciclo de vida del plugin de servidor y
this.app.pm - i18n - Traducciones frontend y servidor del plugin
- Visión general del desarrollo del cliente - Entrada cliente, componentes y capacidades de contexto

