RAG实践 - 搭建本地知识库 - Ollama + AnythingLLM

news2024/12/23 5:29:07

0,什么是RAG?

RAG,即检索增强生成(Retrieval-Augmented Generation),是一种先进的自然语言处理技术架构,旨在克服传统大型语言模型(LLM)在处理开放域问题时的信息容量限制和时效性不足。RAG通过融合信息检索系统的精确性和语言模型的强大生成能力,为基于自然语言的任务提供了更灵活和精准的解决方案。

图片

1,RAG与LLM的关系

RAG不是对LLM的替代,而是对其能力的扩展与升级。传统LLM受限于训练数据的边界,对于未见信息或快速变化的知识难以有效处理。RAG通过动态接入外部资源,使LLM能够即时访问和利用广泛且不断更新的知识库,从而提升模型在问答、对话、文本生成等任务中的表现。此外,RAG框架强调了模型的灵活性和适应性,允许开发者针对不同应用场景定制知识库,以满足特定领域的需求。

下图是 RAG 的大致流程:

图片

RAG为大型语言模型(LLM)配备了一个即时查询的“超级知识库”。这个“外挂”不仅扩大了模型的知识覆盖范围,还提高了其回答特定领域问题的准确性和时效性。

想象一下,传统的LLM像是一个博学多才但记忆力有限的学者,它依赖于训练时吸收的信息来回答问题。而RAG则是这位学者随时可以连线的庞大图书馆和实时资讯网络。当面临复杂或最新的查询时,RAG能让模型即时搜索并引用这些外部资源,就像学者翻阅最新的研究资料或在线数据库一样,从而提供更加精准、全面和最新的答案。这种设计尤其适用于需要高度专业化或快速更新信息的场景,比如医学咨询、法律意见、新闻摘要等。

基于此,RAG技术特别适合用于个人或企业的本地知识库应用,利用现有知识库资料结合LLM的能力,针对特定领域知识的问题提供自然语言对话交互,其答案比单纯依赖LLM更为准确。

2,下载/安装/运行Ollama

Ollama 本身不是 LLM,而是一个服务于 LLM 的工具。它提供了一个平台和环境,使得开发者和研究人员能够在本地机器上轻松地运行、测试和部署各种大型语言模型,Win系统下,安装配置教程参考文章:Ollama在Windows11部署与使用QWen2模型-CSDN博客

3,模型选择

Ollama官方提供的模型中,对中文支持较好的模型其实并不多,比较好的有:

  • Llama2-Chinese:基于Llama2微调。搜“Chinese”关键词就能找到。

  • Qwen系列:阿里的通义千问。所有尺寸的模型都支持32K的上下文长度。多语言支持。

关于Qwen2

阿里开源了通义Qwen2模型,可以说是现阶段这个规模最强的开源模型。发布后直接在 Huggingface LLM 开源模型榜单获得第一名,超过了刚发布的 Llama3 和一众开源模型。Qwen2在代表推理能力的代码和数学以及长文本表现尤其突出。推理相关测试及大海捞针测试都取得了很好的成绩。

模型概览:Qwen 2 模型组成包括 Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B和Qwen2-72B。其中Qwen2-57B-A14B为 MoE 模型。

模型在中文、英文语料基础上,训练数据中增加了27种语言相关的高质量数据;增大了上下文长度支持,最高达到128K tokens(Qwen2-72B-Instruct)。多个评测基准上的领先表现;代码和数学能力显著提升。

4,AnythingLLM

AnythingLLM 是一个基于大型语言模型(LLM)的综合平台,旨在为用户提供灵活且高效的自然语言处理解决方案。它不仅能够执行文本生成、问答、翻译等基本任务,还可以通过集成外部知识库和数据源,增强模型的知识范围和时效性。

下载地址:Download AnythingLLM for Desktop

下载后直接安装即可,安装完成后打开,大概长这样:

然后开始选择模型,由于Ollama其实有两种模式;聊天模式和服务器模式,所谓服务器模式,你可以简单理解为,Ollama在后端运行大模型,然后开放一个端口给到别的软件,让那些软件可以调用大模型的能力。

要开启服务器模式非常简单。在终端里输入下面的指令即可启动

ollama serve

  1. 用服务器模式启动 Ollama 
  2. 在 AnythingLLM 界面中选择 Ollama
  3. 然后在 Base URL中填:http://127.0.0.1:11434
  4. 选择 LLM 模型,比如 Qwen2 0.5b
  5. Token context window 可以先用默认的 4096

然后就到了下一步

5,搭建知识库

搭建一个知识库涉及两个关键点:

  1. Embedding Model(嵌入模型):它将高维度的数据转化为低维度的嵌入空间。这一数据处理过程在RAG中非常重要。
  2. Vector Store(向量数据库):专门用来高效处理大规模向量数据。

上图展示了默认的嵌入模型和向量数据库,我们将先使用默认设置。

接下来是填写个人信息,这一步可以略过。 然后,给你的 workspace 起一个名字,这一步也可以略过。 最后,你可以在建好的 workspace 中上传你的个人知识库内容。

支持上传的文件格式很多,比如PDF、Word等都支持,甚至你可以上传外部网站链接,可是不支持上传文件夹,假如你的文件有多层结构,就没办法呈现了 

 当然,数据源也可以是外部的其他知识网站

 还可以根据项目来创建Workspace,一个项目建一个。然后,把关于这个项目的所有文档、所有网页都导入Workspace。聊天模式还有两种可以设置:

  1. 对话模式:大模型会根据你给的文档,以及它本来就有的知识储备,综合起来回答。

  2. 查询模式:大模型只是简单地针对文档进行回答。

比如我上传了刑法的Word版,可以用查询模式进行对话,因为模型参数较少(只有0.5b),所以效果其实一般,主要是我的电脑只有2060显卡,没法测试更好地模型,在充分设计后应该效果会更好

至此,本地个人知识库已经搭建完毕,更多高阶操作还需要大家自己查询AnythingLLM的使用方法。

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

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

相关文章

java 多线程入门

对于 Java 初学者来说,多线程的很多概念听起来就很难理解。比方说: 进程,是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发。线程,是进程的子任务,是 CPU 调度和…

提示缺少Microsoft Visual C++ 2019 Redistributable Package (x64)(下载)

下载地址:这个是官网下载地址:Microsoft Visual C 2019 Redistributable Package (x64) 步骤: 第一步:点开链接,找到下图所示的东西 第二步:点击保存下载 第三步:双击运行安装 第四步&#xf…

让工厂像手机一样更“聪明”

手机,作为我们日常生活中不可或缺的一部分,以其智能、便捷、高效的特点,彻底改变了我们的沟通、娱乐和工作方式。那么,想象一下,如果工厂能像手机一样便捷,那么生产过程中的每一个环节都将变得触手可及。通…

揭秘Redis中的高级数据结构:跳跃表Skiplist

Redis数据结构-跳跃表Skiplist 1. 简介1.1. Redis高性能键值存储数据库1.2. Redis的特点和优势1.3. 跳跃表Skiplist 2. 跳跃表的概念和背景2.1 跳跃表的概念2.2 跳跃表的发展历程和提出背景 3. 跳跃表的基本原理3.1 结构概述3.1.1 跳跃表的结构概述3.1.2 跳跃表的节点结构 3.2 …

C#语言+net技术架构+ VS2019开发的微信公众号预约挂号系统源码 微信就医全流程体验 什么是微信预约挂号系统?

C#语言net技术架构 VS2019开发的微信公众号预约挂号系统源码 微信就医全流程体验 什么是微信预约挂号系统? 微信预约挂号系统是一种基于互联网的预约挂号平台,通过与医院信息系统的对接,实现了患者通过手机微信轻松预约挂号的功能。预约挂号系…

【AI大模型】Transformers大模型库(十一):Trainer训练类

目录 一、引言 二、Trainer训练类 2.1 概述 2.2 使用示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。 🤗 Transformers 提供了数以千计的预训练模型&am…

基于FreeRTOS+STM32CubeMX+LCD1602+MCP4152(SPI接口)的数字电位器Proteus仿真

一、仿真原理图: 二、仿真效果: 三、软件部分: 1)、时钟配置初始化: void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Initializes the CPU, AHB and APB busses clocks */ RCC…

同城购物优惠联盟返现系统小程序源码

:省钱购物新体验 🎉一、同城优惠,一网打尽 在繁华的都市生活中,你是否总是为寻找各种优惠而费尽心思?现在,有了“同城优惠联盟返现小程序”,你可以轻松掌握同城各类优惠信息。无论是餐饮、购物…

解题思路:LeetCode 第 209 题 “Minimum Size Subarray Sum“

解题思路:LeetCode 第 209 题 “Minimum Size Subarray Sum” 在这篇博文中,我们将探讨如何使用 Swift 解决 LeetCode 第 209 题 “Minimum Size Subarray Sum”。我们会讨论两种方法:暴力法和滑动窗口法,并对这两种方法的时间复…

Arduino - 串行绘图仪

Arduino - Serial Plotter Arduino - 串行绘图仪 In this tutorial, we will learn how to use the Serial Plotter on Arduino IDE, how to plot the multiple graphs. 在本教程中,我们将学习如何在Arduino IDE上使用串行绘图仪,如何绘制多个图形。 A…

【软件工程】【22.04】p2

关键字: 软件开发分本质及涉及问题、需求规约与项目需求不同、用况图概念包含模型元素及其关系、创建系统的用况模型RUP进行活动、软件生存周期&软件生存周期模型&软件项目过程管理关系、CMMI基本思想 模块结构图:作用域、控制域;语…

vue2 antd 开关和首页门户样式,表格合计

1.首页门户样式 如图 1.关于圆圈颜色随机设置 <a-col :span"6" v-for"(item, index) in menuList" :key"index"><divclass"circle":style"{ borderColor: randomBorderColor() }"click"toMeRouter(item)&qu…

版本控制工具-git分支管理

目录 前言一、git分支管理基本命令1.1 基本命令2.1 实例 二、git分支合并冲突解决三、git merge命令与git rebase命令对比 前言 本篇文章介绍git分支管理的基本命令&#xff0c;并说明如何解决git分支合并冲突&#xff0c;最后说明git merge命令与git rebase命令的区别。 一、…

Python重拾

1.Python标识符规则 字母&#xff0c;下划线&#xff0c;数字&#xff1b;数字不开头&#xff1b;大小写区分&#xff1b;不能用保留字&#xff08;关键字&#xff09; 2.保留字有哪些 import keyword print(keyword.kwlist)[False, None, True, and,as, assert, async, await…

【AI兼职副业必看,行业分析+注意事项+具体应用,想要做点副业的小白必看!】

前言 随着AI技术的日新月异&#xff0c;它已悄然渗透到我们生活的每一个角落&#xff0c;成为了我们日常生活和工作中的得力助手。在当前经济下行的环境下&#xff0c;AI技术更是成为了提升工作效率、拓展业务领域的关键。对于我们普通人而言&#xff0c;有效利用AI工具&#…

应变计在工程中的角色:精准监测与安全保障的得力助手

在工程领域中&#xff0c;应变计作为一种重要的测量工具&#xff0c;扮演着精准监测与安全保障的得力助手的角色。它能够实时、准确地测量物体在受力作用下的变形情况&#xff0c;为工程师提供关键的数据支持&#xff0c;从而确保工程的稳定性与安全性。 应变计在工程中的应用范…

深度学习训练基于Pod和RDMA

目录 ​编辑 引言 RDMA技术概述 InfiniBand iWARP RoCE Pod和容器化环境 深度学习训练与RDMA结合 MPI和RDMA 深度学习框架与RDMA 实战&#xff1a;基于Pod和RDMA的深度学习训练 环境准备 步骤 YAML 性能和优势 结论 引言 随着深度学习在人工智能领域的快速发展…

2024数字孪生发展研究报告

来源&#xff1a;华为&ampamp中国信通院 近期历史回顾&#xff1a; 2023内蒙古畜牧业温室气体减排策略与路径研究报告-能源基金会.pdf 2023园区工商业配储项目储能系统技术方案.pdf 欧洲和美国储能市场盘点&#xff08;英文&#xff09;.pdf 2024年第1季度全球ESG监管政策…

Python爬取中国福彩网彩票数据并以图表形式显示

网页分析 首先打开中国福彩网&#xff0c;点击双色球&#xff0c;选择往期开奖栏目 进入栏目后&#xff0c;选定往期的奖金数目作为我们想要爬取的目标内容 明确目标后&#xff0c;开始寻找数据所在的位置 鼠标右击页面&#xff0c;打开网页源代码&#xff0c;在源代码中搜索…

B端系统:消息页面的设计要点

在B端系统中&#xff0c;消息页面的作用是为用户提供实时的通信和信息交流功能&#xff0c;以便用户能够及时获取和处理重要的业务消息和通知。设计一个好的消息页面可以提高用户的工作效率和沟通效果。 以下是一些建议来设计消息页面&#xff1a; 易于查看和管理&#xff1a;…