本地大模型部署

zotero是一个很好的论文管理工具,但是在日常科研工作中,我往往更喜欢将论文丢给AI让它帮助我理解,在此基础上,我查阅了相关的教程,希望实现通过本地部署的大模型帮助我构筑本地的知识库助手,这样更方便于论文管理与学习!
下述内容主要涉及:docker,ollama,ragflow。由docker部署ragflow,在ragflow中导入ollama部署的大模型,并在ragflow中构建本地知识库与智能体的构建。

准备工作

本人是用win系统以及wsl作为开发环境。在此基础上需要安装docker与ollama!
因此前置工作需要先自行安装wsl:

1. 开启虚拟化:

控制面板–>功能–>启用或关闭windows功能
勾选:虚拟机平台、适用于Linux的Windows子系统;hyper-V(视主板情况进行开启,建议开启)
开启功能

2. 安装

wsl --set-default-version 2

之后可以去windows商店自行下载Ubuntu
下载wsl

下载docker与ollama

docker下载链接:https://www.docker.com/products/docker-desktop
唯一需要注意的是由于一些因素,docker拉取镜像的时候需要配置镜像源:
docker配置

配置镜像源

将收集来的镜像源信息粘贴如下:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.lpanel.live",
    "https://docker.1ms.run"
  ]
}

ollama下载链接:https://ollama.com/download
ollama安装的时候需要配置系统环境变量:
win+Q:搜索“编辑账户的环境变量”,
环境变量

OLLAMA_HOST 0.0.0.0:11434
host的环境变量是指监听该端口,0.0.0.0应该同样可以写成127.0.0.1
OLLAMA_MODELS C:\Users\har\.ollama\models
这个是指ollama下载大模型的保存位置,这里的路径需要保证和ollama中的保存路径相同,否则后续可能出现导入问题

ollama
改变路径

下载&部署模型

这一部分就是重中之重的内容。
下载模型
ollama官网就给了大模型的选择及下载,本人的4060只有8G显存,所以选取了8b版本的deepseekr1

ollama run deepseek-r1:8b

这条命令可以在cmd中直接执行,会自行下载该模型并运行,执行的前提是上述的环境变量已经成功配置,有必要的话,执行这条命令之前先行重启电脑。
但是实测的时候出现了爆显存的情况,这是一种非常极限的情况。
测试成功实例
下面就可以准备部署ragflow

知识库与智能体

在RAGflow中,其核心能力主要依赖于RAG技术。该流程首先通过选择合适的文本分块模型对本地文档进行处理。系统提供了多种分块策略,例如通用型的“General”模式、适用于科研论文的“Paper”模式等。不同的分块方式会将文本切割成语义承载单元不同的信息块。由于自然语言本身具有连贯性,错误的分割会破坏原始语义结构,可能导致在后续问答环节中,当系统进行语义检索时,命中到不相关或容易产生混淆的文本内容,从而影响回答质量。

在语义检索阶段,文本相似度计算是关键环节。无论是用户的问题(Query)还是处理后的文本块(Key),都会先由一个专用的嵌入模型进行编码(ragflow内置了两个),而非直接输入用于生成答案的大语言模型。该嵌入模型将文本转换为高维向量,即嵌入表示。经过归一化处理后,这些向量的端点均分布在一个单位超球面上。此时,查询与文本块之间的语义相似度,可以简化为计算两者归一化向量在内积空间中的夹角余弦值,即 cos(θ) = <q, k>(当向量均被归一化后,内积等价于余弦相似度)。

最终,系统会根据相似度检索出的最相关的几个文本块,将其作为上下文信息,与用户问题一并提交给大语言模型,由其综合这些信息来生成最终的回答。

1. 部署ragflow

因为是需要是用docker进行部署,所以在此之前请先保证docker开启并可用。
源码地址:https://github.com/infiniflow/ragflow/blob/main/README_zh.md

$ git clone https://github.com/infiniflow/ragflow.git

然后切入该项目目录并进入下层目录中的docker:ragflow/docker
先进行环境配置的改动:
docker文件夹中包含一个.env的文件,使用记事本打开该文件,找到:

# The RAGFlow Docker image to download. v0.22+ doesn't include embedding models.
# Defaults to the v0.21.1-slim edition, which is the RAGFlow Docker image without embedding models.
RAGFLOW_IMAGE=infiniflow/ragflow:v0.21.1-slim
# RAGFLOW_IMAGE=infiniflow/ragflow:v0.21.1
# The Docker image of the v0.21.1 edition includes built-in embedding models:
#   - BAAI/bge-large-zh-v1.5
#   - maidalun1020/bce-embedding-base_v1
#

上述是原本的内容,需要改成:

# The RAGFlow Docker image to download. v0.22+ doesn't include embedding models.
# Defaults to the v0.21.1-slim edition, which is the RAGFlow Docker image without embedding models.
# RAGFLOW_IMAGE=infiniflow/ragflow:v0.21.1-slim
RAGFLOW_IMAGE=infiniflow/ragflow:v0.21.1
# The Docker image of the v0.21.1 edition includes built-in embedding models:
#   - BAAI/bge-large-zh-v1.5
#   - maidalun1020/bce-embedding-base_v1
#

也就是将后续部署时下载的版本从slim改为完整版,因为slim版本没有嵌入模型,会影响后续的知识库构建,不然的话只能选择部署模型作为embedding模型或者选择在线模型进行配置作为嵌入模型。
而后在命令行中运行下述命令:

$ cd ragflow/docker
# Use CPU for embedding and DeepDoc tasks:
$ docker compose -f docker-compose.yml up -d

上述会自动下载并在docker中运行ragflow。
但是本人在运行时出现了一个类似于EOF的报错,具体内容不记得了,但是解决方法如下:

docker compose down -v 

docker compose up
  1. docker compose down -v
    停止并移除所有正在运行的容器
    删除所有相关的网络
    -v 标志:同时删除所有命名的和匿名卷(包括数据库数据等)
    相当于对整个 Docker Compose 环境进行"清理"
  1. docker compose up
    重新创建并启动所有服务
    重建镜像(如果 Dockerfile 有变化)
    重新创建卷和网络
    默认在前台运行,输出所有容器日志

此时等待下载完成并成功启动就可以按照指示在浏览器中打开ragflow的页面并进行后续配置
localhost:80
此时注册登录即可!

2.构建知识库

首先需要配置之前在ollama中下载的大语言模型:
在这里插入图片描述
在这里插入图片描述

  1. 模型类型选择chat
  2. 模型名称严格遵照ollama的命名:
❯ ollama list
NAME              ID              SIZE      MODIFIED
deepseek-r1:8b    6995872bfe4c    5.2 GB    24 hours ago
  1. 基础url,可以选择填入本地ip:11434即可,应该也能成功,或者填入:http://host.docker.internal:11434
  2. apikey,因为是使用本地大模型,所以不需要填写, 如果导入云端的大模型就需要自行生成并填写
  3. 最大token数随意填写

配置完之后就可以到主界面构筑本地知识库
在这里插入图片描述
完整的ragflow给了两种嵌入模型可选

在这里插入图片描述
分块方法视知识库内容进行选择.
在这里插入图片描述
选择新增文件可以批量上传本地文件,建议打开创建时解析
创建成功就如下所示:
在这里插入图片描述
可以进行检索测试,并视检索情况调整相似度阈值与权重
在这里插入图片描述
也可以直接开始聊天

在这里插入图片描述

智能体构建

ragflow同样支持智能体,该智能体能充分调用你实现的本地模型以及知识库,并且也给出了很多简易的模板进行尝试,在这里只需要进行提示词编写并且熟悉该框架下的一些输入输出的变量用法就可以完成一个简单的智能体构建

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

本教程主要参考视频:https://www.bilibili.com/video/BV1785yzrEN8/ 以及网络上相关的教程。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐