当前位置: 首页 > news >正文

大模型实战一、Ollama+RagFlow 部署本地知识库

大模型实战一、Ollama+RagFlow 部署本地知识库

参考你提供的文章,这里是基于 Windows 系统通过 Docker 安装部署 RagFlow 和 Ollama 的本地化大模型知识库的详细教程。本文将指导你如何在 Windows 上使用 Docker 来设置 RagFlow 和 Ollama 环境,并安装通义千问2 7B大模型和支持中文的 Embedding 模型。

在 Windows 上通过 Docker 安装和部署 RagFlow 和 Ollama

1. 环境准备

确保你的系统满足以下条件:

  • Windows 10 或更高版本
  • Docker Desktop 已安装并启用 WSL 2 后端
1.1 安装 Docker Desktop

如果你还没有安装 Docker Desktop,请按照以下步骤进行安装:

  1. 下载 Docker Desktop:Docker Desktop 官网
  2. 运行安装程序,按照提示完成安装。
  3. 启用 WSL 2 后端:
    • 打开 Docker Desktop,进入 Settings > General,勾选 “Use the WSL 2 based engine”。
    • 确保已安装并启用了 WSL 2。可以参考 微软官方指南 来完成 WSL 2 的安装和启用。
1.2 启动 Docker Desktop

安装完成后,启动 Docker Desktop,确保 Docker 正常运行。可以通过命令行验证 Docker 版本来确认安装成功:

docker --version

2. 安装 RagFlow 和 Ollama

RagFlow 和 Ollama 是用于管理和部署大模型知识库的关键工具。

2.1 拉取 Ollama 镜像

Ollama 是一个专注于大语言模型管理的工具,使用 Docker 容器来运行模型。

  1. 在终端中运行以下命令来拉取 Ollama 镜像:

    docker pull ollama/ollama
    
  2. 运行 Ollama 容器:

    docker run --rm -it --name ollama-cli ollama/ollama:latest
    
2.2 安装 RagFlow

RagFlow 是一个用于构建和管理信息检索生成流的工具。我们可以使用 Docker 容器来安装 RagFlow。

  1. 拉取 RagFlow 镜像:

    docker pull ragflow/ragflow:latest
    
  2. 运行 RagFlow 容器:

    docker run --rm -it --name ragflow-cli ragflow/ragflow:latest
    

3. 安装通义千问2 7B 模型

通义千问2 7B 是一个中文语言模型,可以用于构建本地化知识库。

3.1 下载并安装通义千问2 7B 模型
  1. 使用 Ollama CLI 来下载通义千问2 7B 模型:

    ollama pull tongyi/qwen-7b-chat
    

    这将下载并准备模型以便于后续使用。

3.2 运行模型容器
  1. 使用 Ollama 运行通义千问2 7B 模型:

    docker run --rm -it --name qwen-7b-chat ollama/tongyi-qwen-7b-chat
    

    你可以通过指定模型参数和配置来调整模型的运行行为。

4. 设置支持中文的 Embedding 模型

为了使 RagFlow 能够处理中文文本并进行向量化,我们需要安装一个支持中文的 Embedding 模型,例如 m3e-base

4.1 安装 transformers 和 sentence-transformers 库
  1. 创建一个 Docker 容器来安装和运行 Python 及相关库:

    docker run --rm -it --name embedding-env python:3.8-slim bash
    
  2. 在容器内部安装所需的库:

    pip install transformers sentence-transformers
    
4.2 下载和加载 Embedding 模型

我们可以使用以下 Python 代码来加载 m3e-base 模型:

from sentence_transformers import SentenceTransformer# 加载中文嵌入模型
embedding_model = SentenceTransformer('moka-ai/m3e-base')

你可以将上述代码保存为脚本,并在 Docker 容器中执行它。

5. 整合 RagFlow 和 Ollama,构建本地知识库

现在,我们可以通过 RagFlow 和 Ollama 集成来构建一个本地化知识库系统。

5.1 初始化 RagFlow 项目

在 Docker 容器中初始化一个新的 RagFlow 项目:

docker exec -it ragflow-cli ragflow init my-local-knowledgebase
cd my-local-knowledgebase
5.2 添加中文 Embedding 和模型配置

编辑 config.yml 文件,配置 RagFlow 使用 Ollama 模型和中文嵌入:

embedding:model: "moka-ai/m3e-base"retriever:type: "local"index_path: "./index"model:type: "ollama"model_name: "tongyi/qwen-7b-chat"container_engine: "docker"
5.3 构建知识库索引

将你希望添加到知识库的中文文档或文本进行索引。假设我们有一些中文文档放在 data/ 目录中:

docker exec -it ragflow-cli ragflow index --data-dir ./data
5.4 运行知识库查询服务

使用 RagFlow 启动查询服务:

docker exec -it ragflow-cli ragflow serve

你现在可以通过 REST API 或命令行工具查询本地化的中文知识库。

6. 测试部署

通过命令行或 HTTP 请求测试你的本地化知识库:

curl -X POST http://localhost:8000/query -H "Content-Type: application/json" -d '{"query": "通义千问2的主要功能是什么?"}'

7. 完成部署和调优

根据实际需求进一步调优模型和检索配置,添加更多的自定义功能和业务逻辑。

总结

通过以上步骤,你已经成功在 Windows 系统上通过 Docker 部署了一个本地化的大模型知识库,结合 RagFlow 和 Ollama,安装了通义千问2 7B 模型和中文 Embedding 模型,构建了一个支持中文问答的系统。这种设置适用于企业内部知识管理、自动化客服、智能问答等场景。

相关文章:

大模型实战一、Ollama+RagFlow 部署本地知识库

大模型实战一、OllamaRagFlow 部署本地知识库 参考你提供的文章,这里是基于 Windows 系统通过 Docker 安装部署 RagFlow 和 Ollama 的本地化大模型知识库的详细教程。本文将指导你如何在 Windows 上使用 Docker 来设置 RagFlow 和 Ollama 环境,并安装通…...

系统工程建模MBSE

################################# ############# 片段一 ############## ################################# 下图采用“V”模式显示了集成的基于模型的系统/嵌入式软件开发流程Harmony。左侧描述了自顶向下的设计流程,而右侧显示了自底而上的从单元测试到最终系统验收测试…...

SVN的使用技巧

SVN(Subversion)是近年来崛起的版本管理工具,因为是免费的,所以用的人还是不少的。故做一些总结。 如果是新手,基本对SVN一点都不了解的话,建议去学习一下这个系统的教程,讲的也很详细Tortoise…...

使用 RabbitMQ 实现秒杀订单系统的异步消息处理

使用 RabbitMQ 实现秒杀订单系统的异步消息处理 在秒杀系统中,如何确保高并发环境下的订单处理稳定高效是个很大的挑战。为了解决这个问题,我们通常会引入消息队列,通过异步处理来削峰填谷。这篇文章将详细讲解如何使用 RabbitMQ 来设计一个…...

oracle19.3单机升级到Oracle19.22

1.补丁包、opatch准备 -rw-r--r-- 1 oracle oinstall 1817908992 9月 10 14:25 p35943157_190000_Linux-x86-64.zip -rw-r--r-- 1 oracle oinstall 133535622 9月 10 14:22 p6880880_190000_Linux-x86-64.zip2.解压补丁包和opatch包 先将原有opatch备份 [oraclecyptdg ~]$…...

半导体的发展--创世新产品介绍

文章目录 半导体的发展 半导体的发展 现代社会对于芯片的需求是越来越多了,90 年代我们能在收音机,电视机,DVD,上面看到芯片的身影,进入 2000 年,电脑,手机逐渐进入中国家庭,中国高…...

Ubuntu WSL使用技巧

0 Preface/Foreword 1 默认为root用户 当下载完成Ubuntu之后,首次登录,当完成初始化后,提示输入新的用户名时候,直接点击右上角的X按钮,再重新登陆,系统会默认使用root权限登录。...

4 个步骤带你快速上手 Einstein Copilot for Tableau

如果你的企业仍未部署或希望迁移至 Tableau Cloud,可考虑订阅 Tableau 高级套件。 自 Einstein Copilot for Tableau 发布以来,相信部分用户已经尝试过在 Tableau Cloud 中借助 AI 对话助理,快速解决数据分析中的问题,获得更准确的…...

C++ | Leetcode C++题解之第386题字典序排数

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> lexicalOrder(int n) {vector<int> ret(n);int number 1;for (int i 0; i < n; i) {ret[i] number;if (number * 10 < n) {number * 10;} else {while (number % 10 9 || numbe…...

vsftpd配置用户和密码让其他客户端连接

一、第一个主机:vsftpd下载及配置 前置准备: #卸载防火墙 yum -y remove firewalld #为了不让防火墙有影响&#xff0c;iptables配置也清空 iptables -F vim /etc/selinux/conf SELINUXdisabled #主要是把它改为disabled或者permissive SELINUXTYPEtargeted #重启linux让seli…...

Oracle使用序列后提示违反唯一约束---解决办法

1、问题原因分析 出现这个问题的原因是插入数据的时候&#xff0c;由于之前没有使用序列插入&#xff0c;而是直接插入了一个比当前序列nextval还大的值&#xff0c;即直接将id写死了。后面再使用序列插入的时候&#xff0c;如果序列小于该值的话&#xff0c;是可以正常插入的…...

乐观锁悲观锁

乐观锁 乐观锁的核心思想是“尽量不去锁定资源&#xff0c;而是尽量让线程并发地工作”&#xff0c;并在最后阶段检查冲突&#xff0c;只有在检测到冲突时才会采取纠正措施。乐观锁通常通过以下方式实现&#xff1a; 版本号控制&#xff1a;每次对共享资源进行修改时&#xf…...

Unity面试:什么是UnityEvent?

UnityEvent是Unity引擎中一种特殊的事件系统&#xff0c;属于Unity的事件和委托机制。它允许开发者在运行时定义和管理事件的响应&#xff0c;从而实现松耦合的事件处理。 以下是UnityEvent的一些主要特点和用途&#xff1a; 松耦合的设计&#xff1a;UnityEvent允许对象之间…...

食品安全管理员考试真题题库及答案

食品安全管理员考试真题题库及答案 95.对食品生产经营企业来说&#xff0c;实施ISO 22000是&#xff08;&#xff09;。 A.强制性的 B.无效的 C.自愿的 D.必须的 答案&#xff1a;C 96.CDC的意思是&#xff08;&#xff09;。 A.卫生监督所 B.疾病控制预防中心 C.卫生…...

【C++】—— vector 的模拟实现

【C】—— vector 的模拟实现 0 前言1 vector 的成员变量1.1 stl 库中的 vector 成员变量1.2 模拟实现 vector 成员变量 2 迭代器3 size、capacity、empty4 opreator[ ]5 reserve5.1 初版 reserve5.2 _finish 的处理5.3 深拷贝5.4 终版 6 push_back 与 pop_back7 打印函数7.1 初…...

MySQL 查询过慢的优化方法

1. 优化查询语句 问题&#xff1a;使用 SELECT * 会导致查询获取不必要的数据。 SELECT * FROM users WHERE age > 30;优化建议&#xff1a; 指定需要的列&#xff0c;这样可以减少数据传输的负担&#xff0c;提升查询速度。 SELECT name, email FROM users WHERE age &g…...

YoloV8修改分类(Classify)的前处理(记录)

修改原因 yolo自带的分类前处理对于长方形的数据不够友好&#xff0c;存在特征丢失等问题修改后虽然解决了这个问题但是局部特征也会丢失因为会下采样程度多于自带的&#xff0c;总之具体哪种好不同数据应该表现不同我的数据中大量长宽比很大的数据所以尝试修改自带的前处理&a…...

半监督学习能否帮助训练更好的模型?

数据科学家面临的最常见挑战之一是缺乏足够的标记数据来训练一个可靠且准确的模型。标记数据对于监督学习任务&#xff0c;如分类或回归至关重要。然而&#xff0c;在许多领域&#xff0c;获取标记数据既昂贵又耗时&#xff0c;有时甚至是不切实际的。另一方面&#xff0c;未标…...

VBA 获取字段标题代码轻松搞定

hi&#xff0c;大家好&#xff01; 最近又有一段时间没和大家唠嗑了&#xff0c;最近也没有时间给大家开直播&#xff0c;天天忙&#xff0c;但不知道在忙啥&#xff01;那今天我们来讲点啥好玩的呢&#xff1f; 今天是老师节&#xff0c;那就先祝各位老师节日快乐&#xff0…...

C++代码片段

for(int i1; i<shuliang; i) { int f100; cout<<a[i].name<<":"<<\n; cout<<"该舰艇现在距离基地"<<km<<"km&#xff0c;需要"<<km…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

Axure Rp 11 安装、汉化、授权

Axure Rp 11 安装、汉化、授权 1、前言2、汉化2.1、汉化文件下载2.2、windows汉化流程2.3、 macOs汉化流程 3、授权 1、前言 Axure Rp 11官方下载链接&#xff1a;https://www.axure.com/downloadthanks 2、汉化 2.1、汉化文件下载 链接: https://pan.baidu.com/s/18Clf…...

Neo4j 完全指南:从入门到精通

第1章&#xff1a;Neo4j简介与图数据库基础 1.1 图数据库概述 传统关系型数据库与图数据库的对比图数据库的核心优势图数据库的应用场景 1.2 Neo4j的发展历史 Neo4j的起源与演进Neo4j的版本迭代Neo4j在图数据库领域的地位 1.3 图数据库的基本概念 节点(Node)与关系(Relat…...