大模型迅猛发展的今天,知识的更新日新月异。如果你苦于知识文本繁杂,使用查询的时候又无从下手,你可以考虑使用大模型技术来帮助你检索查询所需的知识点。对有文件内容安全性考虑的用户,可以部署本地化的大模型已解决当前需求。
现阶段有多种构建方式
1.Ollama+AnythingLLM :这种方式部署简单,可以迅速上手,但是AnythingLLM使用默认的向量模型性能一般,所以在使用知识库查询时,经常容易出现无法查询到相关信息的情况。
2.Ollama+FastGpt:这种方式是本教程教学的构建方式,是现阶段搭建本地知识库最好的选择。因为可以自定义向量模型等各类所需要的模型,查询结果质量较好,但是缺点就是搭建过程繁琐。
使用Ollama+FastGpt构建本地知识库
环境配置
Python依赖环境
在这之前需要先安装python,由于大部分大模型基于Python语言开发,所以对于 Python 应用程序所需的软件和工具的集合,也就是依赖环境,应当尽量保持在最新版本。
对于Python的安装可以参考这篇博文(先看下面的注意点)
超详细的Python安装和环境搭建教程_python安装教程-CSDN博客
注意点
1.Python安装时,记得勾选pip(Python 中的标准库管理器),这是用于更新所需依赖环境的工具。
2.Python安装时,有时候即使勾选了Add python to PATH也会出现环境变量配置不成功的问题。在命令行窗口运行python指令,会跳转WindowsApps;或者在Windows CMD命令行窗口(尽量使用管理员权限)运行pip指令,提示不是内部或外部命令,都表示环境变量未配置。
3.环境变量作用是让用户可以在Windows CMD命令行窗口或PowerShell中直接运行应用程序的指令。配置环境变量方法:此电脑-> 属性 -> 高级系统设置 -> 环境变量,用户变量和系统变量都进行设置。
用户变量:
在Path中新建两个变量,一个是Python安装目录路径,另一个是Python目录下Scripts文件夹的路径。
系统变量:
在Path的最后添加两个变量,一个是Python安装目录路径,另一个是Python目录下Scripts文件夹的路径,使用英文状态下;分隔。
4.配置Python环境变量时候,用户变量需要保证python的路径配置要在WindowsApps的路径配置上,不然还是会按顺序先跳转WindowsApps。
更新Python依赖环境
在命令行窗口使用以下指令,待指令运行完成未出现红色错误提醒就是更新成功。
python.exe -m pip install --upgrade pip
安装配置WSL2
因为Docker、Fastgpt及各类数据库等,需要在Linux环境下运行,所以要在Windows系统上先安装linux系统。
Windows Subsystem for Linux(简称WSL),Windows下的Linux子系统,是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。可以简单理解为可以在windows系统下操作控制的本地Linux子系统的工具。
对于WSL的安装可以参考这篇博文及微软官方教程(先看下面的注意点):
Windows 10 安装配置WSL2(ubuntu20.04)教程 超详细_win10安装wsl2-CSDN博客
注意点
1.在安装Wsl前需要确保当前设备已经开启了虚拟化,可以通过两种方式查询:
[1]在任务管理器->性能->Cpu中查看虚拟化情况。
[2].在Windows CMD命令行窗口使用systeminfo指令查看虚拟化情况。
2.查询未启用虚拟化,需要先在Bios中开启虚拟化功能。
一般情况下,主板默认设置时不开启虚拟化功能的。所以需要在开机时,进入主板Bios进行设置。我的电脑时联想拯救者,通过F2可以进入主板Bios,其他型号的电脑可以网上查询进入Bios的方法。
AMD的cpu在Bios设置中将AMD SVM Technology设置为Enable,重新开机则开启了电脑的虚拟化功能。
3.为Windows启用Hyper-V功能
在控制面板-> 程序 ->程序与功能 ->启用或关闭Windows功能中找到Hyper-V,进行勾选后会自动系统会自动安装Hyper-V。
4.如果你的系统为Window10/11 家庭版,在Windows功能中是没有Hyper-V的,则需要手动安装。
创建空白文本文件,将下方命令粘贴保存,并将文件后缀名改为.bat,文件则变为批处理脚本,右键以管理员身份运行即可。
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
pause
安装完成后,使用前面方法验证虚拟化与Hyper-V开启情况。
参考博文 : Windows 10 |VMware开启虚拟化的最全面说明_vmware虚拟化引擎-CSDN博客
Windows 11 家庭版和专业版:启用 Hyper-V 虚拟化平台的步骤_window打开hyper-v-CSDN博客
5.内核更新包安装出现This update only applies to machines with the windows Subsytem for Linux错误
需要确保适用于Linux启用Windows子系统和虚拟机平台两个功能在WIndows功能中启用,可以在Windows CMD命令行窗口中使用以下指令开启。
适用于Linux启用Windows子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
或者通过winsows功能中手动启动
设置完成后重启设备,windows功能生效。
6.安装Linux,推荐在Windows CMD命令行窗口中使用wsl --install指令进行安装。
7.安装完成后Linux指令需要在Ubuntu打开的命令行中运行。
大模型安装
安装本地部署开源大模型的工具Ollama
Ollama是一个专为在本地环境中运行和定制大型语言模型而设计的工具。它提供了一个简单而高效的接口,用于创建、运行和管理这些模型,同时还提供了一个丰富的预构建模型库,可以轻松集成到各种应用程序中。
Ollama下载链接: Download Ollama on Windows
下载完Ollama后无脑下一步安装。
Ollama默认的大模型安装位置为C盘的C:\Users\<username>\.ollama\models,更换安装位置需在环境变量中进行配置。此电脑-> 属性 -> 高级系统设置 -> 环境变量
在环境变量的系统变量中添加OLLAMA_MODELS,并为其设置目录值(不需要到文件夹下创建文件,直接在值中设置盘符和文件夹名称,例如F:\OllamaModels),重启设备后,会自动创建文件夹,且模型下载安装位修改成功。
安装完成后在Ollama官网中选择所需要的大模型,复制指令在Windows CMD命令行窗口运行。
等待下载安装完成后,本地模型就部署成功,可以在控制台和模型对话检测模型功能。
Ctrl+D和在Windows CMD命令行窗口输入Bye可以退出与大模型的对话。
大模型下载链接:library (ollama.com)
测试项目中使用的模型:
大模型(llmModels):llama3.1:latest
向量模型(vectorModels):znbang/bge:large-en-v1.5-f32
Docker安装
Docker 是一个开源的应用容器引擎。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
安装
因为部分原因,Docker需要使用魔法下载。这里提供的是DockerDesktop版本,如果需要使用WSL在Linux安装运行Docker,参考下面的文章:
Install Docker in WSL 2 without Docker Desktop — Nick Janetakis
因为网络上的大多数能够下载的Docker Desktop版本为4.1.1,会与后续需要安装运行的pg向量数据库不兼容,所以这里提供4.30.0版本,以解决该问题。
Docker Desktop本地下载地址:链接:pan.quark.cn/s/51feb50c6… 提取码:8S7R
运行下载文件,按提示进行安装。运行Docker Desktop。
在拉取Docker资源时候,考虑到网络环境差异问题,需要给Docker Desktop配置国内镜像的地址,可以极大提高Docker内镜像资源的下载速度。配置方法如下图:
在Docker Engine中将下面的国内镜像地址与设置中的registry-mirrors进行替换。
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"
]
配置docker-compose.yml和config.json文件
docker-compose.yml是用于Docker容器内所需组件自动化下载安装配置的文件,config.json是用于配置本地知识库所需要的大模型配置。
官方的配置文件下载方式如下:
mkdir fastgpt #在Linux创建fastgpt文件夹
cd fastgpt #打开fastgpt文件夹
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
# pgvector 版本(测试推荐,简单快捷)
curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml
# milvus 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-milvus.yml
# zilliz 版本
# curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-zilliz.yml
但是链接不稳定,下面提供本地的资源: 链接:pan.quark.cn/s/51feb50c6… 提取码:8S7R
使用本地资源,需要先在Linux系统中创建fastgpt文件夹
mkdir fastgpt #在Linux创建fastgpt文件夹
对于docker-compose.yml和config.json需要修改部分配置。
在修改配置前,如果你是使用VSCode的用户可以,对Wsl进行功能扩展,使用Vscode进行文件新增和修改。 在Liunx命令行(windows运行ubantu后出现的命令行窗口)中运行下面两条指令,确保WSL Linux 发行版缺少启动 VS Code 服务器所需的库加入Linux 发行版中。
sudo apt-get update
sudo apt-get install wget ca-certificates
运行结束后,在Liunx命令行运行 code .命令,会自动下载相关组件后跳转VSCode。
就可以在Linux系统中新增和修改文件了,将docker-compose.yml和config.json两个配置文件拖入前面创建fastgpt文件夹中。
参考微软官方文章:开始通过 WSL 使用 VS Code | Microsoft Learn
docker-compose.yml
mongo
需要找到mongo的配置位置,修改下载的版本。
image: mongo:5.0.18
将镜像版本改为5.0.18,如果Docker中配置的本地镜像失效,可以使用阿里云的本地镜像。
fastgpt
需要找到fastgpt的配置位置,修改下面内容。
修改OPENAI_BASE_URL的内容。
- OPENAI_BASE_URL=http://host.docker.internal:3001/v1
修改 CHAT_API_KEY,这里填写后续在OnaApi中设置的秘钥。
one api
如果使用latest版本报错403, xxx 向量模型没有权限 403,就修改下版本为早一点的版本。v0.6.4。
如果Docker中配置的本地镜像失效,可以使用阿里云的本地镜像。
config.json
llmModels是本地使用的大模型名称,需要与OpenAI中标准名一致,可以在Windows CMD命令行窗口中输入ollama list,查询ollama中的模型,里面提供的则是模型标准名。
vectorModels是本地使用的向量模型名称。
安装构建所需的镜像
在Linux命令行(windows运行ubuntu后出现的命令行窗口)中输入 cd fastgpt命令打开docker-compose.yml文件所在文件夹。
使用ls查看文件夹下所有的文件,确认是否有docker-compose.yml和config.json文件。
在Linux命令行(windows运行ubantu后出现的命令行窗口)中输入 docker-compose up 后,Docker开始使用docker-compose文件自动装配需要的镜像,待出现下面情况表示镜像装配完成并运行。
还可以通过Docker Desktop查看镜像运行情况。
注意点
1.这里可能会出现MySql启动失败的情况,并且报错显示端口已被占用。可以在任务管理器->进程中搜索mysql,将当前进程停止,再重新运行docker-compose up指令。
2.每次修改完配置文件保存后都需要重新运行docker-compose up指令。
配置本地大模型及知识库搭建
OneApi配置
前端的FastGpt和后端的大模型、向量模型等都是通过OneApi进行桥接的。所以需要在OneApi上进行相应的配置。
大模型配置
1.在浏览器中访问localhost:3001(docker-compose文件中映射的端口)进入OneApi主页。选择渠道 -> 添加新的渠道来新增大模型访问渠道。
2.进入渠道页面后,进行配置:
类型:因为我们使用Ollama管理大模型,这里直接选择Ollama。
名称:自行定义。
分组:可以直接使用默认。
模型:先清除所有模型,如果在下拉列表中没有你使用的模型类型,则在自定义模型中,填入模型名称(前面在ollama list中查询的模型名称)。
模型重定向:暂时可不做修改。
秘钥:先填写1234,后续在令牌中设定秘钥后,填写过来。
代理:填写http://host.docker.internal:11434,这个是Docker内部访问外部的地址。特别要注意host.docker.internal 是一个开发功能,只在 Docker Desktop 有效。
填写完成后提交。
3.进入令牌界面,新增令牌。
进入令牌界面后,进行配置:
名称: 自行定义。
模型范围:不需要限定模型的话可以不做填写。
IP限制:不需要限定IP的话可以不做填写。
过期时间:选择永不过期。
额度:选择 设为无限额度。
设置完成后进行提交。
回到令牌界面,在操作栏中复制刚刚设置的令牌。将其中填入前面新增的大模型渠道的秘钥中后提交。
在渠道界面对配置好的渠道进行测试,出现测试成功的弹窗,这样OneApi就配置完成了。
此时不能掉以轻心,还需要回去填一个坑。在docker-compose文件的FastGPT中需要设置刚刚配置好的秘钥,这样FastApi才能够通过OneApi访问本地大模型。
向量模型配置
操作方法一致但不需要密钥配置环节,所以在创建渠道时,可以直接将秘钥设为1234。
进行测试时提示400错误,不用担心,是正常的,说明通信成功。
FastGPT配置
1.在浏览器中访问localhost:4000进入FastGpt主页。默认账号:root密码:1234
2.登录进入FastGpt后,先创建知识库。
知识库创建完成后,对知识库导入相应的知识库数据。一共有三种方式:
手动数据集:直接将相应的知识一条一条录入。
文本数据集:可以通过上传文件,网页等方式导入信息。
表格数据集:根据fasGpt给出的CVS模板将知识录入表格后上传。
这里我们使用文本数据集的方式导入一份文件。
文件可以通过三种方式进行拆分:
直接拆分:将文本按一定规则进行拆分。(直接用这个)
增强处理:通过子索引以及模型生成相关问题和摘要。(商业版)
问答拆分:将文本按一定规则进行拆分,并通过Ai生成问答对。(商业版)
文章生成索引对,可以通过搜索测试检测知识库导入情况。
知识库导入成功后,就可以根据知识库搭建实时库问答式平台。
选定需要的大模型
选定需要关联的知识库
在参数配置中选择全文检索。如果使用语义检索只会检索与问题相关向量片段,在通过Ai增强生成答案,大模型不需要知道整篇文章的内容,速度快,但生成点的答案相对没那么准确。
在调试预览中对大模型进行提问,生成答案。因为配置问题生成答案的速度较慢。
测试无问题后,选择发布,就可以在聊天选项卡中进行聊天。
扩展
希望查询的结果更加的准确,则可以添加结果重排功能。需要再OneApi中增加Reranker模型,在FastGpt中勾选结果重排功能。
使用结果重排需要消耗更多性能,搜索时间加长,属于是使用性能和时间换准确性。
参考文章:
fastgpt最强AI知识库喂饭教程 - 逆行的狗 (auditdog.cn)
外网访问本地知识库
使用Ngrok工具实现内网穿透,让用户可以通过Ngrok提供的地址通过外网访问本地知识库,且本地知识库需要保持运行状态。此方法并非完全安全,可选择使用。
安装Chocolatey
Chocolatey 是一种软件包管理解决方案,可以通过PowerShell命令行安装软件。在 Windows 操作系统上实现从安装到升级和卸载的整个软件生命周期的自动化,能部署到任何有windows的地方(除了Nano),包括 Server.Core 和 Windows Docker 容器。
使用管理员权限打开PowerShell并运行下面的命令:
设置环境变量。
$env:ChocolateyInstall = 'D:\Chocolatey'
[Environment]::SetEnvironmentVariable('ChocolateyInstall', $env:ChocolateyInstall, 'Machine')
安装 Chocolatey。
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
安装完成后,在PowerShell中运行命令。
choco -v
显示版本成功,则表示安装完成。
参考文章: Chocolatey安装【超详细 下载 安装 卸载 更改默认软件安装位置】-CSDN博客
安装Ngrok
使用管理员身份运行Windows命令提示符窗口,在命令行中运行下方指令运行结束后,安装完成。choco install ngrok
安装完成后,还需要在Ngrok官网申请一个身份令牌,先注册一个Ngrok账号。
登录账号,在Your Authtoken中的CommandLine,(特别重要)选择Show Authtoken,命令行中的代码才会显示你的用户token此时复制命令,在Windows CMD命令行窗口中运行。
运行结束后,在Windows CMD命令行窗口中运行以下命令,也就是给本地fastGpt生成可在外网访问的地址。
ngrok http http://localhost:4000
运行结束后显示外网地址,就可以通过当前地址访问本地的知识库了。
总结
以上就是使用本地部署大模型构建本地知识库的完整方法。示例项目使用的设备配置为:
CPU :AMD Ryzen 7 4800H
GPU: NVIDIA GeForce RTX 2060 Max-Q(显存6G)
内存:16G
运行LLama3.1 8B 模型
整体来说还是比较吃力的,如果需要流畅运行内存、显存及显卡性能还得提高。