【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

一、RAGFlow简介

RAGFlow是一个基于对文档深入理解的开源RAG(Retrieval-augmented Generation,检索增强生成)引擎。

系统架构
主要作用: 让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大模型提问时,RAGFlow先查找自有知识库中的切块内容,接着把查找到的知识库数据输入到对话大模型中再生成内容输出。

平台特点: 支持丰富的文件类型,如Word、PPT、excel表格、csv/txt、图片、PDF、结构化数据、网页等 。

平台Demo链接: https://demo.ragflow.io.

二、win10 系统本地化部署 RAGFlow 平台

2.1 部署思路

1、通过win10系统自带的wsl构建linux虚拟环境;
2、通过docker desktop实现docker环境部署
3、通过ollama实现大模型底座下载管理;
4、将ragflow平台下载到本地linux环境进行运行部署,使用ollama中的大模型能力;
5、自己构建业务数据训练本地大模型;
6、测试训练结果。

2.2 环境要求

CPU >= 4 cores
RAM >= 16 GB
Disk >= 50 GB
Docker >= 24.0.0 & Docker Compose >= v2.26.1

2.3 前置条件(win10 环境设置)

可通过代码或者自己配置实现环境设置。
(1)代码修改

// 启用适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart//检查运行 WSL 2 的要求
//若要更新到 WSL 2,需要运行 Windows 10。
// 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
// 对于 ARM64 系统:版本 2004
// 或更高版本,采用 内部版本 19041 或更高版本。
// 低于 18362 的版本不支持 WSL 2。使用 Windows Update 助手更新 Windows 版本。//启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart//开启“虚拟机平台”后需要重启电脑生效。//将 WSL 2 设置为默认版本
wsl --set-default-version 2//查看当前wsl版本列表
wsl --list --verbose

(2)手动配置
在这里插入图片描述在这里插入图片描述在这里插入图片描述

注意:开启以上功能需要重启

2.4 开始部署

2.4.1安装Docker

(一)下载Docker安装包
链接: https://docs.docker.com/desktop/setup/install/windows-install/
在这里插入图片描述(二)安装Docker
直接下一步安装就行。
在这里插入图片描述(三)安装Docker成功
在这里插入图片描述

2.4.2利用wsl安装ubuntu系统

(一)更新wsl

//更新一下可以解决很多后面的问题,自己安装的时候没有更新,搞了很久。
wsl --update

在这里插入图片描述
(二)利用 wsl 安装 Ubuntu

//安装ubuntu命令
wsl --install -d ubuntu//安装成功以后会自动提醒创建用户,按照要求创建用户、设置密码
//使用刚创建的账户登录
//因为docker一些操作需要root账户,但是这时候不知道root 密码,通过命令修改密码sudo passwd
//输入当前登录账户的密码,然后输入新密码,这时候可以使用新密码登录root账户
su root//至此linux环境安装成功。

在这里插入图片描述(三)建议安装windows terminal,操作wsl安装的系统

windows terminal的操作界面会比默认的CMD看起来舒服一点,而且方便单独操作虚拟系统。

在这里插入图片描述

在这里插入图片描述

(四)按照建议修改系统参数
按照官方建议调整vm.max_map_count参数

sysctl vm.max_map_count
sudo sysctl -w vm.max_map_count=262144

在这里插入图片描述

(四)下载 ragflow
RAGFlow官方链接: https://infiniflow.cn/docs/v0.7.0/

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

注意:如果出现下列问题可修改hosts文件解决
在这里插入图片描述

文件位置:
C:\Windows\System32\drivers\etc
最下方添加:
10.10.211.68 www.github.com

如果效果不明显,可自己调整延迟最低的ip映射

访问以下地址查看本地延迟情况,然后选择延迟最低的。
https://ping.chinaz.com/github.com

在这里插入图片描述
注意:如果出现下载慢导致下载失败,可使用以下办法尝试解决
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4.3 安装 RagFlow

官方链接:RagFlow

#配置要求
CPU >= 4 核
RAM >= 16 GB
Disk >= 50 GB
Docker >= 24.0.0 & Docker Compose >= v2.26.1
如果你并没有在本机安装 Docker(Windows、Mac,或者 Linux), 可以参考文档 Install Docker Engine 自行安装。#克隆仓库
git clone https://github.com/infiniflow/ragflow.git文件比较大,需要下载一段时间,下载完成后:
# 进入下载目录
cd ragflow
#运行ragflowdocker compose -f docker/docker-compose.yml up -d# 注意:这里需要启动本地docker desktop 应用,不然无法执行。下载、运行成功以后,会在docker desktop 管理端看到以下镜像信息。

在这里插入图片描述

# 注册账号
登录127.0.0.1:80  进行注册账号登录

在这里插入图片描述

2.4.4 安装 Ollama

管网下载并安装[Ollama](https://ollama.com/)。
具体安装过程自行查找,安装成功以后可按照以下方式进行验证。
输入以下链接查询服务是否i东
http://127.0.0.1:11434/

在这里插入图片描述

#根据个人电脑配置情况下载需要的大模型,这里推荐使用qwen2或者qwen2.5,模型大小从效果考虑建设使用7b以上,但是本地设备配置不够的话,可以使用1.5b尝试效果。
#模型下载安装命令(win10中安装)
#列出模型
ollama list
#删除模型
ollama rm 
#显示模型信息
ollama show  #下载运行qwen2:7bollama run qwen2:7b
#下载Embedding模型,一个免费的中文的向量化模型
ollama pull shaw/dmeta-embedding-zh

2.4.5 准备个人数据

这里提供一个训练数据下载地址,里面有一些业务的训练数据。
https://huggingface.co/InfiniFlow也可以完全自己构建训练数据集,数据训练格式参考如下:

在这里插入图片描述

2.4.6 运行RagFlow

1、注册账户。http://127.0.0.1/login,
2、创建知识库
在这里插入图片描述
3、配置数据库
在这里插入图片描述4、解析数据集
在这里插入图片描述
5、问答测试(我这里使用的是医疗数据,如我没有进行数据训练,测试将无结果)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/63680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qwt 之 QwtPlotPicker

QwtPlotMarker 和 QwtPlotPicker 是 Qwt 库中用于增强 QwtPlot 功能的两个重要类。它们分别用于在图中添加标记和实现交互式的选择或拖动功能。 QwtPlotPicker 提供了交互式的选择工具,它允许用户通过鼠标点击或拖动来选择图表中的数据点或区域。这对于实现缩放、平…

C/C++圣诞树

系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C…

lua dofile 传参数

cat 1.lua arg[1] 111 arg[2] 222 dofile(./2.lua) cat 2.lua print("First argument is: " .. arg[1]) print("Second argument is: " .. arg[2]) 执行 lua 1.lua,结果为: First argument is: 111 Second argument is: 222 l…

电商数据流通的未来:API接口的智能化与自动化趋势

在数字化时代,电子商务行业正在以前所未有的速度发展,而API(应用程序编程接口)接口作为电商领域的重要组成部分,其应用和发展趋势也日益受到关注。API接口作为电商系统与外部服务或平台交互的桥梁,对电商数…

投标心态:如何在“标海战术”中保持清醒的头脑?

在竞争激烈的市场环境下,“标海战术”——即大规模参与投标——已经成为许多企业争取市场份额的重要策略。然而,盲目追求投标数量可能导致资源浪费、团队疲劳以及战略目标的模糊化。在这种高强度的竞争模式中,如何保持清醒的头脑,…

【苍穹外卖】学习心得体会-随笔

前言 写了很久,终于可以完整运行项目了,记录下这几天的心得体会回顾一下知识点 第一天、Git 分布式版本控制工具 一、Git概述 定义:是分布式版本控制工具,用于管理软件开发中的源代码文件,像Java类、xml文件、html…

windows C#-使用构造函数

实例化类或结构时,将会调用其构造函数。 构造函数与该类或结构具有相同名称,并且通常初始化新对象的数据成员。 在下面的示例中,通过使用简单构造函数定义了一个名为 Taxi 的类。 然后使用 new 运算符对该类进行实例化。 在为新对象分配内存…

研发效能DevOps: Vite 使用 Element Plus

目录 一、实验 1.环境 2.初始化前端项目 3.安装 vue-route 4.安装 pinia 5.安装 axios 6.安装 Element Plus 7.gitee创建工程 8. 配置路由映射 9.Vite 使用 Element Plus 二、问题 1.README.md 文档推送到gitee未自动换行 2.访问login页面显示空白 3.表单输入账户…

5G 模组 RG500Q常用AT命令

5G 模组 RG500Q常用AT命令 5G 模组 RG500Q常用AT命令 at ATQNWPREFCFG\"mode_pref\",nr5g && sleep 1 at ATQNWPREFCFG\"nr5g_band\",79 && sleep 1 at atqnwlock\"commo…

NVIDIA DeepStream插件之Gst-nvtracker

NVIDIA DeepStream插件之Gst-nvtracker 1. 源由2. 基础知识3. Gst-nvtracker插件3.1 插件参数3.2 插件API接口 4. 分析问题5. 总结6. 参考资料 1. 源由 这篇的主要目的是稍微吐槽下NVIDIA的设计,当然其实他们做的还是不错的(从系统架构设计角度看&#…

进程内存转储工具|内存镜像提取-取证工具

1.内存转储,内存转储(Memory Dump)是将计算机的物理内存(RAM)内容复制到一个文件中的过程,这个文件通常被称为“内存转储文件”或“核心转储文件”(Core Dump),内存转储的主要目的是…

Lua语言入门 - Lua 面向对象

Lua 面向对象 面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构,通过创建和操作对象来设计应用程序。 以下几种编程语言都支持面向对象编程: CJavaObjective-CSmalltalkC#Ruby Lua 是…

Pyqt6在lineEdit中输入文件名称并创建或删除JSON文件

1、创建JSON文件 代码 import osdef addModulekeyWordFile(self):if "" ! self.lineEdit_module.text():moduleFile self.lineEdit_module.text() .jsonelse:self.toolLogPrinting(请输入模块名称)returnfilePath modulekeyWordFileDir moduleFileif os.path.e…

【Leetcode 热题 100】236. 二叉树的最近公共祖先

问题背景 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 最近公共祖先的定义为:对于有根树 T T T 的两个节点 p p p、 q q q,最近公共祖先表示为一个节点 x x x,满足 x x x 是 p p p、 q q q 的祖先且 x x x 的深度尽可能大…

数据结构--堆的向上调整和向下调整

文章目录 1.完全二叉树2.堆向上调整3.堆向下调整4.测试代码 1.完全二叉树 下面的这个就是对于我们的完全二叉树的这个逻辑结构和物理结构的说明: 逻辑结构就是我们自己认为的进行购想出来的; 但是这个物理结构却是我们的这个数据结构在内存里面的真是…

智能挂号系统设计典范:SSM 结合 Vue 在医院的应用实现

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了医院预约挂号系统的开发全过程。通过分析医院预约挂号系统管理的不足,创建了一个计算机管理医院预约挂号系统的方案。文章介绍了医院预约挂号系统的系…

“魔法糖果盒的秘密:用朴素贝叶斯算法猜糖果颜色”

想象一下,你有一个神奇的糖果盒,这个糖果盒里有两种糖果:红色的和蓝色的。你闭上眼睛,从盒子里拿出一个糖果,然后尝一尝,你想知道这个糖果是红色的还是蓝色的。朴素贝叶斯算法就像是一个魔法规则&#xff0…

Transform组件的用法

文章目录 1. 概念介绍2. 使用方法3. 示例代码我们在上一章回中介绍了Checkbox Widget相关的内容,本章回中将介绍Transform Widget.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里说的Transform是一种容器类widget,它和Container组件类似。它可以包含其它的组件…

go面试问题

1 Go的内存逃逸如何分析 go build -gcflags-m main_pointer.go 2 http状态码 300 请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 301 永久移动。请求的资源已被永久的移动到新U…

康冠科技嵌入式面试题及参考答案

LCD 驱动你自己做了哪些内容? 在 LCD 驱动开发中,首先是硬件层面的理解。需要仔细研究 LCD 的数据手册,明确其引脚定义,包括电源引脚、数据引脚、控制引脚等。比如,对于常见的 RGB 接口 LCD,要清楚哪几个引脚是用于传输红、绿、蓝三种颜色的数据,以及像 VSYNC(垂直同步…