[开源]MaxKb+Ollama 构建RAG私有化知识库
MaxKb+Ollama,基于RAG方案构专属私有知识库
- 关于RAG
- 工作原理
- 实现方案
- 一、什么是MaxKb?
- 二、MaxKb的核心功能
- 三、MaxKb的安装与使用
- 四、MaxKb的适用场景
- 五、安装
- 方案、 docker版
- Docker Desktop安装配置
- MaxKb安装和配置
- 总结和问题

MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。MaxKB = Max Knowledge Base,旨在成为企业的最强大脑。
-
开箱即用:支持直接上传文档、自动爬取在线文档,支持文本自动拆分、向量化,智能问答交互体验好;
-
无缝嵌入:支持零编码快速嵌入到第三方业务系统;
-
多模型支持:支持对接主流的大模型,包括 Ollama 本地私有大模型(如 Llama 2、Llama 3、qwen)、通义千问、OpenAI、Azure OpenAI、Kimi、智谱 AI、讯飞星火和百度千帆大模型等。
关于RAG
简介
检索增强生成(Retrieval-Augmented Generation,RAG)是一种结合了信息检索和语言模型的技术,它通过从大规模的知识库中检索相关信息,并利用这些信息来指导语言模型生成更准确和深入的答案。这种方法在2020年由Meta AI研究人员提出,旨在解决大型语言模型(LLM)在信息滞后、模型幻觉、私有数据匮乏和内容不可追溯等问题。
在日常工作和学习中,我们时常会面对大量的PDF、Word、Excel等文档,需要从中查找特定的信息或内容。然而,传统的Ctrl+F搜索方式在面对海量文档或复杂格式时,往往效率低下,令人头疼。如果使用MaxKb 工具,它将彻底改变你处理文档的方式。
工作原理


RAG 的主要流程主要包含以下 2 个阶段:
- 数据准备阶段: 管理员将内部私有数据向量化后入库的过程,向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果;入库即将向量数据构建索引,并存储到向量数据库的过程。
- 用户应用阶段: 根据用户的 Prompt 提示词,通过检索召回与 Prompt 提示词相关联的知识,并融入到原 Prompt 提示词中,作为大模型的输入 Prompt 提示词,通用大模型因此生成相应的输出。
从上面 RAG 方案我们可以看出,通过与通用大模型相结合,我们可搭建团队私有的内部本地知识库,并能有效的解决通用大模型存在的知识局限性、幻觉问题和隐私数据安全等问题。
实现方案
目前市面上已经有多个开源 RAG 框架,这里将选择MaxKb框架(16.8K ☆ ,https://github.com/1Panel-dev/MaxKB)与大家一起来部署我们自己或者团队内部的本地知识库。整个部署过程将涉及以下几个方面:
- 环境准备: MaxKb框架推荐使用 Docker 部署,因此我们需要提前把 Docker 安装和配置好
- 大模型准备: 老牛同学继续使用Qwen2-7B大模型,大家可以根据自己实际情况选择,无特殊要求
- RAG 部署和使用: 即 MaxKb安装和配置,并最终使用我们大家的 RAG 系统
一、什么是MaxKb?
官网https://github.com/1Panel-dev/MaxKB
MaxKb是一个AI聊天系统,它允许用户构建自己的私人ChatGPT。与依赖云服务的AI工具不同,MaxKb支持本地开源和商用闭源的大语言模型(LLM),用户可以根据自己的需求和预算选择合适的模型。

二、MaxKb的核心功能
- 文档智能聊天:只需导入文档,MaxKb就能自动进行上下文分析和内容整理,用户可以通过对话的方式快速提取关键信息。
- 自定义AI代理:用户可以为每个工作区创建不同的AI代理,实现高度的定制化。例如,可以创建一个专门处理Python代码的AI代理,另一个则专门用于处理PDF文档。
- 多模式支持:无论是免费的开源模型还是付费的商用模型,MaxKb都能兼容,为用户提供极大的灵活性。
- 广泛的文档支持:从PDF、TXT到Word、Excel,几乎所有常见的文档格式都支持。
- 嵌入式聊天小部件:用户可以将MaxKb嵌入到自己的网站中,为网站用户提供自动化的智能客服服务。
- 团队协作支持:通过Docker容器,多个用户可以同时使用MaxKb,非常适合团队开发或公司内部使用。
- 丰富的API接口:开发者可以轻松集成MaxKb到现有的应用中,实现更多定制化功能。
三、MaxKb的安装与使用
安装AnythingLLM非常简单,官方文档详细明了,按照步骤操作即可。对于开发者来说,一条命令就能完成Docker部署,几分钟就能跑起来一个完整的私人ChatGPT系统。对于不太懂技术的小伙伴来说,也有详细的教程帮助上手。
使用上,用户只需通过拖拽的方式将文档放入工作区,然后就可以开始与文档“聊天”了。这个过程非常自然,就像与人对话一样,用户可以直接让AI分析提取重要内容,无需再翻阅大量文档或使用关键词搜索。
四、MaxKb的适用场景
-
个人学习助手:对于学生或知识工作者来说,MaxKb是强大的学习助手,可以帮助他们快速获取书籍、论文等学习资料中的信息。
-
企业文档管理:企业内部的文档种类繁多,通过MaxKb的工作区机制,企业可以分类管理文档,提升整体工作效率。
-
开发者定制应用:开发者可以利用MaxKb的API集成到现有系统中,打造符合自己需求的AI应用。
-
网站智能客服:对于需要客服支持的网站来说,可以将MaxKb嵌入网站中,为用户提供快速解答。
五、安装
采用 MaxKb与Ollama 结合使用的方式,快速搭建本地AI
接下来仅讲解一下如何安装 AnythiMaxKbgLLM 以及配置
安装并配置MaxKb

方案、 docker版
环境准备
Windows 打开虚拟化功能(Hyper-V 和 WSL)
友情提示: 这里用的是 Windows 操作系统,因此下面是 Windows 的配置方式。
安装 Docker 需要用到虚拟化,因此需要 Windows 系统打开Hyper-V和WSL 子系统功能。如果是 Windows 11 家庭版,默认并没有安装Hyper-V功能,可以通过以下方式进行安装:

【第一步(家庭版):安装 Hyper-V 依赖包】
- 新建一个 txt 临时文本,并复制以下代码并保存,之后把该临时文件重命名为Hyper-V.bat
- 右键以管理员方式运行Hyper-V.bat,本代码自动安装相关包,完成之后输入Y重启电脑后即可
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
【第二步:开启虚拟化功能】
首先,打开 Windows 功能(即:控制面板):

然后,勾选以下 3 个选项(Hyper-V、适用于 Linux 的 Windows 子系统和虚拟机平台),打开虚拟化功能:

打开虚拟化功能
点击确定之后重启电脑即可!
Docker Desktop安装配置
这里之前文章有介绍,可参考,这里不再赘述

MaxKb安装和配置
方式一: 本地docker部署
接下来,开始安装和部署MaxKb框架,包含以下 3 步:
docker run -d --name=maxkb --restart=always -p 3002:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages cr2.fit2cloud.com/1panel/maxkb# username: admin
# pass: MaxKB@123..
- 启动MaxKb镜像
Windows 系统: AnythingLLM 镜像挂载和启动命令(因为命令有多行,需要通过PowerShell执行):

-
拉取镜像完成后,在docker中检查如下

-
为避免电脑重启后创建的知识库没保存, 删除自动创建部署的maxkb,如下操作

关闭后操作页面如下

找到PGDATA 路径

然后返回,点击删除

-
从images中再次创建容器

第一个端口5432 应该是postgesql的端口 可以不配置

/var/lib/postgresql/data

- 启动完成,通过浏览器打开AnythingLLM界面:http://localhost:3002
登录后, 创建知识库, 账号密码见上文

方案二:1Panel 应用商店
你也可以通过 1Panel 应用商店 快速部署 MaxKB + Ollama + Llama 2,30 分钟内即可上线基于本地大模型的知识库问答系统,并嵌入到第三方业务系统中。

配置 MaxKb
配置大语言模型

若保存时提示api域名无效, 改为 http://host.docker.internal:11434

最后一步 , 创建应用

五、MaxKb 导入数据和使用
上一步配置完成之后,无需任何其他配置,就可以和大模型对话聊天了,和通过其他客户端与大模型对话没有区别。接下来,我们需要导入我们内部私有数据,并进行验证。
5.1 导入内部数据
我们在电脑本地新建一个 txt 文件,文件名为:为什么个人、团队等均有必要部署私有化的RAG知识库系统.txt,文件内容就是本文的开头内容:
自ChatGPT发布以来,大型语言模型(Large Language Model,LLM,大模型)得到了飞速发展,它在解决复杂任务、增强自然语言理解和生成类人文本等方面的能力让人惊叹,几乎各行各业均可从中获益。然而,在一些垂直领域,这些开源或闭源的通用的基础大模型也暴露了一些问题,主要有以下3个方面:1. **知识的局限性:** 大模型的知识源于训练数据,目前主流大模型(如:通义千问、文心一言等)的训练数据基本来源于网络公开的数据。因此,非公开的、离线的、实时的数据大模型是无法获取到(如:团队内部实时业务数据、私有的文档资料等),这些数据相关的知识也就无从具备。
2. **幻觉问题:** 大模型生成人类文本底层原理是基于概率(目前还无法证明大模型有意识),所以它有时候会**一本正经地胡说八道**,特别是在不具备某方面的知识情况下。当我们也因缺乏这方面知识而咨询大模型时,大模型的幻觉问题会各我们造成很多困扰,因为我们也无法区分其输出的正确性。
3. **数据的安全性:** 对于个人、创新团队、企业来说,**数据安全**至关重要,老牛同学相信没有谁会愿意承担数据泄露的风险,把自己内部私有数据上传到第三方平台进行模型训练。这是一个矛盾:我们既要借助通用大模型能力,又要保障数据的安全性!为了解决以上3个大模型通用问题,**检索增强生成**(Retrieval-Augmented Generation,**RAG**)方案就应运而生了!
首先,点击RAG-ClassmateWX工作空间右边的上传图标,准备上传本 txt 文件:
准备上传文件;然后,点击 txt 文件并上传,并点击Move to workspace导入到工作空间:
5.2 内部数据使用和验证
总结和问题
和之前的大模型部署和应用过程相比,基于 MaxKb 的 RAG 实现整个部署过程比较繁琐,包括环境准备、Docker 安装和配置、MaxKb 配置等。然而,MaxKb 的使用过程却相对比较简单,只需要上传数据文件,MaxKb 框架屏蔽了中间的数据提取分割、向量化处理、向量索引和入库、检索召回和重组 Prompt 提示词等过程。
同时,通过构建本地知识库,做了一个简单的测试验证,测试结果表明,在使用 RAG 的情况下,大模型的回答结果更加有效、更符合我们期望,同时具备了一定的创造性!
注意事项
资源要求:运行大型语言模型需要一定的内存或显存。请确保您的计算机满足Ollama和所选模型的资源要求。
网络问题:在下载模型时,可能会遇到网络问题导致下载速度缓慢或失败。此时可以尝试重启电脑或重启Ollama服务来解决问题。
模型选择:根据自己的需求和预算选择合适的模型。免费的开源模型可能适合个人学习或小型项目,而付费的商用模型则可能提供更高的性能和准确性。
通过以上步骤,您可以将MaxKb 与Ollama成功结合,并利用这一强大的组合进行智能对话和文档处理。无论是个人学习还是企业团队协作,这一解决方案都将为您提供极大的便利和效率提升。
相关文章:
[开源]MaxKb+Ollama 构建RAG私有化知识库
MaxKbOllama,基于RAG方案构专属私有知识库 关于RAG工作原理实现方案 一、什么是MaxKb?二、MaxKb的核心功能三、MaxKb的安装与使用四、MaxKb的适用场景五、安装方案、 docker版Docker Desktop安装配置MaxKb安装和配置 总结和问题 MaxKB 是一款基于 LLM 大…...
迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试
将编译好的镜像全部进行烧写,镜像在源码根目录 out/rk3568/packages/phone/images/目录下。 烧写完成之后,在调试串口查看打印日志,如下图所示: 然后打开 hdc 工具,运行测试程序,输入“led_test 1”&…...
将Mac上Python程序的虚拟环境搬到Windows
1. 导出Mac上Python虚拟环境的依赖 cd py && source venv/bin/activate && pip freeze > requirements.txt 2. 在Windows上创建一个新的虚拟环境 python -m venv venv 3. 激活虚拟环境 venv\Scripts\activate 4. 安装依赖 pip install -r requiremen…...
大语言模型评价 怎么实现去偏见处理
大语言模型评价 怎么实现去偏见处理 在训练大语言模型(LLMs)时,去偏处理对于避免模型学习到带有偏见的模式至关重要,以下从数据处理、模型训练、评估监测三个阶段介绍具体实现方法,并结合招聘场景进行举例说明: 数据处理阶段 数据清洗:仔细审查并剔除包含明显偏见的训练…...
3.React 组件化开发
react:版本 18.2.0node: 版本18.19.1脚手架:版本 5.0.1 一、类组件 (一) 一个干净的脚手架 【1】使用已经被废弃的 CRA (create-react-app) create-react-app 已经被废弃,且目前使用会报错,官方已经不推荐使用&…...
19vue3实战-----菜单子树的展示
19vue3实战-----菜单子树的展示 1.实现目标2.实现思路3.实现步骤3.1新建config配置文件3.2封装组件3.3使用组件 1.实现目标 如上,以上效果的难点是“在表格里面实现树形结构”。可以用element-plus框架中的table作为辅助: 可以自己查看文档了解怎么使用。 2.实现思路 上面的…...
【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…...
JDK 17 和 JDK 21 在垃圾回收器(GC)上有什么优化?如何调整 GC 算法以提升应用性能?
JDK 17 和 JDK 21 在垃圾回收器(GC)上有什么优化?如何调整 GC 算法以提升应用性能? 本文将从 JDK 17 与 JDK 21 的垃圾回收改进出发,结合代码示例解析优化方案,并提供实际项目中的调优策略,帮助…...
CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)
代码地址:CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据) CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机和环境问题的日…...
kotlin中expect和actual关键字修饰的函数作用
在 Kotlin 多平台编程中,expect 和 actual 关键字用于定义跨平台的抽象和具体实现。这种机制允许开发者声明一个平台无关的接口或函数签名(使用 expect),然后在每个目标平台上提供具体的实现(使用 actual)。…...
鸿蒙音视频播放器:libwlmedia
libwlmedia 跨平台播放器wlmedia现在已经支持了鸿蒙(Harmony)平台了,SDK插件地址:libwlmedia 一、接入SDK 1.1 导入SDK ohpm i ywl5320/libwlmedia1.2 添加权限(可选) 如果需要播放网络视频,需要添加网络权限 #m…...
【devops】 Git仓库如何fork一个私有仓库到自己的私有仓库 | git fork 私有仓库
一、场景说明 场景: 比如我们Codeup的私有仓库下载代码 放入我们的Github私有仓库 且保持2个仓库是可以实现fork的状态,即:Github会可以更新到Codeup的最新代码 二、解决方案 1、先从Codeup下载私有仓库代码 下载代码使用 git clone 命令…...
CEF132编译指南 MacOS 篇 - 构建 CEF (六)
1. 引言 经过前面一系列的精心准备,我们已经完成了所有必要的环境配置和源码获取工作。本篇作为 CEF132 编译指南系列的第六篇,将详细介绍如何在 macOS 系统上构建 CEF132。通过配置正确的编译命令和参数,我们将完成 CEF 的构建工作…...
mysql大数据量分页查询
一、什么是MySQL大数据量分页查? MySQL大数据量分页查是指在使用MySQL数据库时,将大量数据分成多个较小的部分进行显示,以提高查询效率和用户体验。分页查询通常用于网页或应用程序中,以便用户能够逐步浏览结果集。 二、为什…...
计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
尚硅谷爬虫note003
一、函数 1. 函数的定义 def 函数名(): 代码 2.函数的调用 函数名() 3. 定义参数(不调用函数不执行) def sum(a,b) #形参 c a b print(c&…...
【逆向工程】破解unity的安卓apk包
先了解一下普通apk包的逆向方法(无加密或加壳) 开发环境: 操作系统:windows 解apk包 下载工具:apktool【Install Guide | Apktool】按照文档说的操作就行,先安装java运行时环境【我安装的是jre-8u441-wind…...
稠密架构和稀疏架构
稠密架构和稀疏架构 flyfish 稠密架构 参数使用方面:稠密架构中的大部分参数在每次计算时都会被使用。也就是说,对于输入的每一个样本,模型的所有或大部分参数都会参与到计算过程中。计算特点:计算密集,需要对大量的…...
LeetCode --- 436周赛
题目列表 3446. 按对角线进行矩阵排序 3447. 将元素分配给有约束条件的组 3448. 统计可以被最后一个数位整除的子字符串数目 3449. 最大化游戏分数的最小值 一、按对角线进行矩阵排序 直接模拟,遍历每一个斜对角线,获取斜对角线上的数字,排…...
用easyExcel如何实现?
要使提供的 ExcelModelListener 类来解析 Excel 文件并实现批量存储数据库的功能,需要结合 EasyExcel 库来读取 Excel 数据。具体来说,可以使用 EasyExcel.read() 方法来读取 Excel 文件,并指定 ExcelModelListener 作为事件监听器。 下面是…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
【多线程初阶】单例模式 指令重排序问题
文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...
