FastGPT icon indicating copy to clipboard operation
FastGPT copied to clipboard

高级编排 动态知识库配置检索

Open lifei1102 opened this issue 1 year ago • 4 comments

例行检查

  • [x] 我已确认目前没有类似 issue
  • [x] 我已完整查看过项目 README,以及项目文档
  • [x] 我使用了自己的 key,并确认我的 key 是可正常使用的
  • [x] 我理解并愿意跟进此 issue,协助测试和提供反馈
  • [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • [x] 私有部署版本, 具体版本号: 4.8

问题描述, 日志截图

我想实现根据用户输入来自动去不同知识库进行检索(不是分支判断类型,不确定有可能会有多少个备选知识库)

新版本的知识库搜索组件中 选择知识库变量 支持 变量引用,我将知识库名称作为变量引入进去并不能生效

查看选择固定知识库时的配置,发现选择知识库的value配置如下:

[
  {
    "datasetId": "{{datasetId}}",
    "vectorModel": {
      "model": "text-embedding-v1",
      "name": "QWen-Embedding",
      "charsPointsPrice": 0,
      "defaultToken": 700,
      "maxToken": 3000,
      "weight": 100
    }
  }
]

由此我编排了一版用户输入知识库的id,应用去对应的知识库进行检索(知识库id 用户可在知识库详情 -> 配置中找到),可以正常work

配置方式如下:

image

复现步骤

预期结果

我希望可以通过知识库名称来确定使用哪个知识库进行检索, 知识库id 对于普通用户来讲还是有点不好理解

相关截图

lifei1102 avatar May 23 '24 02:05 lifei1102

把知识库的名称和ID放到laf数据库里,用户输入指定关键词执行http请求获取知识库名称清单,然后用户输入知识库名单执行http请求把全局变量根据查询结果输入为知识库id。

lijiajun1997 avatar May 23 '24 06:05 lijiajun1997

这样可以解决,但是每次新增知识库后,都要去laf知识库里面更新,我的场景是用来写投资报告,整体写作逻辑是固定的,但是用到的知识库每一个项目都是一个单独的知识库,实际用起来是最终使用人员自己建立一个a项目的知识库,然后直接去应用对话选择a知识库引用,没有开发或其他人员参与,所以每次建立知识库后再去更新laf数据库不太行

有没有可能在全局变量那里新增一种变量类型,就是知识库选择,就像在知识库组件中选择知识库一样

用户对话界面直接可以在所有知识库中进行选择,或者在用户预先设置的一批或一个文件夹下的知识库中选择,如果考虑数据安全问题

这样可以不借助第三方程序直接实现动态知识库的支持,不然这个知识库组件 选择知识库 变量引用的功能感觉大部分人用不起来呀

或者FastGPT的OpenAPI能不能暴露出来一个接口,可以根据知识库名称拿到知识库id的也是一种解决方案

lifei1102 avatar May 23 '24 06:05 lifei1102

请问以上以下的配置哪里查到的呢?另外,这个方法可以支持动态选择多个知识库吗? [ { "datasetId": "{{datasetId}}", "vectorModel": { "model": "text-embedding-v1", "name": "QWen-Embedding", "charsPointsPrice": 0, "defaultToken": 700, "maxToken": 3000, "weight": 100 } } ]

ppkitty avatar May 28 '24 09:05 ppkitty

请问以上以下的配置哪里查到的呢?另外,这个方法可以支持动态选择多个知识库吗?

[

{

"datasetId": "{{datasetId}}",

"vectorModel": {

  "model": "text-embedding-v1",

  "name": "QWen-Embedding",

  "charsPointsPrice": 0,

  "defaultToken": 700,

  "maxToken": 3000,

  "weight": 100

}

}

]

系统运行时浏览器开控制台,进编排界面查看network中的http请求内容就可以看到

支持多选,这个json是一个数组呀,我的这个案例数组中只有一项元素,你最终数组中放多个元素就相当于选了多个知识库

lifei1102 avatar May 28 '24 09:05 lifei1102

只需要 datasetId 即可,vectorModel在最新版已经从数据库获取了。

c121914yu avatar May 31 '24 08:05 c121914yu