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

什么是 RAG

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

RAG与LLM的关系

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

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

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

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

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

实践

现成方案

现成的方案有很多,比如:

  • https://www.53ai.com/news/gerentixiao/1889.html

  • https://github.com/chatchat-space/Langchain-Chatchat

  • https://www.anjhon.top/llms-mac-local-rag

  • https://github.com/1Panel-dev/MaxKB?tab=readme-ov-file

  • https://www.youtube.com/watch?v=Gh4plFSbW8M

  • https://qanything.ai/

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

Ollama 大法

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

github:https://github.com/ollama/ollama

下载安装 Ollama 和大模型

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

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

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

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

ollama pull llama2   

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

ollama run llama3   

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

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

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

  • Qwen 1.5:阿里的通义千问。一共有6个尺寸,默认是4b。所有尺寸的模型都支持32K的上下文长度。多语言支持。

本想用 智谱的 GLM( https://huggingface.co/THUDM/chatglm3-6b ),奈何不兼容 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)。多个评测基准上的领先表现;代码和数学能力显著提升。

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

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

ollama run qwen2:7b      

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

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

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

open web UI

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

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

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

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

AnythingLLM

我们先下载安装 AnythingLLM :https://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 文件作为“知识” 上传后,进行问答:

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

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值