大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库

  • 安装ollama
  • 安装open-wehui
  • 安装并运行ragflow
  • RAG(检索、增强、生成)
    • RAG是什么
    • RAG三过程
    • RAG问答系统构建步骤
      • 向量库构建
      • 检索模块
      • 生成模块
    • RAG解决LLM的痛点
  • 使用ragflow
    • 访问ragflow
    • 配置ollama模型
      • 添加Embedding模型
      • 添加chat模型
      • 系统模式设置
    • 创建知识库
      • 数据集配置
      • 上传论文
      • 论文解析
      • 创建论文助理

安装ollama

参考写的ollama的文档

安装open-wehui

参考写的安装open-webui的文章

安装并运行ragflow

下载ragflow
git clone https://github.com/infiniflow/ragflow.git
下载依赖镜像并运行

 docker compose -f docker-compose.yml up -ddocker logs -f ragflow-server

运行成功后,使用 docker logs -f ragflow-server 查看运行状态
在这里插入图片描述

ragflow使用的各种环境变量在ragflow/docker/.env文件中,可以修改 端口号、ragflow的镜像版本等

RAG(检索、增强、生成)

RAG是什么

在这里插入图片描述
RAG(Retrieval Augmented Generation 检索增强生成)模型由Facebook AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。它结合了信息检索技术(例如传统向量数据库)和大语言模型(如LLMs)的技术,从外部知识库中检索相关信息,并将其作为prompt输入到大模型中获取输出。

在这里插入图片描述

RAG三过程

RAG 包含三个主要过程:检索、增强和生成

  • 检索:根据用户的查询内容,从外部知识库获取相关信息。具体而言,将用户的查询通过嵌入模型转换为向量,以便与向量数据库中存储的相关知识进行比对。通过相似性搜索,找出与查询最匹配的前 K 个数据。这个目的是为了给后续生成提供上下文信息知识。
  • 增强:将用户的查询内容和检索到的相关知识一起嵌入到一个预设的提示词模板中。对LLMs的提示词(prompt)
  • 生成:将经过检索增强的提示词内容输入到大型语言模型中,以生成所需的输出。

RAG问答系统构建步骤

在这里插入图片描述

在这里插入图片描述

向量库构建

收集数据:首先,需要收集与问答系统相关的各种数据,这些数据可以来自文档、网页、数据库等多种来源。
数据清洗:对收集到的数据进行清洗,去除噪声、重复项和无关信息,确保数据的质量和准确性。
知识库构建:将清洗后的数据构建成知识库。这通常包括将文本分割成较小的片段(chunks),使用文本嵌入模型(如GLM)将这些片段转换成向量,并将这些向量存储在向量数据库(如FAISS、Milvus等)中。

检索模块

问题向量化:当用户输入查询问题时,使用相同的文本嵌入模型将问题转换成向量。
相似度检索:在向量数据库中检索与问题向量最相似的知识库片段(chunks)。这通常通过计算向量之间的相似度(如余弦相似度)来实现。
结果排序:根据相似度得分对检索到的结果进行排序,选择最相关的片段作为后续生成的输入。

生成模块

上下文融合:将检索到的相关片段与原始问题合并,形成更丰富的上下文信息,将其作为大模型的prompt输入。
大语言模型生成:使用大语言模型(如GLM)基于上述上下文信息生成回答。大语言模型会学习如何根据检索到的信息来生成准确、有用的回答。

RAG解决LLM的痛点

RAG(检索增强生成)旨在缓解甚至解决以下大模型落地应用的痛点:

  • 有幻觉,可以提供更准确和可靠的领域特定知识,减少生成幻觉
  • 时效性,不需要重新训练模型,更新知识库即可保持同步更新
  • 使用外部知识库,保护隐私
  • 支持更长的上下文

参考:

  • 一文彻底搞懂大模型 - RAG(检索、增强、生成)
  • RAG系统综述
  • 一文速通RAG
  • 精通 RAG:打造顶尖企业级 RAG 系统的秘籍
  • Retrieval Augmented Generation(RAGs)解释[译]
  • langchain

使用ragflow

访问ragflow

网址:http://localhost/login,然后随便注册账户:
在这里插入图片描述

配置ollama模型

ollama list列出所有的模型,有两个Embedding模型以及一个qwen2:7b的模型
在这里插入图片描述

添加Embedding模型

在这里插入图片描述

添加chat模型

在这里插入图片描述
添加过后
在这里插入图片描述

系统模式设置

将刚才添加的模型设置到系统默认配置中
在这里插入图片描述

创建知识库

数据集配置

设置嵌入Embedding模型以及解析方法
在这里插入图片描述
这里我们做的机器学习论文库,因此可以将“解析方法”从“General”调整为“Paper”模式,对论文进行解析。

上传论文

在这里插入图片描述

论文解析

论文上传完毕后,执行论文内容的解析
在这里插入图片描述
论文解析过程,花了10几分钟
在这里插入图片描述

创建论文助理

新建一个论文助理,用于后续的聊天对话
在这里插入图片描述
聊天询问DeepSeek,可以看到确实识别了知识库
在这里插入图片描述

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

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

相关文章

C++如何遍历数组vector

在C中&#xff0c;vector是一个可变数组。那么怎么遍历它呢&#xff1f;我们以for循环为例&#xff08;while循环&#xff0c;大家自己脑补&#xff09;。 方法一&#xff1a; 基于范围的for循环&#xff0c;这是C11新引入的。 std::vector<int> v {1, 2, 3, 4, 5, 6…

华为交换机---自动备份配置到指定ftp/sftp服务器

华为交换机—自动备份配置到指定ftp服务器 需求 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器。 1、定时保存新配置的时间间隔为*分钟(1天=1440),默认为30分钟(…

深入解析-正则表达式

学习正则&#xff0c;我们到底要学什么&#xff1f; 正则表达式&#xff08;RegEx&#xff09;是一种强大的文本匹配工具&#xff0c;广泛应用于数据验证、文本搜索、替换和解析等领域。学习正则表达式&#xff0c;我们不仅要掌握其语法规则&#xff0c;还需要学会如何高效地利…

R shiny app | 网页应用 空格分隔的文本文件在线转csv

shiny 能快速把R程序以web app的形式提供出来&#xff0c;方便使用&#xff0c;降低技术使用门槛。 本文提供的示例&#xff1a;把空格分隔的txt文件转为逗号分隔的csv文件。 前置依赖&#xff1a;需要有R环境(v4.2.0)&#xff0c;安装shiny包(v1.9.1)。括号内是我使用的版本…

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

题目 苏格拉底式教学:用大型语言模型探索苏格拉底式个性化教学 论文地址&#xff1a;https://openreview.net/pdf?idqkoZgJhxsA 项目地址&#xff1a;https://github.com/Ljyustc/SocraticLM 摘要 大型语言模型(LLM)被认为是推进智能教育的一项关键技术&#xff0c;因为它们展…

第一节:电路连接【51单片机+A4988+步进电机教程】

摘要&#xff1a;本节介绍如何搭建一个51单片机A4988步进电机控制电路&#xff0c;所用材料均为常见的模块&#xff0c;简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制模块 ②开关电源 ③A4988模块转接座 ④二相四线步进电机 ⑤电线若干 二、接线 三、A49…

C++并发:并发操作的同步

有时我们不仅要共享数据&#xff0c;也要让独立线程上的行为同步。例如&#xff0c;某线程只有先等待另一线程的任务完成&#xff0c;才可以执行自己的任务。 C提供了处理工具&#xff1a;条件变量和future 并且进行了扩充&#xff1a;线程闩&#xff08;latch&#xff09;&a…

Outlook2024版如何回到经典Outlook

Outlook2024版如何回到经典Outlook 如果新加入一家公司&#xff0c;拿到的电脑&#xff0c;大概率是最新版的Windows, 一切都是新的。 如果不coding, 使用国产的foxmail大概就可以解决一切问题了。可惜老程序员很多Coding都是基于传统Outlook的&#xff0c;科技公司所有人都是I…

【大模型】7 天 AI 大模型学习

因为想先快速把 llama 模型学习了&#xff0c;所以跳了两次课&#xff0c;这是这两次课的主要内容&#xff0c;后面有时间会补充上的 &#xff5e; 主要内容有&#xff1a;一些微调技术&#xff08;Alpaca、AdaLoRA、QLoRA&#xff09;、Prefix Tuning、Quantization 1. Alpaca…

网关如何识别和阻止网络攻击

网关在识别和阻止网络攻击方面扮演着关键角色&#xff0c;它通过多种技术和机制来确保网络的安全。以下是网关如何识别和阻止网络攻击的一些主要方法&#xff1a; 1.深度包检测&#xff08;DPI&#xff09; 网关可以对经过的数据包进行深度分析&#xff0c;检查数据包的头部、负…

解决 ffmpeg “Unknown encoder ‘hevc_nvenc‘“

目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: ffmpeg 剪切视频 问题描述 详细报错: [vost#0:0 @ 0x46ae00] Unknown encoder hevc_nvenc 原因分析: ffmpeg 安装错误 解决方案: 重新安装ffmpeg: conda install ffmpeg 检查当前安装的 FFmpeg 是否支…

# 设计一个 ATM 机器(LeetCode 第2241题)

设计一个 ATM 机器&#xff08;LeetCode 第2241题&#xff09; 在本篇博客中&#xff0c;我们将深入探讨如何设计一个 ATM 机器&#xff0c;以满足存取钞票的需求。这个问题来源于 LeetCode 的第2241题&#xff0c;旨在考察如何高效地管理不同面额的钞票并处理用户的存取请求。…

操作系统复习(理论版)

目录 只会在选择填空出现类型 第一章&#xff1a;操作系统导论 操作系统介绍 不得不知道的概念 可能出现在答题的类型 第二章&#xff1a;进程调度 进程管理&#xff1a; 处理机调度&#xff1a; 进程同步&#xff1a; 死锁&#xff1a; 预防死锁&#xff1a; 避免死…

概述(讲讲python基本语法和第三方库)

我是北子&#xff0c;这是我自己写的python教程&#xff0c;主要是记录自己的学习成果方便自己日后复习&#xff0c; 我先学了C/C&#xff0c;所以这套教程中可能会将很多概念和C/C去对比&#xff0c;所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…

Linux(Centos 7.6)命令详解:ls

1.命令作用 列出目录内容(list directory contents) 2.命令语法 Usage: ls [OPTION]... [FILE]... 3.参数详解 OPTION: -l&#xff0c;long list 使用长列表格式-a&#xff0c;all 不忽略.开头的条目&#xff08;打印所有条目&#xff0c;包括.开头的隐藏条目&#xff09…

详解MySQL SQL删除(超详,7K,含实例与分析)

文章目录 前言1. 删除表中的所有记录基本语法使用场景注意事项运用实例分析说明2. 删除特定记录基本语法使用场景注意事项运用实例分析说明3. 删除单条记录基本语法使用场景注意事项运用实例分析说明4. 删除违反引用完整性的记录基本语法使用场景注意事项运用实例分析说明5. 删…

[图形渲染] 【Unity】UnityShader操作基础6-OpenGL与DirectX中的纹理坐标差异及语法差异分析

在现代图形编程中,OpenGL和DirectX作为两大主流图形API,各自有其独特的处理方式和语法规范。尽管它们的功能和目的相似,但在某些细节上却存在显著差异,尤其是在纹理坐标和着色器编程的相关操作上。本文将探讨OpenGL与DirectX在纹理坐标、语法以及语义上的差异,并给出一些跨…

numpy数组学习

前言 有时看到数组&#xff0c;容易被绕晕&#xff0c;不知道每个列表的数字分别代表什么&#xff0c;因此记录下来&#xff0c;用于后续参考。 1.轮廓点坐标 (n, 1, 2) 格式解释 (n, 1, 2)&#xff1a; n&#xff1a;表示轮廓上的点数。每个点都是轮廓的一部分。 1&#x…

改善 Kibana 中的 ES|QL 编辑器体验

作者&#xff1a;来自 Elastic Marco Liberati 随着新的 ES|QL 语言正式发布&#xff0c;Kibana 中开发了一种新的编辑器体验&#xff0c;以帮助用户编写更快、更好的查询。实时验证、改进的自动完成和快速修复等功能将简化 ES|QL 体验。 我们将介绍改进 Kibana 中 ES|QL 编辑器…

Mono里运行C#脚本25—mono_codegen

前面分析怎么样找到主函数Main的入口点功能,也就是说已经找到了这个函数的CIL代码。虽然找到了代码,但是还不能执行它的,因为它是一种虚拟机的代码。也就是说它是假的代码,不是现实世界存在的机器的代码,因此不能直接执行,必须经过后端编译器的再次编译才能真正运行它。下…