搭建本地私有知识问答系统:MaxKB + Ollama + Llama3 (wsl网络代理配置、MaxKB-API访问配置)

搭建本地私有知识问答系统:MaxKB、Ollama 和 Llama3 实现指南

引言

在当今信息爆炸的时代,构建一个本地私有知识问答系统可以帮助组织和个人高效管理和利用知识。本文将详细介绍如何在本地 Windows 环境下,利用 MaxKB、Ollama 和 Llama3 搭建一个功能强大的私有知识问答系统。

MaxKB+Ollama+Llama 3 Start building

MaxKB 简介:

MaxKB 是一款基于 LLM 大语言模型的开源知识库问答系统,旨在成为企业的最强大脑,支持从多种数据源导入和管理知识。。

  • 开箱即用:支持直接上传文档、自动爬取在线文档,支持文本自动拆分、向量化、RAG(检索增强生成),智能问答交互体验好;
  • 模型中立:支持对接各种大语言模型,包括本地私有大模型(Llama 3 / Qwen 2 等)、国内公共大模型(通义千问 / 智谱 AI / 百度千帆 / Kimi / DeepSeek 等)和国外公共大模型(OpenAI / Azure OpenAI / Gemini 等);
  • 灵活编排:内置强大的工作流引擎,支持编排 AI 工作过程,满足复杂业务场景下的需求;
  • 无缝嵌入:支持零编码快速嵌入到第三方业务系统,让已有系统快速拥有智能问答能力,提高用户满意度。

(1.1 ~ 1.3三种方法三选一即可)

1.1、docker部署 MaxKB(方法一)

1.1.1、启用wls或是开启Hyper
  • 允许创建和管理虚拟机,且允许用户在 Windows 上运行原生的 Linux 命令行工具和应用程序,而无需使用虚拟机或双重启动系统。

方案一:安装wls2 并启用 (Windows 10、Windows 11 ) √

# 输入以下命令来启用 WSL:
wsl --install

# 如果已经启用但未安装特定版本,可以使用如下命令启用 WSL 2:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 设置 WSL 2 作为默认版本:
wsl --set-default-version 2

可以通过任务管理器 ‘performance CPU’ 界面查看是否开启

  • 使用 WSL 2 的优势

    • 更高的性能:与 Hyper-V 相比,WSL 2 提供了更高的文件系统性能。
    • 完全的系统调用兼容性:WSL 2 使用真正的 Linux 内核,确保了对 Linux 系统调用的完全兼容。
    • 更好的资源利用:WSL 2 更有效地利用主机资源。

方案二:开启Hyper-V (window 7)

在这里插入图片描述

1.1.2、安装docker

下载 windows 版 docker
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如果docker不是自启动需要手动修改下

在这里插入图片描述

1.1.3、docker部署 MaxKB (Max Knowledge Base)

部署 maxkb

# 我们可以指定本地文件夹挂载,这样可以便于我们维护配置
docker run -d --name=maxkb -p 8080:8080 -v C:\Leojiang\leojiangDocument\AI\maxkb:/var/lib/postgresql/data cr2.fit2cloud.com/1panel/maxkb
MaxKB 默认登录信息
http://目标服务器 IP 地址:目标端口

用户名:admin
默认密码:MaxKB@123..

1.2、使用1Panel 部署 MaxKB(方法二)

选择使用 1Panel 部署,安装完后在1Panel中搜索MaxKB安装即可,此处不再赘述。

1.3、wsl启用Linux,在Linux中使用docker 部署 MaxKB(方法三,本文选用)√

某些公司电脑禁用docker desktop可以选用此方法

  • Docker Desktop从2021年8月31日开始收费。‌Docker Desktop的转变是为了提供更好的服务和支持,‌但这也意味着对于那些不符合免费使用条件的用户,‌需要支付一定的费用。‌具体来说,‌Docker Desktop现在被称为Docker Personal,‌主要免费提供给小型企业、‌个人、‌教育机构和非商业开源项目使用。‌对于商业用户,‌特别是那些员工超过250人或年收入超过1000万美元的公司,‌使用Docker Desktop需要进行付费订阅
1.3.1、启用并设置 wls2
# 检查是否WSL运行 distributions
#wsl --list --running
# 检查 WSL 状态:
#wsl --list --verbose
# 输入以下命令来启用 WSL:
#wsl --install

# 查看商店提供了哪些发行版
wsl --list --online

# 启用Windows子系统,可以使用如下命令启用 WSL 2:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 设置 WSL 2 作为默认版本:
wsl --set-default-version 2
1.3.2、安装ubuntu
wsl --install -d Ubuntu

安装后报错

WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel

需要更新解决

wsl.exe --update
1.3.3、登录、退出 ubuntu
# cmd中直接输入ubuntu即可登录
ubuntu

FYI:登出ubuntu(跳过)

# 登出ubuntu
exit
# or
logout
1.3.4、配置网络 (如果可以连接网络,跳过 1.3.4 即可)

测试网络连接

ping 8.8.8.8
curl https://www.baidu.com
# 如果有代理,可以指定代理测试
curl --proxy <proxy_url> --tlsv1.2 -v https://www.google.com
1)如果无法联网,请配置修改DNS地址可临时生效:
# 修改 /etc/resolv.conf 添加如下DNS
# 这两个 IP 地址是 Google 提供的公共 DNS 服务器
nameserver 8.8.8.8
nameserver 8.8.4.4

# 查看windows主机使用的DNS,配置DNS和宿主机一致即可
打开 设置,点击 网络和 Internet。最下方有网络的配置详情
# or 打开powershell 
输入Get-DnsClientServerAddress 或ipconfig /all获取

生效DNS

# 重启生效DNS
sudo systemctl restart systemd-resolved

# 使用 resolvectl 检查 DNS 设置
resolvectl status

# 配置DNS后还是无法联网可以尝试清理DNS的缓存
sudo resolvectl flush-caches
2)配置永久生效

禁用 WSL 自动生成 resolv.conf,否则开机会自动覆盖。重启再配置/etc/resolv.conf 即可。

cat /etc/wsl.conf
# 添加如下两行
[network]
generateResolvConf = false
1.3.5、登录Ubuntu 系统中安装docker

安装docker

①设置Docker的apt存储库。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl openssl
sudo install -m 0755 -d /etc/apt/keyrings
# 添加 Docker 官方 GPG 密钥
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
②安装Docker包。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

FYI: 如果无法下载更新请配置代理

# --- 方法一 --- 
sudo vim /etc/environment
# 添加如下行
export http_proxy="http://your_proxy:port"
export https_proxy="http://your_proxy:port"
export ftp_proxy="http://your_proxy:port"
export no_proxy="localhost,127.0.0.1,::1"
# 保存退出并生效
source /etc/environment

# --- 方法二 ---
# 或是配置 ~/.profile 都可以
export http_proxy="http://your_proxy:port"
export https_proxy="http://your_proxy:port"
export ftp_proxy="http://your_proxy:port"
export no_proxy="localhost,127.0.0.1,::1"
# 保存退出并生效
source ~/.profile
③给予当前用户docker执行权限。
sudo gpasswd -a <username> docker
1.3.6、下载MaxKB
sudo docker run -d --name=maxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data cr2.fit2cloud.com/1panel/maxkb

安装成功后,可通过浏览器访问 MaxKB:

http://目标服务器 IP 地址:目标端口

默认登录信息
用户名:admin
默认密码:MaxKB@123..

如果电脑重启后 MaxKB exited,我们可以手动启 docker start containerID

2、部署 OLama

Ollama 是一个自然语言处理(NLP)平台,提供了一系列的预训练模型和工具,便于实现各种NLP任务。

下载OLama

注意如若你的选择是 window 部署,要求必须window10 以上才支持。

在这里插入图片描述

Linux 部署 OLlama (本文选用)√

curl -fsSL https://ollama.com/install.sh | sh

查看信息

ollama serve

listen tcp 127.0.0.1:11434: bind: address already in use

Ollama supports a list of models

ModelParametersSizeDownload
Llama 38B4.7GBollama run llama3
Llama 370B40GBollama run llama3:70b
Phi 3 Mini3.8B2.3GBollama run phi3
Phi 3 Medium14B7.9GBollama run phi3:medium
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
Mistral7B4.1GBollama run mistral
Moondream 21.4B829MBollama run moondream
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
LLaVA7B4.5GBollama run llava
Solar10.7B6.1GBollama run solar

FYI:查看端口

# netstat现在已经被 ss 工具所替代
ss -tunlp

3、选择Llama3进行部署

Llama 3 是基于 Transformer 架构的大型语言模型,强大的文本生成能力,旨在处理各种自然语言处理任务,
如文本生成、翻译、摘要、问答等。它通过大规模预训练和精调,能够在广泛的领域中提供高质量的语言理解和生成能力,可以用于问答、对话生成等任务。

我们可以在OLama的页面找到支持的模型,我们选择 llama3 作为我们的LLM

在这里插入图片描述

本文选用的是 llama3:8B,个人使用调试是可以满足需求的,当然读者服务器足够好也可以选择70B

# 默认下载的就是llama3:8B
ollama run llama3

测试

在这里插入图片描述

FYI:ubuntu上只能输入英文,如果你是在window上安装的,你可以使用 chcp进行切换,进行中文交流。

chcp # 查看当前的代码页
chcp 936 # 切换成中文

常见的代码页
437: 美国英语(原始 MS-DOS)
936: 简体中文(GBK)
950: 繁体中文(Big5)
65001: UTF-8(Unicode)

4、mapping MaxKB + OLlama + Llama 3

4.1、我们可以先导入一个个人的知识库

在这里插入图片描述

选择智能导入即可
在这里插入图片描述

4.2、添加我们下载好的模型

根据我上面安装的配置即可

模型名称:llama3

基础模型:llama3 (要和我们安装的 llama 名字一致)

API域名:http://:11434

在这里插入图片描述

4.3、如果API域名无效

MaxKB无法连接ubuntu中的ollama,

1)可以在ollama中添加 Environment="OLLAMA_HOST=0.0.0.0" 允许所有ip可以访问,如下配置:(方法一 本文选用)√

sudo vim /etc/systemd/system/ollama.service

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
Environment="OLLAMA_HOST=0.0.0.0"

[Install]
WantedBy=default.target

重新加载生效

sudo systemctl daemon-reload
sudo systemctl restart ollama

2)方法二(跳过)

可以在我们docker启动MaxKB时传入ollama的环境变量,eg:

# docker run -e OLLAMA_HOST=<your server ip> <your-docker-image>
# eg:
sudo docker run -d --name=maxkb -p 8080:8080 -e OLLAMA_HOST=172.20.48.1 -v ~/.maxkb:/var/lib/postgresql/data cr2.fit2cloud.com/1panel/maxkb

如果你使用的是docker-compose.yaml,可以像如下加入参数即可

version: '3.8'

services:
  maxkb:
    image: cr2.fit2cloud.com/1panel/maxkb
    container_name: maxkb
    ports:
      - "8080:8080"
    environment:
      - OLLAMA_HOST=172.20.48.1
    volumes:
      - ~/.maxkb:/var/lib/postgresql/data
      - /etc/hosts:/etc/hosts:ro
    restart: always

OLlama环境变量配置文件参考

4.4、创建问答系统应用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

让我们问一个知识库中的知识,做一个测试
在这里插入图片描述

(通过本文的指南,你可以在 Windows 环境下成功搭建一个基于 MaxKB、Ollama 和 Llama3 的本地私有知识问答系统。这个系统可以帮助你高效管理和利用知识,提高工作效率。希望这篇文章能对你有所帮助!)



参考地址汇总

superclue 国内评测

huggingface 国外评测

Llama3也可以从huggingface中找相关微调好的下载

OLlama

MaxKB git

MaxKB 文档

特性LangChainOllama
主要用途构建复杂语言模型驱动的应用程序简化语言模型的部署和管理
模型支持多个供应商的模型(OpenAI、Hugging Face 等)主要聚焦于特定供应商的模型
记忆管理提供对话记忆管理主要关注模型调用和管理
工具集成支持集成多种外部工具和 API主要提供简化的部署和管理工具
工作流管理支持构建和管理复杂工作流提供基本的模型调用和管理功能
适用场景聊天机器人、文本生成、数据分析等快速原型开发、模型管理、低延迟服务
开发者友好性提供丰富的工具和接口提供简化的 API 和 SDK
### 关于 Ollama MaxKB 的 IT 技术资料 #### 基础概念介绍 MaxKB 是一款基于大型语言模型 (LLM) 构建的知识库问答系统,旨在通过集成多种功能模块来实现高效的信息管理和智能交互[^1]。 #### 实践环境配置 在实践中,考虑到大多数用户的计算资源限制,选择了 CPU 版本的大规模预训练模型 qwen2:7b 来部署 MaxKB 系统。尽管如此,未来仍计划探索 GPU 加速下的性能优化路径,以进一步提高响应效率和服务质量[^2]。 #### 功能特性概述 该平台不仅支持传统意义上的知识存储与检索操作,还包括但不限于以下几个方面: - **知识库管理**:允许用户创建、编辑以及维护结构化的知识点集合; - **文档管理**:提供了便捷的方式来进行文件上传下载及其元数据标注; - **问答交互**:利用自然语言处理技术解析并且回答来自终端使用者提出的各类疑问; - **知识图谱构建**:帮助建立实体间的关系网络以便更直观地理解复杂领域内的关联情况; - **多模态输入输出接口**:除了文字形式外也兼容音频信号作为沟通媒介之一。 #### 应用案例分享 为了便于更多开发者了解这套解决方案的实际应用场景,官方推出了名为 "DataEase 小助手" 的在线演示项目。该项目依托于 MaxKB 核心能力实现了针对特定业务场景下问题解答的服务,并成功集成了主流 BI 工具 DataEase 中供公众试用[^3]。 #### 故障排查指南 当遇到诸如 `Docker` 容器内部无法连接至外部 `Ollama` API 接口的问题时,这通常是由于默认情况下容器内网卡所绑定的是自身的回环地址而非宿主机的真实 IP 地址所致。因此建议调整服务端监听策略或是修改客户端请求目标为可被外界识别的有效域名/IP 地址组合[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值