从零开始在本地傻瓜式部署MaxKB项目(知识库问答)

MaxKB介绍

MaxKB是一款基于LLM(Large Language Model)大语言模型的知识库问答系统,旨在成为企业的最强大脑。

  • 定义:MaxKB = Max Knowledge Base,是一个集成大型语言模型的知识库问答系统。
  • 目标:通过集成大型语言模型,提供快速、准确的问答服务,帮助企业从海量数据中快速提取有价值的信息。
  • 产品特点

    1. 开箱即用
    2. 支持直接上传文档、自动爬取在线文档。
    3. 支持文本自动拆分、向量化,以及RAG(检索增强生成)技术,提供智能问答交互体验。
    4. 无缝嵌入
    5. 支持零编码快速嵌入到第三方业务系统,实现智能问答功能的无缝集成。
    6. 多模型支持
    7. 支持对接主流的大模型,包括Ollama本地私有大模型(如Meta Llama 3、qwen等)、通义千问、OpenAI、Azure OpenAI、Kimi、智谱AI、讯飞星火和百度千帆大模型等。

    技术架构

  • 前端:采用Vue.js框架,提供友好的用户界面。
  • 后端:使用Python/Django开发,负责处理逻辑和数据交互。
  • 工作流引擎:利用LangChain实现复杂的问答流程。
  • 向量数据库:采用PostgreSQL/pgvector,支持高效的文本向量化存储和检索。
  • 本地一键部署(Linux,可以访问公网)

    1.以root身份执行以下命令,安装1panel:

    curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

    建议提前创建安装1panel的安装文件夹,先复制好,后续会使用,也可以不创建使用默认路径,一路完成之后就会得到面板的账号密码:

     全程几乎不需要手动操作,只需要确认填写安装路径和登录用户名即可,成功后可获得面板信息,因为是本地部署,所以采用内网地址和账号密码即可登录。

    注意:此处的登录地址,账号密码等面板信息只会显示一次,建议一定要自己本地记录好!!!

    2.访问内网地址,安装maxKB

    先设置服务器IP,这个地址可以跟面板的ip不一样,建议填写服务器的局域网IP,方便同一局域网下其他用户访问

    安装前请先配置容器加速地址  容器  — 配置  — 镜像加速  — 配置,填写地址  Docker Proxy

    然后选择 应用商店  — AI大模型  — maxKB — 点击安装

    安装后,点击应用商店 — 已安装,点击Maxkb图标,会在右侧弹出账号密码

    点击图标旁边的服务端口,可以自动打开maxKB的后台,并使用账号密码登录

    MaxKB使用 

    1.创建知识库,请提前准备好知识库文件

    点击上方菜单  知识库  — 创建知识库

    按照提示填写知识库信息即可,填完后保存,就会有一个知识库

    2.创建应用

     选择 应用  — 创建应用,里面要选择高级编排

    3.编排流水线 ,其实很简单一点不麻烦

    这里的知识库点加号,选择刚才创建的知识库

     

    3.配置AI大模型

    最右边有三条分支,分别是匹配答案后直接回答,下面两条是不同程度下未匹配到结果后使用AI回答的配置

    两个配置是一样的,我这里就只配置一个

    AI模型选择添加模型

    模型选择 百度千帆大模型,然后里面的配置如下,模型名称自己随便写,建议跟模型搭边,模型选择 ERNIE-Speed-128K,选择不了就直接粘贴,然后点击那个模型

    这里的APIKEY 和 secret key是百度后台的应用的保密数据,获取地址:

    https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application

    没有应用的话就直接创建,有的话直接复制粘贴进来 

     

    百度云里面获取应用ak sk

    粘贴后保存AI大模型配置,下面的历史记录建议选择3条,选的越多上下文越连贯

    另外一个大模型也按照同样配置,但是大模型名称不能一样

    最后,点击右上角的,保存,发布,也可以保存后点击调试看看效果,不满意的话自己根据里面的参数进行调整

    发布后,即可使用该应用

    4.大模型知识库的使用

    点击应用  — 选择自己的应用 点击进去

    这里的公开访问打开,下面的地址就是别人访问webui界面的地址,复制到浏览器即可打开

    除此外,还支持嵌入第三方,这里指的是web页面的嵌入,可以是全屏,也可以是右下角的弹窗

    当然,还支持API的调用,先创建apikey

     设置里面打开允许跨域地址访问

    访问地址 http://192.168.131.129:8080/doc/chat/

    打开接口说明文档

    Python调用接口示例

    使用顺序: 获取应用信息(应用信息只有一个,受apikey影响) —  获取会话id  — 开始对话

    import json
    import requests
    
    
    # 获取应用信息
    def get_application_info():
        url = "http://192.168.131.129:8080/api/application/profile"
        api_key = 'application-e161652487c1a753d660255bf33f8fc6'
        headers = {
            'AUTHORIZATION': api_key
        }
        res = requests.get(url, headers=headers)
        print(res.json())
        id = res.json()['data']['id']
    
    
    # 获取对话id
    def get_chat_id():
        application_id = 'dab004f6-42aa-11ef-bd35-0242ac120002'
        url = f'http://192.168.131.129:8080/api/application/{application_id}/chat/open'
        api_key = 'application-e161652487c1a753d660255bf33f8fc6'
        headers = {
            'AUTHORIZATION': api_key
        }
        res = requests.get(url, headers=headers)
        print(res.json())
        chat_id = res.json()['data']
    
    # 开始对话
    def chat():
        chat_id = 'd213a178-4321-11ef-a64a-0242ac120002'
        url = f'http://192.168.131.129:8080/api/application/chat_message/{chat_id}'
        api_key = 'application-e161652487c1a753d660255bf33f8fc6'
        headers = {
            'AUTHORIZATION': api_key
        }
        body = {
            "message": "红与黑是什么",  # 输入的问题
            "re_chat": False,
            "stream": False
        }
        res = requests.post(url, json=body, headers=headers)
        print(res.json())
        response_content = res.json()['data']['content']
    
    

    作者:lytcreate.

    物联沃分享整理
    物联沃-IOTWORD物联网 » 从零开始在本地傻瓜式部署MaxKB项目(知识库问答)

    发表回复