首发地点(接待各人访问):使用MaxKB搭建知识库问答体系并接入个人网站
媒介
从OpenAI推出ChatGPT到现在,大模子已经排泄到各行各业,大模子也渐渐趋于布衣化;从最开始对其明确、天生、强大的知识积聚的惊叹,到现在盼望大模子能更加的易用、精确以致是在各个生产环节起到作用。不管是企业还是个人,对大模子的需求都优劣常茂盛且丰富的;
大模子在广义上是指参数数目大、布局复杂的深度学习模子,具备涌现本领、通用本领,并可以大概处理处罚复杂的鄙俚使命,如自然语言处理处罚、图像辨认等。它包罗大语言模子、大视觉模子、大语音模子等;而大语言模子(Large Language Model,简称 LLM)是现在最热门、应用最广泛的技能;
而在大语言模子不停投入市场让更多的用户使用的过程众,大语言模子本身的题目也暴袒露来了;此中最大的题目就是幻觉,所谓幻觉,就是大语言模子提供的答案看似很公道,但实际上就是在颠三倒四。导致大模子幻觉的缘故因由有许多种,要讨论的话也并非三言两语可以竣事的,以是这里不做过多的拓展。简单明确一下,大模子幻觉大多数的情况就是知识数据题目,失真、边界等题目都大概率会导致幻觉。
针对知识失真、边界导致幻觉的题目,通常是两种方式,一种是微调,别的一种就是检索增强天生(Retrieval Augmented Generation,RAG);
RAG是一种团结检索和天生技能的模子。它通过引用外部知识库的信息来天生答案或内容,具有较强的可表明性和定制本领,实用于问答体系、文档天生、智能助手等多个自然语言处理处罚使命中。RAG模子的上风在于通用性强、可实现即时的知识更新,以及通过端到端评估方法提供更高效和精准的信息服务1。
个人的明确就是,RAG 就是给大模子外貌一个知识库,在用大模子的过程中,用知识库里的知识来辅助大模子答复用户题目;背面操持专门纪录一下个人对干系知识的明确,以是这里也不做过多的扩展;
大语言模子和RAG的团结,无论是对于企业还是个人都是有实质性的增效的。由于简单从本钱和结果综合来看,RAG绝对是比微调更好的选择;
而RAG发展到现在,技能上的门槛已经低落许多了,干系的开源项目特别多,比方dify、FastGPT、QAnything以及本文主角MaxKB等;
起首说下我选MaxKB的缘故因由,说实话,我还没有试过其他的产物。我使用RAG紧张需求就是想放到我的博客网站上,能快速定位到干系的汗青知识,提升体验;
而MaxKB开箱即用,支持快速嵌入到第三方业务体系的特性可以说直接腾飞,下面进入正文。
MaxKB简介
官方先容
官网地点:https://maxkb.cn/
- 产物先容
MaxKB = Max Knowledge Base,是一款基于大语言模子和 RAG 的开源知识库问答体系,广泛应用于企业内部知识库、客户服务、学术研究与辅导等场景。作为一款专注于知识库问答场景的软件产物,MaxKB 可以大概为企业的智能化进程注入新的动力,助力企业实现“提质增效”的目标。在知识库管理方面,MaxKB 资助企业实现知识收罗、知识入库、知识库构建的全流程主动化;在场景化智能搜索方面,MaxKB 可以大概剖析用户输入的题目并匹配检索知识库;在复兴精确性方面,MaxKB 采取了成熟的 LLM + RAG 技能,可以大概最大限度地低落大模子幻觉对知识搜索精确性的干扰,进步企业对业务数据的分类与召回本领;安全性方面,MaxKB 支持本地摆设和调用本地大模子,有用管控企业使用知识库时越级访问的风险,以及公有模子在数据传输方面大概存在的安全隐患。借助 MaxKB,企业用户可以快速上线业务 AI 助手,将天生式 AI 本领应用于业务数据管理、内部资料查询、线上客户服务等范畴,优化业务服务流程并切实提升用户体验2。
- 产物上风
- 开箱即用
支持直接上传文档 / 主动爬取在线文档,支持文本主动拆分、向量化和 RAG(检索增强天生),有用淘汰大模子幻觉,智能问答交互体验好;
- 快速接入
支持零编码嵌入到第三方业务体系,以及快速接入企业微信、钉钉、飞书、公众号等应用,让已有体系快速拥有智能问答本领,进步用户满意度;
- 机动编排
内置强大的工作流引擎和函数库,支持编排 AI 工作过程,满意复杂业务场景下的需求;
- 模子中立
支持对接各种大模子,包罗本地私有大模子(Llama 3 / Qwen 2 等)、国内公共大模子(通义千问 / 腾讯混元 / 字节豆包 / 百度千帆 / 智谱 AI / Kimi 等)和国外公共大模子(OpenAI / Claude / Gemini 等)2。
架构
我们紧张看一眼这个技能蹊径,就是典范的RAG流程:
摆设与集成
安装摆设
- 硬件要求:
- 操纵体系:Ubuntu 22.04 / CentOS 7.6 64 位体系
- CPU/内存:2C/4GB 以上
- 磁盘空间:100GB
怎么说呢,就是这个硬件要跑起来就会比力卡,在向量化文本大概问答的时间都会比力卡,以是发起硬件再升一升会更好点;
- 安装摆设:
直接看官方文档吧,很简单:https://maxkb.cn/docs/installation/offline_installtion/
创建应用
紧张的使用教程仍然是看官网就行,官网的文档很详细;
这里只做简单的纪录;
每个模子怎么接入的方式在官方文档也有(再夸一夸这个文档,真的很友爱);
我这里是用的星火lite模子,紧张有两个缘故因由,起首我不须要很好的大模子,能明确我的知识进一步润色后答复即可,也就是有根本的本领就行;其次就是星火这个模子免费(很妙);
如图所示,这里可以创建本地库也可以创建web网站知识库;web站点的知识库,MaxKB会主动的爬取网站下面的文本数据;
由于博客网站有许多页面的信息对于知识问答来讲都是没用的,以致会引起毛病,以是我这里就创建的本地知识库,然后把网站上的文章手动导进来的;
这个方式很笨,由于更新文章后,知识库不能主动更新,背面再琢磨吧;
固然,我的博客是使用halo搭建的,halo中是有一个付费插件可以实现主动更新和集成的;
照现在的需求来看,是不消投资的,以是就不弄插件了,简单集成下先;
创建后要等候向量化完成:
创建应用,内里添有两个选型,一个是简单设置一个是高级编排;
这里就不得不说,这个产物迭代的速率还是很快的,上一次体验就没编排,现在连workflow都加进来了,很不错;
我不须要通过workflow来编排什么使命,就是简单的问答;
以是选择简单设置即可;
点击应用卡片,进入设置该应用关联的模子、知识库和干系提示语;
设置好后,就可以在右侧的调试地区试一下了;可以看到召回的文档片断,很强大;
到这里,根本就完成了应用的搭建了;
集成到第三方应用(干货)
集成可不要太简单,这也是MaxKB友爱的地方,直接提供了页面嵌入和浮窗嵌入的代码,极速嵌入;不须要再进一步集成接口和开辟了;
固然它也提供了api接口,你可以通过接口接入其他应用;
集成到halo;
如果你选择和我一样直接全局注入浮窗模式的代码:
那就得看你是用的是啥主题了,我用的主题就加载不乐成;
我用hao主题,直接没体现;
然后切换一个主题试一下:
诶!好了,神奇不!
最开始我以为是掩蔽的缘故因由,就直接看下元素:
ok代码注入没题目
看一下注入的js的源代码(省略不紧张部分):
最紧张的着实就是initMaxkb()、initMaxkbStyle(root)、embedChatbot(),然后在initMaxkb()中通过document.body.appendChild(maxkb)把浮窗嵌入到body标签的最背面;以是我们看一眼body标签
- const guideHtml=`...
- `
- const chatButtonHtml=
- `...`
- const getChatContainerHtml=(protocol,host,token,query)=>{...}
- const initGuide=(root)=>{...
- }
- const initChat=(root)=>{...
- }
- /**
- * 第一次进来的引导提示
- */
- function initMaxkb(){
- const maxkb=document.createElement('div')
- const root=document.createElement('div')
- root.id="maxkb"
- initMaxkbStyle(maxkb)
- maxkb.appendChild(root)
- document.body.appendChild(maxkb)
- const maxkbMaskTip=localStorage.getItem('maxkbMaskTip')
- if(maxkbMaskTip==null && true){
- initGuide(root)
- }
- initChat(root)
- }
-
- // 初始化全局样式
- function initMaxkbStyle(root){
- style=document.createElement('style')
- style.type='text/css'
- style.innerText= `......`
- root.appendChild(style)
- }
- function embedChatbot() {
- white_list_str=''
- white_list=white_list_str.split(',')
- if (true&&(false?white_list.includes(window.location.origin):true)) {
- // 初始化maxkb智能小助手
- initMaxkb()
- } else console.error('invalid parameter')
- }
- window.onload = embedChatbot
复制代码 OK,找了半天没找到:

那简单了,排查一下是哪个函数出题目了;
直接把js代码下载下来,嵌入源代码:

排查方法就是在函数内里console.log;
末了发现是window.onload 变乱没实验!
详细缘故因由着实我也不知道,反正找到缘故因由就好办了,改下方法硬搞!
(但是下面这个方法也不是全部端,全部欣赏器适配,如果你有更好的方法接待批评探究!)
使用 DOMContentLoaded 变乱取代 load 变乱:
DOMContentLoaded 变乱是欣赏器提供的 DOM(文档对象模子)变乱之一,它在欣赏器加载并剖析完全部HTML文档后触发,但不必等候样式表、图像和子框架完成加载。这意味着在 DOMContentLoaded 变乱触发时,DOM树已经创建,可以对DOM举行操纵,但页面上的其他资源大概还在加载中。
DOMContentLoaded 和 onload 在网页加载过程中触发的机遇和作用范围有所差别:
- 触发机遇:
- DOMContentLoaded:当初始的HTML文档被完全加载息争析完成之后立刻触发,不等候样式表、图片和子框架完成加载。
- onload:在整个页面包罗全部依赖资源(如样式表、图片、子框架等)完全加载完成后触发。
- 作用范围:
- DOMContentLoaded:只关心HTML文档的加载息争析,不涉及其他资源。
- onload:关心整个页面的加载,包罗HTML、CSS、JavaScript、图片等全部资源。
- 用途:
- DOMContentLoaded:得当实验那些不依赖于样式表和图片的脚本,好比DOM操纵和变乱绑定。
- onload:得当实验那些须要等候全部资源加载完成后才气运行的脚本,好比页面的终极渲染和资源的完备性查抄。
- 兼容性:
- DOMContentLoaded:险些全部今世欣赏器都支持。
- onload:全部欣赏器都支持,是一个汗青久长的变乱。
- document.addEventListener('DOMContentLoaded', function() {
- // 初始化maxkb智能小助手
- embedChatbot();
- });
复制代码 办理!
尚有一点小题目,谁人小图标会被一些元素挡着,我就改了一下CSS:
这个需求就见仁见智了
- #maxkb .maxkb-tips .maxkb-button button {
- border-radius: 4px;
- background: #FFF;
- padding: 3px 12px;
- color: #3370FF;
- cursor: pointer;
- outline: none;
- border: none;
- z-index: 10000; /* 设置z-index */
- }
复制代码 注意
我没有用Maxkb提供的嵌入方法,我是直接嵌入的源代码(访问maxkb提供的谁人url下载的js代码)!
halo 1.6嵌入
着实只要你选择嵌入源代码,全部的事变都好办了,有题目直接简单修改下代码就行!
结果展示
https://blog.jiumoz.top/
总结
说实话,个人博客也不是特别须要这个东西,就是看着有点帅罢了;不外也算是学习大模子干系知识的一小步;
背面我盼望我博客内里纪录更多干货,MaxKB的分享就到这里了!
- 阿里云推出企业级大模子RAG办理方案 “最强外挂”可大幅提升语言模子体现. ↩︎
- MaxKB文档 ↩︎ ↩︎
|