Windows 平台本地部署大模型构建知识库
本文介绍了在 Windows 平台上利用 Ollama 和 FastGPT 搭建本地知识库的完整流程。通过配置 Python 环境、WSL2 子系统及 Docker,实现本地大模型(如 Llama3)与向量数据库的私有化部署。方案涵盖 OneAPI 桥接配置、知识库数据导入及外网访问设置,确保数据安全性与查询准确性。同时提供了常见问题的排查指南及硬件配置建议,帮助用户优化本地部署体验。

本文介绍了在 Windows 平台上利用 Ollama 和 FastGPT 搭建本地知识库的完整流程。通过配置 Python 环境、WSL2 子系统及 Docker,实现本地大模型(如 Llama3)与向量数据库的私有化部署。方案涵盖 OneAPI 桥接配置、知识库数据导入及外网访问设置,确保数据安全性与查询准确性。同时提供了常见问题的排查指南及硬件配置建议,帮助用户优化本地部署体验。

大模型迅猛发展的今天,知识的更新日新月异。如果你苦于知识文本繁杂,使用查询的时候又无从下手,可以考虑使用大模型技术来帮助你检索查询所需的知识点。对有文件内容安全性考虑的用户,可以部署本地化的大模型以解决当前需求。
现阶段有多种构建方式:
在这之前需要先安装 Python。由于大部分大模型基于 Python 语言开发,所以对于 Python 应用程序所需的软件和工具的集合,也就是依赖环境,应当尽量保持在最新版本。
注意点:
python 指令,会跳转 WindowsApps;或者在 Windows CMD 命令行窗口(尽量使用管理员权限)运行 pip 指令,提示不是内部或外部命令,都表示环境变量未配置。; 分隔。在命令行窗口使用以下指令,待指令运行完成未出现红色错误提醒就是更新成功。
python.exe -m pip install --upgrade pip
因为 Docker、FastGPT 及各类数据库等,需要在 Linux 环境下运行,所以要在 Windows 系统上先安装 Linux 系统。
Windows Subsystem for Linux(简称 WSL),Windows 下的 Linux 子系统,是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件(ELF 格式)的兼容层。可以简单理解为可以在 windows 系统下操作控制的本地 Linux 子系统的工具。
注意点:
systeminfo 指令查看虚拟化情况。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 开启情况。
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
设置完成后重启设备,windows 功能生效。
6. 安装 Linux,推荐在 Windows CMD 命令行窗口中使用 wsl --install 指令进行安装。
7. 安装完成后 Linux 指令需要在 Ubuntu 打开的命令行中运行。
Ollama 是一个专为在本地环境中运行和定制大型语言模型而设计的工具。它提供了一个简单而高效的接口,用于创建、运行和管理这些模型,同时还提供了一个丰富的预构建模型库,可以轻松集成到各种应用程序中。
Ollama 下载链接可在官网获取。下载完 Ollama 后无脑下一步安装。
Ollama 默认的大模型安装位置为 C 盘的 C:\Users\<username>\.ollama\models,更换安装位置需在环境变量中进行配置。此电脑 -> 属性 -> 高级系统设置 -> 环境变量。在环境变量的系统变量中添加 OLLAMA_MODELS,并为其设置目录值(不需要到文件夹下创建文件,直接在值中设置盘符和文件夹名称,例如 F:\OllamaModels),重启设备后,会自动创建文件夹,且模型下载安装位修改成功。
安装完成后在 Ollama 官网中选择所需要的大模型,复制指令在 Windows CMD 命令行窗口运行。等待下载安装完成后,本地模型就部署成功,可以在控制台和模型对话检测模型功能。
Ctrl+D 和在 Windows CMD 命令行窗口输入 Bye 可以退出与大模型的对话。
测试项目中使用的模型:
Docker 是一个开源的应用容器引擎。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
因为部分原因,Docker 需要使用魔法下载。这里提供的是 DockerDesktop 版本,如果需要使用 WSL 在 Linux 安装运行 Docker,参考官方文档。
因为网络上的大多数能够下载的 Docker Desktop 版本为 4.1.1,会与后续需要安装运行的 pg 向量数据库不兼容,所以建议使用较新版本,以解决该问题。
运行下载文件,按提示进行安装。运行 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 是用于 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
对于 docker-compose.yml 和 config.json 需要修改部分配置。
在修改配置前,如果你是使用 VSCode 的用户可以对 Wsl 进行功能扩展,使用 Vscode 进行文件新增和修改。在 Liunx 命令行(windows 运行 ubuntu 后出现的命令行窗口)中运行下面两条指令,确保 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 文件夹中。
需要找到 mongo 的配置位置,修改下载的版本。
image: mongo:5.0.18
将镜像版本改为 5.0.18,如果 Docker 中配置的本地镜像失效,可以使用阿里云的本地镜像。
需要找到 fastgpt 的配置位置,修改下面内容。
修改 OPENAI_BASE_URL 的内容。
- OPENAI_BASE_URL=http://host.docker.internal:3001/v1
修改 CHAT_API_KEY,这里填写后续在 OneApi 中设置的秘钥。
如果使用 latest 版本报错 403,xxx 向量模型没有权限 403,就修改下版本为早一点的版本。v0.6.4。
llmModels 是本地使用的大模型名称,需要与 OpenAI 中标准名一致,可以在 Windows CMD 命令行窗口中输入 ollama list,查询 ollama 中的模型,里面提供的则是模型标准名。
vectorModels 是本地使用的向量模型名称。
在 Linux 命令行(windows 运行 ubuntu 后出现的命令行窗口)中输入 cd fastgpt 命令打开 docker-compose.yml 文件所在文件夹。
使用 ls 查看文件夹下所有的文件,确认是否有 docker-compose.yml 和 config.json 文件。
在 Linux 命令行中输入 docker-compose up 后,Docker 开始使用 docker-compose 文件自动装配需要的镜像,待出现下面情况表示镜像装配完成并运行。
还可以通过 Docker Desktop 查看镜像运行情况。
注意点:
docker-compose up 指令。docker-compose up 指令。前端的 FastGpt 和后端的大模型、向量模型等都是通过 OneApi 进行桥接的。所以需要在 OneApi 上进行相应的配置。
localhost:3001(docker-compose 文件中映射的端口)进入 OneApi 主页。选择渠道 -> 添加新的渠道来新增大模型访问渠道。http://host.docker.internal:11434,这个是 Docker 内部访问外部的地址。特别要注意 host.docker.internal 是一个开发功能,只在 Docker Desktop 有效。
填写完成后提交。永不过期。设为无限额度。
设置完成后进行提交。
回到令牌界面,在操作栏中复制刚刚设置的令牌。将其中填入前面新增的大模型渠道的秘钥中后提交。
在渠道界面对配置好的渠道进行测试,出现测试成功的弹窗,这样 OneApi 就配置完成了。
此时不能掉以轻心,还需要回去填一个坑。在 docker-compose 文件的 FastGPT 中需要设置刚刚配置好的秘钥,这样 FastApi 才能够通过 OneApi 访问本地大模型。操作方法一致但不需要密钥配置环节,所以在创建渠道时,可以直接将秘钥设为 1234。
进行测试时提示 400 错误,不用担心,是正常的,说明通信成功。
localhost:4000 进入 FastGpt 主页。默认账号:root 密码:1234希望查询的结果更加的准确,则可以添加结果重排功能。需要再 OneApi 中增加 Reranker 模型,在 FastGpt 中勾选结果重排功能。 使用结果重排需要消耗更多性能,搜索时间加长,属于是使用性能和时间换准确性。
使用 Ngrok 工具实现内网穿透,让用户可以通过 Ngrok 提供的地址通过外网访问本地知识库,且本地知识库需要保持运行状态。此方法并非完全安全,可选择使用。
Chocolatey 是一种软件包管理解决方案,可以通过 PowerShell 命令行安装软件。在 Windows 操作系统上实现从安装到升级和卸载的整个软件生命周期的自动化。
使用管理员权限打开 PowerShell 并运行下面的命令:
$env:ChocolateyInstall = 'D:\Chocolatey'
[Environment]::SetEnvironmentVariable('ChocolateyInstall', $env:ChocolateyInstall, 'Machine')
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'))
choco -v
显示版本成功,则表示安装完成。
使用管理员身份运行 Windows 命令提示符窗口,在命令行中运行下方指令运行结束后,安装完成。
choco install ngrok
安装完成后,还需要在 Ngrok 官网申请一个身份令牌,先注册一个 Ngrok 账号。
登录账号,在 Your Authtoken 中的 CommandLine,(特别重要)选择 Show Authtoken,命令行中的代码才会显示你的用户 token 此时复制命令,在 Windows CMD 命令行窗口中运行。
运行结束后,在 Windows CMD 命令行窗口中运行以下命令,也就是给本地 fastGpt 生成可在外网访问的地址。
ngrok http http://localhost:4000
运行结束后显示外网地址,就可以通过当前地址访问本地的知识库了。
以上就是使用本地部署大模型构建本地知识库的完整方法。示例项目使用的设备配置为:
整体来说还是比较吃力的,如果需要流畅运行内存、显存及显卡性能还得提高。
OPENAI_BASE_URL 指向正确,且 CHAT_API_KEY 已在 FastGPT 配置中同步更新。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online