Plugin External Knowledge Base
No NocoBase, um plugin de base de conhecimento (External Knowledge Base Plugin) amplia as fontes de recuperação RAG usadas por AI employees. Na maioria dos casos, uma base Local é suficiente. Você só precisa de um plugin de base externa quando documentos, dados vetoriais ou a lógica de recuperação já são mantidos por um sistema externo.
Um plugin de base externa não participa do upload, segmentação, vetorização ou exclusão de documentos no NocoBase. Ele apenas recebe solicitações de recuperação durante conversas de AI employees e retorna segmentos de documentos.
- Visão geral da base de conhecimento - Entenda os limites de Local, Readonly e External
- Plugin - Entenda o ciclo de vida do plugin do servidor e
this.app.pm - i18n - Prepare traduções se o plugin fornecer formulário de configuração
Casos de uso
Bases de conhecimento externas são adequadas quando:
- Já existe um serviço RAG independente, como um serviço interno de conhecimento ou uma API de recuperação de terceiros
- É necessário conectar uma base vetorial que o NocoBase ainda não suporta nativamente
- É necessário aplicar regras de negócio antes ou depois da recuperação, como filtro de permissões, isolamento de tenant, reranking ou deduplicação
- O ciclo de vida dos documentos é totalmente mantido por um sistema externo, e o NocoBase apenas lê os resultados durante conversas
Se você só quer fazer upload de arquivos no NocoBase, dividir documentos automaticamente e gerar índices vetoriais, use uma base Local por padrão.
Ponto de extensão
Bases externas são registradas pelo ponto de extensão vectorStoreProvider fornecido por @nocobase/plugin-ai. No servidor, implemente dois objetos:
providerName é o identificador único do provedor. O Provider selecionado ou informado ao criar uma base External deve ser igual ao providerName registrado no servidor.
Registrar o Provider
Em src/server/plugin.ts, obtenha a instância do plugin AI e registre seu VectorStoreProvider:
A fase load() é adequada para registrar pontos de extensão. Não é necessário conectar a base vetorial externa aqui, nem executar solicitações de recuperação. Coloque a conexão e a consulta reais em VectorStoreService.
Plugins de base externa sempre dependem de @nocobase/plugin-ai-knowledge-base. Recomenda-se verificar a dependência em beforeEnable():
Assim, se o plugin dependente não estiver habilitado, o usuário verá uma mensagem clara.
Implementar o Provider
O Provider só precisa fornecer providerName e criar um service com base na configuração da base de conhecimento.
vectorStoreProps vem do formulário de configuração da base externa, como endpoint de API, API key, modelo de Embedding ou identificador de tenant. O NocoBase passa esses valores ao Provider durante a recuperação.
Implementar o Service
O Service contém a lógica principal de recuperação. Para uma base External, normalmente basta converter os resultados externos para o formato DocumentSegmentedWithScore[] exigido pelo NocoBase.
Pontos principais:
query- A pergunta que o AI employee precisa recuperartopK- O número esperado de segmentos retornadosscore- O limiar de pontuação configurado nas definições da base do AI employeevectorStoreProps- Parâmetros preenchidos no formulário da base externa
A interface VectorStoreService inclui getVectorStore(). Uma base External só é responsável pela recuperação e não permite que o NocoBase gerencie o vector store subjacente, por isso o exemplo lança um erro diretamente.
Retornar resultados de recuperação
search() deve retornar DocumentSegmentedWithScore[]:
Onde:
contenté o segmento de documento passado ao modelometadataarmazena origem, título, URL, permissões e outros metadadosscoreé a pontuação de recuperação. Recomenda-se normalizar para que valores maiores indiquem maior relevânciaididentifica o segmento externo e ajuda na depuração e deduplicação
Se o serviço externo usa outro significado de pontuação, como distância menor significando maior relevância, converta para uma pontuação consistente antes de retornar ao NocoBase.
Configurar parâmetros da base externa
O servidor pode ler vectorStoreProps diretamente, mas esses parâmetros normalmente precisam ser preenchidos pelo usuário ao criar uma base External. Por isso, o formulário de configuração deve ser registrado na entrada frontend do plugin. Depois disso, o NocoBase mostra os campos correspondentes no formulário de criação e passa os valores ao servidor durante a recuperação.
A configuração de formulário frontend não é obrigatória. Se sua base externa não precisa de parâmetros personalizados, não é necessário registrar vectorStorePropForm.
Para casos simples, use defaultVectorStorePropForm() por padrão. Ele recebe uma lista de campos, cria um item de formulário para cada campo e usa um input que permite selecionar variáveis do NocoBase:
Registre o formulário na entrada frontend do plugin:
name deve coincidir com o providerName do servidor. key é o nome usado ao salvar o parâmetro e passá-lo ao servidor; o servidor pode ler o valor em vectorStoreProps usando a mesma key.
Formulário personalizado
Além de defaultVectorStorePropForm(), você também pode passar um componente React personalizado para vectorStorePropForm:
Estrutura de exemplo
Um plugin de base externa pode ser organizado assim:
Onde:
plugin.tsregistraVectorStoreProviderprovider.tsdeclaraproviderNamee cria o serviceservice.tsimplementasearch()e converte resultados externos paraDocumentSegmentedWithScore[]client/index.tsxregistra o formulário de configuração da base externa
Com isso, o plugin de base externa já pode ser chamado por AI employees. Depois que o usuário criar uma base External e selecionar o Provider correspondente, as conversas podem recuperar segmentos por meio do seu search().
Links relacionados
- Visão geral da base de conhecimento - Limites de Local, Readonly e External
- Plugin - Ciclo de vida do plugin do servidor e
this.app.pm - i18n - Traduções frontend e servidor do plugin
- Visão geral do desenvolvimento client - Entrada client, componentes e capacidades de contexto

