晓怒(xiao.nu),记录分享我的学习笔记,学习一下,记录一下,分享一下。

基于大语言模型和RAG知识库问答系统MaxKB,去除“应用”、“知识库”和“用户数”限制(适合docker版本)

基于大语言模型和RAG知识库问答系统

LLM RAG知识库工具对比

很久之前家里就弄了台NAS,使用unRaid的系统,一直想弄个RAG知识库工具在里面,对比了好几个市面上常见的大模型知识库系统,最后还是比较喜欢MaxKB,基本能满足自己的要求,支持简单模式和工作流编排,在加上可以使用python自己写插件,加上界面也还不错。

anythingLLM,功能基本能满足,但是没有工作流,插件也比较麻烦,再加上是英文版为主,有些功能自己实现,还是有点麻烦。

fastgptdify这些呢,功能更强大,效果也更好一些,特别是知识库匹配上,确实要好很多,但是配置要求也高了点。

综合以上几点选择了maxKB来做自己本地的知识库系统,不过中间有一点一直有点为难我,就是社区版(免费版本)对应用、知识库以及用户数都有限制,不过好在是开源的,就尝试自己来修改一下限制。

在网络上进行搜索,以确定是否存在现成的方案

不知道是不是用的人并不多的原因,还是其他的什么原因,网上找了很久,都没有怎么找到修改的docker镜像,不过好在在CSDN上找到了一篇相关的文章,然后开始了自己的尝试之旅。

首先在网络附加存储(NAS)上进行操作。由于起初未直接修改 Vue 代码并进行编译生成,而是直接修改了已生成好的原始 JavaScript 代码,但不知为何一直未能成功。在此过程中,也尝试过替换、重启 Docker等一系列操作,就是没有成功。实话说,当时处于周末,耗费了小半天时间仍未解决问题,甚至有放弃的念头。

后续尝试重新打包 Vue 代码,重新生成前端代码,而后替换 Docker 容器中的文件,便取得成功。
接下来我将说说具体的操作步骤:

  1. 从github上下载源码:1panel/MaxKB
  2. 找到文件清单,并搜索关键词“社区版最多

    • apps/setting/serializers/valid_serializers.py
    • apps/users/serializers/user_serializers.py
    • apps/dataset/serializers/dataset_serializers.py
    • apps/application/serializers/application_serializers.py
    • ui/src/views/user-manage/index.vue
    • ui/src/views/application/component/CopyApplicationDialog.vue
    • ui/src/views/dataset/index.vue
    • ui/src/views/application/index.vue
  3. 逐一修改涉及限制的代码部分

    • py文件,直接修改上面的数量限制,一般为 count= 后面的数字,直接修改,并修改后面的 message= 的说明文字
    • vue文件,则一般是在 if else 条件函数里面,则直接将上面的处理过程复制到被限制的部分,来跳过限制提示
  4. 使用 nodejs npm 重新打包前端代码

    修改完所有 ui/src/view/ 下的vue文件之后,使用命令 npm i 安装所需要的node依赖,使用命令 npm run build 重新打包文件,打包之后的文件会在 dist/ui 目录下,可以将文件夹拷贝出来,以备后用。
  5. 替换 docker 中的文件,并重启 docker 镜像,以便生效

    • ui 文件夹以及第一步中的4个已经修改了的py文件,放置在同一个目录下
    • 运行CMD或者Powershell,运行如下代码:

      docker cp ./ui maxkb:/opt/maxkb/app/ui/dist
      docker cp ./valid_serializers.py maxkb:/opt/maxkb/app/apps/setting/serializers
      docker cp ./dataset_serializers.py maxkb:/opt/maxkb/app/apps/dataset/serializers
      docker cp ./user_serializers.py maxkb:/opt/maxkb/app/apps/users/serializers
      docker cp ./application_serializers.py maxkb:/opt/maxkb/app/apps/application/serializers

在完成上述所有步骤之后,您将会获得一个数量不受限制的 MaxKB 系统。

最后,如果您确实不知如何进行修改,可以在文章结尾处留言,我会将修改后的文件进行打包并发送给您。(由于 BLOG 的服务器容量和流量都比较小,故无法直接提供下载文件,望予以理解。)

另外附上免费的大语言模型可供使用,注册可以访问:SiliconCloud,Qwen、GLM、零一万物、META的llama、deepseek等都可以免费使用,快来试试吧。


2025/02/14 针对MaxKB-1.10.0-lts更新

只需要修改前面提到的4个py文件即可,不再需要修改UI的js限制了,现在全部都是后台验证了,只需要注释掉上文提到的py文件中的@valid_license函数,就可以实现数量的限制了。

另外避免麻烦,可以直接使用docker的映射功能,把四个py文件直接映射到docker容器内,不再需要手动去替换他们,yaml代码如下:

version: '3'
services:
maxkb:

image: 1panel/maxkb:latest
container_name: maxkb
ports:
  - "8080:8080"
volumes:
  - /mnt/user/appdata/maxkb/data:/var/lib/postgresql/data
  - /mnt/user/appdata/maxkb/python-packages:/opt/maxkb/app/sandbox/python-packages
  - /mnt/user/appdata/maxkb/valid_serializers.py:/opt/maxkb/app/apps/setting/serializers/valid_serializers.py
  - /mnt/user/appdata/maxkb/dataset_serializers.py:/opt/maxkb/app/apps/dataset/serializers/dataset_serializers.py
  - /mnt/user/appdata/maxkb/user_serializers.py:/opt/maxkb/app/apps/users/serializers/user_serializers.py
  - /mnt/user/appdata/maxkb/application_serializers.py:/opt/maxkb/app/apps/application/serializers/application_serializers.py

希望能对大家有帮助,有问题可以评论区给我留言,之前因为有spam评论,我做了限制展示,如果已经发过的,我会手动审核后展示出来,不用重复发布类似的评论。

v1.10.7-lts下载地址:https://share.weiyun.com/VqJ9xgBr

185 评论
    lalakillChrome 134Android
    4月2日回复

    583786813@qq.com 自己搞了好久实在搞不出,伸手要一下ヾ(≧∇≦*)ゝ

    山西以西Chrome 111Windows 10
    4月2日回复

    您好,按上述在docker里面进行了修改,但结果提示“社区版最多支持 5 个应用,如需拥有更多应用,请升级为专业版。”,请发一份修改之后的代码看看,谢谢。

    九六Chrome 134Windows 10
    4月2日回复

    1533229654@qq.com,大佬希望分享一下

    山西以西Chrome 111Windows 10
    4月2日回复

    您好,请教一下。
    针对版本 v1.10.2-lts (build at 2025-03-05T19:39, commit: bc3dcda1) ,用docker 安装。
    我的邮箱 2608493559@qq.com

    在docker里面修改了对应的vue文件,但依然提示“社区版最多支持 5 个应用,如需拥有更多应用,请升级为专业版。”,请帮忙看看,谢谢了!

    修改包括:

    1. ui\src\views\application\index.vue

    function openCreateDialog() {
    common

    .asyncGetValid(ValidType.Application, ValidCount.Application, loading)
    .then(async (res: any) => {
      if (res?.data) {
        CreateApplicationDialogRef.value.open()
      } else if (res?.code === 400) {
       CreateApplicationDialogRef.value.open()        
      }
    })

    }

    1. ui\src\views\application\component\CopyApplicationDialog.vue

    const submitValid = (formEl: FormInstance | undefined) => {
    if (user.isEnterprise()) {

    submitHandle(formEl)

    } else {
    submitHandle(formEl)
    }
    }

    1. ui\src\enums\common.ts
      export enum ValidCount {
      Application = 500,
      Dataset = 50,
      User = 2
      }

    python文件:

    1. apps\common\util\common.py
      def valid_license()函数中,去掉:
      if not is_license_valid and record_count >= count:

               error_message = message or f'超出限制{count}, 请联系我们(https://fit2cloud.com/)。'
               raise AppApiException(400, error_message)
      
    2. apps\application\serializers\application_serializers.py
      class Create(serializers.Serializer): 中去掉
      @valid_license(model=Application, count=5,

                      message=_(
                          'The community version supports up to 5 applications. If you need more applications, please contact us (https://fit2cloud.com/).'))

    d0cterChrome 134Windows 10
    4月2日回复

    1581886168@qq.com 好人一生平安

    leaguestChrome 134Windows 10
    3月30日回复

    zachary1974@qq.com 谢谢博主

    jeeChrome 134Windows 10
    3月28日回复

    求一份panhiro@163.com

    gjFirefox Browser 136Windows 10
    3月28日回复

    大佬好!需要一份最新版,感谢!!!richard_gj@163.com

    发发发Chrome 109Windows 10
    3月27日回复

    求发一份 664066312@qq.com 感谢

    白小怒Chrome 134Windows 10
    3月27日回复

    3月27日前的全部已发 ̄﹃ ̄

      鱼鱼Chrome 135Windows 10
      4月30日回复
    18Chrome 131Windows 10
    3月25日回复

    7156147@qq.com 好人一生平安

    IblankDSafari 18iPhone
    3月24日回复

    感谢博主尝试很久未能成功 希望能分享一下 980181119@qq.com

      白小怒Chrome 134Windows 10
      3月27日回复

      @IblankD 你邮不存在,发不了。

    阿里波波Chrome 134Windows 10
    3月24日回复

    请博主老师帮忙发下具体修改的配置文件,谢谢。邮箱475226732@qq.com

    huaChrome 134Windows 10
    3月24日回复

    博主您好能给我一份1.10.0的文件吗谢谢了 349815902@qq.com

    IblankDSafari 18iPhone
    3月22日回复

    感谢博主 980181119@qq.com

    千羽寻Chrome 134Windows 10
    3月21日回复

    大佬,求修改后的文件,MaxKB-1.10.0-lts及以上均可,感谢,1274972935@qq.com

    YanlexuChrome 134Windows 10
    3月19日回复

    yanlexu@gmail.com 劳烦博主给发一份

    abcChrome 111Windows 10
    3月19日回复

    如果直接进入docker里面,到镜像里面改文件,那么重启镜像会不会恢复原状?

      白小怒Chrome 134Windows 10
      3月27日回复

      @abc 记得好像不会,你也不是源码构件的docker,直接修改的话应该没问题。

    千羽寻Chrome 134Windows 10
    3月19日回复

    求大佬,发一份,感谢!1274972935@qq.com

    无忧的春风Chrome 134Windows 10
    3月19日回复

    yanlexu@gmail.com谢谢博主 帮发一份