Files
FastGPT/docSite/content/zh-cn/docs/guide/knowledge_base/third_dataset.md
2025-07-11 17:06:33 +08:00

6.8 KiB
Raw Permalink Blame History

title, description, icon, draft, toc, weight
title description icon draft toc weight
第三方知识库开发 本节详细介绍如何在FastGPT上自己接入第三方知识库 language false true 410

目前,互联网上拥有各种各样的文档库,例如飞书,语雀等等。 FastGPT 的不同用户可能使用的文档库不同,目前 FastGPT 内置了飞书、语雀文档库,如果需要接入其他文档库,可以参考本节内容。

统一的接口规范

为了实现对不同文档库的统一接入FastGPT 对第三方文档库进行了接口的规范,共包含 4 个接口内容,可以查看 API 文件库接口

所有内置的文档库,都是基于标准的 API 文件库进行扩展。可以参考FastGPT/packages/service/core/dataset/apiDataset/yuqueDataset/api.ts中的代码,进行其他文档库的扩展。一共需要完成 4 个接口开发:

  1. 获取文件列表
  2. 获取文件内容/文件链接
  3. 获取原文预览地址
  4. 获取文件详情信息

开始一个第三方文件库

为了方便讲解,这里以添加飞书知识库( FeishuKnowledgeDataset )为例。

1. 添加第三方文档库参数

首先,要进入 FastGPT 项目路径下的FastGPT\packages\global\core\dataset\apiDataset.d.ts文件,添加第三方文档库 Server 类型。知识库类型的字段由自己设计,主要是自己需要那些内容。例如,语雀知识库中,需要提供userIdtoken两个字段作为鉴权信息。

export type YuqueServer = {
  userId: string;
  token?: string;
  basePath?: string;
};

{{% alert icon="🤖 " context="success" %}} 如果文档库有根目录选择的功能,需要设置添加一个字段basePath点击查看根目录功能 {{% /alert %}}

2. 创建 Hook 文件

每个第三方文档库都会采用 Hook 的方式来实现一套 API 接口的维护Hook 里包含 4 个函数需要完成。

  • FastGPT\packages\service\core\dataset\apiDataset\下创建一个文档库的文件夹,然后在文件夹下创建一个api.ts文件
  • api.ts文件中,需要完成 5 个函数的定义,分别是:
    • listFiles:获取文件列表
    • getFileContent:获取文件内容/文件链接
    • getFileDetail:获取文件详情信息
    • getFilePreviewUrl:获取原文预览地址

3. 添加知识库类型

FastGPT\packages\global\core\dataset\type.d.ts文件中,导入自己创建的知识库类型。

4. 添加知识库数据获取

FastGPT\packages\global\core\dataset\apiDataset\utils.ts文件中,添加如下内容。

5. 添加知识库调用方法

FastGPT\packages\service\core\dataset\apiDataset\index.ts文件下,添加如下内容。

添加前端

FastGPT\packages\web\i18n\zh-CN\dataset.json,FastGPT\packages\web\i18n\en\dataset.jsonFastGPT\packages\web\i18n\zh-Hant\dataset.json中添加自己的 I18n 翻译,以中文翻译为例,大体需要如下几个内容:

FastGPT\packages\service\support\user/audit\util.ts文件下添加如下内容,以支持获取 I18n 翻译。

{{% alert icon="🤖 " context="success" %}} 此次 I18n 翻译内容存放在FastGPT\packages\web\i18n\zh-Hant\account_team.json,FastGPT\packages\web\i18n\zh-CN\account_team.jsonFastGPT\packages\web\i18n\en\account_team.json,字段格式为dataset.XXX_dataset,以飞书知识库为例,字段值为dataset.feishu_knowledge_dataset {{% /alert %}}

FastGPT\packages\web\components\common\Icon\icons\core\dataset\添加自己的知识库图标,一共是两个,分为OutlineColor,分别是有颜色的和无色的,具体看如下图片。

FastGPT\packages\web\components\common\Icon\constants.ts文件中,添加自己的图标。 import 是图标的存放路径。

FastGPT\packages\global\core\dataset\constants.ts中,添加自己的知识库类型,分别要在DatasetTypeEnumApiDatasetTypeMap中添加内容。

{{% alert icon="🤖 " context="success" %}} courseUrl字段是相应的文档说明,如果有的话,可以添加。 文档添加在FastGPT\docSite\content\zh-cn\docs\guide\knowledge_base\ label内容是自己之前通过 i18n 翻译添加的知识库名称的。 iconavatar是自己之前添加的两个图标 {{% /alert %}}

FastGPT\projects\app\src\pages\dataset\list\index.tsx文件下,添加如下内容。这个文件负责的是知识库列表页的新建按钮点击后的菜单,只有在该文件添加知识库后,才能创建知识库。

FastGPT\projects\app\src\pageComponents\dataset\detail\Info\index.tsx文件下添加如下内容。此处配置对应ui界面的如下。

添加配置表单

FastGPT\projects\app\src\pageComponents\dataset\ApiDatasetForm.tsx文件下,添加自己如下内容。这个文件负责的是创建知识库页的字段填写。

代码中添加的两个组件是对根目录选择的渲染,对应设计的 api 的 getfiledetail 方法,如果你的知识库不支持,你可以不引用。

{renderBaseUrlSelector()} //这是对`Base URL`字段的渲染
{renderDirectoryModal()} //点击`选择`后出现的`选择根目录`窗口,见图

如果知识库需要支持根目录,还需要在ApiDatasetForm文件中添加如下内容。

1. 解析知识库类型

需要从apiDatasetServer解析出自己的知识库类型,如图:

2. 添加选择根目录逻辑和parentId赋值逻辑

需要添加根目录选择逻辑,来确保用户已经填写了调动的 api 方法所必需的字段,比如 Token 之类的。

3. 添加字段检查和赋值逻辑

需要在调用方法前再次检测是否以及获取完所有必须字段,在选择根目录后,将根目录值赋值给对应的字段。

提示

建议知识库创建完成后,完整测试一遍知识库的功能,以确定有无漏洞,如果你的知识库添加有问题,且无法在文档找到对应的文件解决,一定是杂项没有添加完全,建议重复一次全局搜索YuqueServeryuqueServer,检查是否有地方没有加上自己的类型。