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

news2024/11/24 14:53:48

什么是 RAG

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

RAG与LLM的关系

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

下图是 RAG 的一个大致流程:

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

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

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

实践

现成方案

现成的方案有很多

本文将采用 Ollama + Qwen2.5 +AnythingLLM 来实现本地知识库

Ollama 大法

Ollama 与 LLM 的关系可以这样理解:Ollama 本身不是 LLM,而是一个服务于 LLM 的工具。它提供了一个平台和环境,使得开发者和研究人员能够在本地机器上轻松地运行、测试和部署各种大型语言模型

github:github.com/ollama/olla…

下载安装 Ollama 和大模型

下载地址:www.ollama.com/download ,支持 Windows、Mac、Linux。

当然你也可能用 Docker 安装镜像,官方镜像 hub.docker.com/r/ollama/ol…更多细节请参考 github 的 Readme:github.com/ollama/olla…

当你运行 ollama --version 命令成功查询到版本时,表示 Ollama 的安装已经顺利完成。

接下来便可以用 pull 命令从在线模型库下载模型,比如:

bash
复制代码
ollama pull llama2

还有更简单的方法直接使用 run 命令,它会在 运行之前自动检查模型是否下载,如果没有会自动下载

bash
复制代码
ollama run llama3

但是我想搭建的是本地知识库,当然是以中文为主,所以需要对中文支持最好的模型,但是:

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

  • Llama2-Chinese:基于Llama2微调。搜“Chinese”关键词就能找到。
  • Qwen 1.5:阿里的通义千问。一共有6个尺寸,默认是4b。所有尺寸的模型都支持32K的上下文长度。多语言支持。

本想用 智谱的 GLM( huggingface.co/THUDM/chatg… ),奈何不兼容 Ollama,也没有 GGUF 格式文件,于是作罢。巧的是阿里的 通义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)。多个评测基准上的领先表现;代码和数学能力显著提升。

顺序介绍一下中文大模型,可能通过这个仓库了解:github.com/HqWu-HITCS/…

安装并运行 Qwen2 模型,注意这里由于我笔记本配置问题,所以选用的是 7B 参数的模型

bash
复制代码
ollama run qwen2:7b

模型下载的默认路径是:/Users/${home}/.ollama/models

以下是我机器的配置,mac intel芯片

安装完成后就可以对话了:

open web UI

通过命令行交互的方式不算太友好,所以我们需要一个好看好用的 UI 界面来与模型进行交互。

Open Web UI 就是这样一个软件 github.com/open-webui/… ,它通过Docker 可以非常容易的进行部署

部署完成后,这样使用是不是就友好多了?

但由于我们是要搭建一个个人本地知识库,需要对知识库有更多的掌控,Open Web UI 有些不满足需要,所以我们要用另一个软件。

AnythingLLM

我们先下载安装 AnythingLLM :useanything.com/download

完成安装后大概长这个样子:

然后我们就要开始选择模型了

这里注意,我们要用服务器模式启动 Ollama,Ollama其实有两种模式:

  1. 聊天模式
  2. 服务器模式

所谓服务器模式,你可以简单理解为,Ollama在后端运行大模型,然后开放一个端口给到别的软件,让那些软件可以调用大模型的能力。要开启服务器模式非常简单。在终端里输入:ollama serve

用服务器模式启动 Ollama 后:

  • 在AnythingLLM界面中选择 Ollama
  • 然后在 Base URL中填:http://127.0.0.1:11434
  • 模型选择之前下载的 Qwen2.5 7b
  • Token context window 可以先用默认的 4096

完成以上设置后来到下一步

搭建一个知识库,会涉及到另外两个关键:

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

上图中就是默认的嵌入模型以及向量数据库,我们先使用默认的。

  • 然后往下走,下一步是填写个人信息,这步我就省略了。
  • 再下一步是给你的 workspace 起名,我也省略

接着你就可以在建好的 workspace 中上传你的个人知识库的内容了

你可以上传文件(支持多种格式 pdf word…),甚至是一个外部的网站链接,不太好的是它不能上传一个文件夹,如果你的文件夹是包含多级目录的,那么它无法识别,你需要把所有文件平铺放在同一级目录中再全选上传。

数据源也可以是其他知识网站:

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

  1. 对话模式:大模型会根据你给的文档,以及它本来就有的知识储备,综合起来回答。
  2. 查询模式:大模型只是简单地针对文档进行回答。

比如我随便上传了一个 《劳动合同法》 的 pdf 文件,用查询模式进行对话:

虽然不太对,但内容是从我上传的文件里找到的,还可以点击查看源文件。

我将笔记本中的很多计算机相关的 markdown 文件作为“知识” 上传后,进行问答:

至此,我的本地个人知识库就搭建完成了!

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

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

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

相关文章

wmv转换mp4怎么操作?3个格式转换方法分享

wmv转换mp4怎么操作?将WMV转换为MP4格式,可以方便我们在多种设备和平台上流畅播放视频。MP4格式具有广泛的兼容性和优化过的编码,使其在各种媒体播放器、智能手机、平板电脑以及电视上都能得到良好的支持。此外,MP4格式的视频文件…

12.1 Go 测试的概念

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

C语言——自定义类型:结构体

前言 本篇博客位大家介绍C语言中一块儿重要的内容,那就是结构体,关于结构体的内容,大家需要深入掌握,在后面的学习中依然会用到,如果你对本文感兴趣,麻烦点进来的老铁一键三连。多多支持,下面我…

WPS JS宏获取自动筛选后的行数

//WPS JS宏获取自动筛选后的行数 function getFilterRowCnt(shtRng)//shtRng表示筛选目标工作表范围 {let lngRowCnt 0;for(let rngCell of shtRng.SpecialCells(xlCellTypeVisible).Areas)//获取自动筛选后的单元格行数{lngRowCnt lngRowCnt rngCell.Rows.Count;}return ln…

Metes and Bounds Pro for Mac——开启智能地产测量新时代

在数字化时代,Metes and Bounds Pro for Mac以其智能化和高效性引领了地产测量领域的新潮流。这款软件采用了先进的人工智能技术,能够自动识别和提取地块信息,极大地提高了测量工作的速度和准确性。此外,Metes and Bounds Pro还支…

【GreenHills】如何使用GHS对于不同的文件进行文档内容对比

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 利用GHS对于不同的文件进行对比。 2、 问题场景 在项目开发过程中,会对于工程进行版本管理,对于没有项目管理工具的客户,想要对于当前版本的源文件和上一版或其他版本的源文件进行…

Anzo Capital昂首资本总结斐波纳契指标7个特点

斐波纳契指标是一种强大的技术分析工具,被誉为交易者的“神秘武器”,用于预测金融市场中的价格走势和潜在反转点。下面是Anzo Capital昂首资本总结的斐波纳契指标的7个特点: 1. 识别趋势:首先,斐波纳契指标可以快速确…

旅游行业电商平台:数字化转型的引擎与未来发展趋势

引言 旅游行业数字化转型的背景和重要性 随着信息技术的飞速发展,数字化转型成为各行业发展的必然趋势。旅游行业,作为一个高度依赖信息和服务的领域,数字化转型尤为重要。通过数字化手段,旅游行业能够实现资源的高效配置、服务的…

tvm实战踩坑

今天玩了一下tvm的安装 我要安装v0.14.0的版本 所以按照官网的方法 https://tvm.apache.org/docs/install/from_source.html#python-package-installation git clone --recursive https://github.com/apache/tvm tvmgit checkout v0.14.0recursive是很重要的 这一步可以替换成…

蓝桥杯软件测试第十五届蓝桥杯模拟赛1期题目解析

PS 需要第十五界蓝桥杯模拟赛1期功能测试模板、单元测试被测代码、自动化测试被测代码请加🐧:1940787338 备注:15界蓝桥杯省赛软件测试模拟赛1期 题目1 功能测试用例1(测试用例)(15分) 【前期准备】 按步…

优化查询性能:DolphinDB 时间类型数据比较规则详解

在数据库中,时间是一种常见的数据类型。在处理时间数据时,比较操作是非常常见的需求。然而,在不同的场景下,对时间类型数据进行比较时应用的规则不同。本文将从 DolphinDB 支持的时间类型开始,由浅入深分别介绍时间类型…

鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)

3、MMU汇编代码 在arch\arm\arm\include\arm.h文件中,封装了CP15协处理器相关的寄存器操作汇编函数。我们主要看下MMU相关的部分。 3.1 CP15 C2 TTBR转换表基地址寄存器 代码比较简单,结合下图,自行查看即可。该图来自《ARM Cortex-A9 Tec…

minIo ubuntu单节点部署

资源准备 minio二进制包 下载地址:https://dl.min.io/server/minio/release/linux-amd64/minio ubuntu-单节点部署 选择一台ubuntu18.04机器10.253.9.41、intel 或者 amd 64位处理器 上传minio到~目录 sudo cp minio /usr/local/bin/ sudo chmod x /usr/local/bin/minio 设…

python pip下载镜像

官网:python https://pypi.python.org/simple 阿里: pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com packagename 腾讯: pip install -i https://mirrors.cloud.tencent.com/pypi/simple --tr…

CC攻击的有效应对方案

随着互联网的发展,网络安全问题愈发突出。CC攻击(Challenge Collapsar Attack),一种针对Web应用程序的分布式拒绝服务(DDoS)攻击方式,已经成为许多网络管理员和网站拥有者不得不面对的重大挑战。…

reGeorg隐秘隧道搭建

reGeorg隐秘隧道搭建 【实验目的】 通过学习reGeorg与Proxifier工具使用,实现外网攻击端连接内网主机远程桌面。 【知识点】 python、reGeorg、proxifier。 【实验原理】 在内网渗透中,由于防火墙的存在,导致无法对内网直接发起连接&#xff…

Java中List流式转换为Map的终极指南

哈喽,大家好,我是木头左! 在Java编程中,经常需要将一个List对象转换为另一个Map对象。这可能是因为需要根据List中的元素的某些属性来创建一个新的键值对集合。在本文中,我将向您展示如何使用Java 中的流式API轻松地实…

机器学习:数据分布的漂移问题及应对方案

首先,让我们从一位高管告诉我的一个故事开始,很多读者可能对此感同身受。 大约两年前,他的公司聘请了一家咨询公司开发一个机器学习模型,帮助他们预测下周每种食品杂货需要多少,以便他们可以相应地补货。这家咨询公司…

【SQL边干边学系列】08高级问题-4

文章目录 前言回顾高级问题48.客户分组49.客户分组-修复null50.使用百分比的客户分组51.灵活的客户分组 答案48.客户分组49.客户分组-修复null50.使用百分比的客户分组51.灵活的客户分组 未完待续 前言 该系列教程,将会从实际问题出发,边干边学&#xff…

qmt量化交易策略小白学习笔记第29期【qmt编程之获取行业概念数据--如何下载板块分类信息及历史板块分类信息】

qmt编程之获取行业概念数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 获取行业概念数…