Плагин External Knowledge Base
В NocoBase плагин базы знаний (External Knowledge Base Plugin) расширяет источники RAG-поиска для AI employees. В большинстве случаев достаточно Local knowledge base. Внешний плагин нужен только тогда, когда документы, векторные данные или логика поиска уже поддерживаются внешней системой.
Плагин внешней базы знаний не участвует в загрузке, сегментации, векторизации и удалении документов в NocoBase. Он только получает поисковые запросы во время диалогов AI employees и возвращает подходящие фрагменты документов.
- Обзор базы знаний - границы Local, Readonly и External
- Plugin - жизненный цикл серверного плагина и
this.app.pm - i18n - переводы, если плагин предоставляет форму настройки
Сценарии использования
Внешняя база знаний подходит, если:
- уже есть независимый RAG-сервис, например внутренняя база знаний или сторонний API поиска
- нужно подключить векторную базу данных, которую NocoBase не поддерживает из коробки
- нужно обработать бизнес-правила до или после поиска, например фильтрацию прав, изоляцию tenant, reranking или дедупликацию
- жизненный цикл документов полностью поддерживается внешней системой, а NocoBase только читает результаты поиска во время диалогов
Если нужно только загружать файлы в NocoBase, автоматически разбивать документы и строить векторные индексы, по умолч анию используйте Local knowledge base.
Точка расширения
Внешние базы знаний регистрируются через точку расширения vectorStoreProvider, предоставляемую @nocobase/plugin-ai. На стороне сервера нужно реализовать два объекта:
providerName — уникальный идентификатор Provider. Provider, выбранный или введенный при создании External knowledge base, должен совпадать с providerName, зарегистрированным на сервере.
Регистрация Provider
В src/server/plugin.ts получите экземпляр AI-плагина и зарегистрируйте VectorStoreProvider:
Этап load() подходит для регистрации точек расширения. Подключение к внешней векторной базе и реальные запросы поиска лучше разместить в VectorStoreService.
Плагины внешней базы знаний всегда зависят от @nocobase/plugin-ai-knowledge-base. Рекомендуется проверить эту зависимость в beforeEnable():
Так пользователь получит понятное сообщение, если обязательный плагин еще не включен.
Реализация Provider
Provider предоставляет providerName и создает service на основе конфигурации базы знаний.
vectorStoreProps поступает из формы настройки внешней базы знаний, например API endpoint, API key, модель Embedding или идентификатор tenant. NocoBase передает эти значения Provider во время поиска.
Реализация Service
Service содержит основную логику поиска. Для External knowledge base обычно достаточно преобразовать внешние результаты в формат DocumentSegmentedWithScore[], который нужен NocoBase.
Ключевые моменты:
query- вопрос, по которому AI employee выполняет поискtopK- ожидаемое количество возвращаемых фрагментовscore- порог score в настройках базы знаний AI employeevectorStoreProps- параметры, заполненные в форме настройки внешней базы
Интерфейс VectorStoreService содержит getVectorStore(). External knowledge base отвечает только за поиск и не передает NocoBase управление нижележащим vector store, поэтому пример сразу выбрасывает ошибку.
Возврат результатов поиска
search() должен возвращать DocumentSegmentedWithScore[]:
Где:
content— содержимое фрагмента документа, передаваемое моделиmetadata— источник, заголовок докумен та, URL, сведения о правах и другие метаданныеscore— оценка поиска; рекомендуется нормализовать ее так, чтобы большее значение означало большую релевантностьid— идентификатор внешнего фрагмента, полезный для диагностики и дедупликации
Если внешний сервис использует другое значение score, например меньшая дистанция означает большую релевантность, преобразуйте его перед возвратом в NocoBase.
Настройка параметров внешней базы
Сервер может напрямую читать vectorStoreProps, но обычно пользователь заполняет эти параметры при создании External knowledge base. Поэтому форму настройки нужно зарегистрировать во frontend-входе плагина. После регистрации NocoBase покажет соответствующие поля в форме создания базы и передаст значения серверу во время поиска.
Frontend-форма не обязательна. Если внешней базе не нужны пользовательские параметры, vectorStorePropForm можно не регистрировать.
Для про стых случаев по умолчанию используйте defaultVectorStorePropForm(). Функция принимает список полей, создает элемент формы для каждого поля и использует input с поддержкой выбора переменных NocoBase:
Зарегистрируйте форму во frontend-входе плагина:
name должен совпадать с серверным providerName. key используется для сохранения параметра и передачи на сервер; сервер читает значение из vectorStoreProps по тому же key.
Пользовательская форма
Кроме defaultVectorStorePropForm(), можно передать собственный React-компонент в vectorStorePropForm:
Пример структуры
Плагин внешней базы знаний можно организовать так:
Где:
plugin.tsрегистрируетVectorStoreProviderprovider.tsобъявляетproviderNameи создает serviceservice.tsреализуетsearch()и преобразует внешние результаты вDocumentSegmentedWithScore[]client/index.tsxрегистрирует форму настройки внешней базы
После этого плагин внешней базы знаний может вызываться AI employees. Когда пользователь создаст External knowledge base и выберет соответствующий Provider, диалоги смогут получать фрагменты через ваш search().
Связанные ссылки
- Обзор базы знаний - границы Local, Readonly и External
- Plugin - жизненный цикл серверного плагина и
this.app.pm - i18n - переводы frontend и сервера плагина
- Обзор клиентской разработки - клиентский вход, компоненты и возможности context

