从零开始在本地傻瓜式部署MaxKB项目(知识库问答)
MaxKB介绍
MaxKB是一款基于LLM(Large Language Model)大语言模型的知识库问答系统,旨在成为企业的最强大脑。
产品特点
- 开箱即用:
- 支持直接上传文档、自动爬取在线文档。
- 支持文本自动拆分、向量化,以及RAG(检索增强生成)技术,提供智能问答交互体验。
- 无缝嵌入:
- 支持零编码快速嵌入到第三方业务系统,实现智能问答功能的无缝集成。
- 多模型支持:
- 支持对接主流的大模型,包括Ollama本地私有大模型(如Meta Llama 3、qwen等)、通义千问、OpenAI、Azure OpenAI、Kimi、智谱AI、讯飞星火和百度千帆大模型等。
技术架构
本地一键部署(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.