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

大模型系列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.lryc.cn/news/514551.html

相关文章:

  • 常用的mac软件下载地址
  • 基于51单片机和16X16LED点阵屏(74HC138和74HC595驱动)的小游戏《贪吃蛇》
  • python中常用的内置函数介绍
  • 【微服务】Spring Cloud Config解决的问题和案例
  • 华为OD机试E卷 --最小的调整次数--24年OD统一考试(Java JS Python C C++)
  • Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(2):配置主数据库
  • 慧集通iPaaS集成平台低代码训练-实践篇
  • TDengine 如何进行高效数据建模
  • HarmonyOS NEXT应用开发实战:一分钟写一个网络接口,JsonFormat插件推荐
  • 基于动力学的MPC控制器设计盲点解析
  • Java重要面试名词整理(十六):SpringBoot
  • 在K8S中,如何部署kubesphere?
  • 算法-查找缺失的数字
  • antd-vue - - - - - a-date-picker限制选择范围
  • 计算机网络练习题
  • redis的集群模式与ELK基础
  • STM32-笔记18-呼吸灯
  • Vue3 + ElementPlus动态合并数据相同的单元格(超级详细版)
  • 【JavaWeb后端学习笔记】MySQL的数据控制语言(Data Control Language,DCL)
  • libvirt学习
  • STM32-笔记19-串口打印功能
  • 概率论与数理统计
  • 统信系统设置代理的问题
  • TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别
  • springboot配置并使用RestTemplate
  • 人工智能-Python网络编程-TCP
  • 【Java回顾】Day3 继承|Override/Ovverload|多态|抽象类|封装|接口|枚举
  • SpringMVC(四)响应
  • vim 的基础使用
  • 关于flinkCDC监控mysql binlog时,datetime类型自动转换成时间戳类型问题