AnythingLLM+Ollama,基于RAG方案构专属私有知识库

关于RAG

简介
检索增强生成(Retrieval-Augmented Generation,RAG)是一种结合了信息检索和语言模型的技术,它通过从大规模的知识库中检索相关信息,并利用这些信息来指导语言模型生成更准确和深入的答案。这种方法在2020年由Meta AI研究人员提出,旨在解决大型语言模型(LLM)在信息滞后、模型幻觉、私有数据匮乏和内容不可追溯等问题。

在日常工作和学习中,我们时常会面对大量的PDF、Word、Excel等文档,需要从中查找特定的信息或内容。然而,传统的Ctrl+F搜索方式在面对海量文档或复杂格式时,往往效率低下,令人头疼。如果使用AnythingLLM 工具,它将彻底改变你处理文档的方式。

工作原理

在这里插入图片描述
在这里插入图片描述

RAG 的主要流程主要包含以下 2 个阶段:

  1. 数据准备阶段: 管理员将内部私有数据向量化后入库的过程,向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果;入库即将向量数据构建索引,并存储到向量数据库的过程。
  2. 用户应用阶段: 根据用户的 Prompt 提示词,通过检索召回与 Prompt 提示词相关联的知识,并融入到原 Prompt 提示词中,作为大模型的输入 Prompt 提示词,通用大模型因此生成相应的输出。

从上面 RAG 方案我们可以看出,通过与通用大模型相结合,我们可搭建团队私有的内部本地知识库,并能有效的解决通用大模型存在的知识局限性、幻觉问题和隐私数据安全等问题。

实现方案

目前市面上已经有多个开源 RAG 框架,这里将选择AnythingLLM框架(16.8K ☆ ,https://github.com/Mintplex-Labs/anything-llm)与大家一起来部署我们自己或者团队内部的本地知识库。整个部署过程将涉及以下几个方面:

  1. 环境准备: AnythingLLM框架推荐使用 Docker 部署,因此我们需要提前把 Docker 安装和配置好
  2. 大模型准备: 老牛同学继续使用Qwen2-7B大模型,大家可以根据自己实际情况选择,无特殊要求
  3. RAG 部署和使用: 即 AnythingLLM 安装和配置,并最终使用我们大家的 RAG 系统

一、什么是AnythingLLM?

官网https://anythingllm.com/
AnythingLLM是一个AI聊天系统,它允许用户构建自己的私人ChatGPT。与依赖云服务的AI工具不同,AnythingLLM支持本地开源和商用闭源的大语言模型(LLM),用户可以根据自己的需求和预算选择合适的模型。

二、AnythingLLM的核心功能

  • 文档智能聊天:只需导入文档,AnythingLLM就能自动进行上下文分析和内容整理,用户可以通过对话的方式快速提取关键信息。
  • 自定义AI代理:用户可以为每个工作区创建不同的AI代理,实现高度的定制化。例如,可以创建一个专门处理Python代码的AI代理,另一个则专门用于处理PDF文档。
  • 多模式支持:无论是免费的开源模型还是付费的商用模型,AnythingLLM都能兼容,为用户提供极大的灵活性。
  • 广泛的文档支持:从PDF、TXT到Word、Excel,几乎所有常见的文档格式都支持。
  • 嵌入式聊天小部件:用户可以将AnythingLLM嵌入到自己的网站中,为网站用户提供自动化的智能客服服务。
  • 团队协作支持:通过Docker容器,多个用户可以同时使用AnythingLLM,非常适合团队开发或公司内部使用。
  • 丰富的API接口:开发者可以轻松集成AnythingLLM到现有的应用中,实现更多定制化功能。

三、AnythingLLM的安装与使用

安装AnythingLLM非常简单,官方文档详细明了,按照步骤操作即可。对于开发者来说,一条命令就能完成Docker部署,几分钟就能跑起来一个完整的私人ChatGPT系统。对于不太懂技术的小伙伴来说,也有详细的教程帮助上手。

使用上,用户只需通过拖拽的方式将文档放入工作区,然后就可以开始与文档“聊天”了。这个过程非常自然,就像与人对话一样,用户可以直接让AI分析提取重要内容,无需再翻阅大量文档或使用关键词搜索。

四、AnythingLLM的适用场景

  • 个人学习助手:对于学生或知识工作者来说,AnythingLLM是强大的学习助手,可以帮助他们快速获取书籍、论文等学习资料中的信息。

  • 企业文档管理:企业内部的文档种类繁多,通过AnythingLLM的工作区机制,企业可以分类管理文档,提升整体工作效率。

  • 开发者定制应用:开发者可以利用AnythingLLM的API集成到现有系统中,打造符合自己需求的AI应用。

  • 网站智能客服:对于需要客服支持的网站来说,可以将AnythingLLM嵌入网站中,为用户提供快速解答。

五、安装

采用 AnythingLLM与Ollama 结合使用的方式,快速搭建本地AI

接下来仅讲解一下如何安装 AnythingLLM 以及配置

安装并配置AnythingLLM
在这里插入图片描述

方案一、AnythingLLM本地客户端

  1. 访问AnythingLLM官网,下载适合自己操作系统的安装包。
  2. 按照安装向导完成安装,并打开AnythingLLM应用程序。
    有点慢在这里插入图片描述
  3. 在AnythingLLM中,点击左下角的“设置图标”。
  4. 智能提供商>LLM 首选项中,选择Ollama作为LLM提供者。
  5. URL填写Ollama的默认地址(如http://127.0.0.1:11434)。
    在这里插入图片描述

ollama的安装见上文

  1. 选择已经下载并运行的Ollama模型(如qwen)。
  2. 其他设置如Embedding Preference等,根据需要进行配置。
    在这里插入图片描述

使用AnythingLLM与Ollama进行对话和文档处理

  1. 在AnythingLLM中,新建一个工作区。
  2. 将需要处理的文档拖拽到工作区中。
  3. 开始与文档进行对话,AnythingLLM将利用Ollama提供的LLM能力进行智能分析和回答。

或者将LLM 切换为deepSeek, 适用于无需安装ollama的环境
在这里插入图片描述
在这里插入图片描述
5. 上传
在这里插入图片描述
上传的示例如图
在这里插入图片描述
尝试提问
在这里插入图片描述

方案二、 docker版

环境准备
Windows 打开虚拟化功能(Hyper-V 和 WSL)

友情提示: 这里用的是 Windows 操作系统,因此下面是 Windows 的配置方式。

安装 Docker 需要用到虚拟化,因此需要 Windows 系统打开Hyper-V和WSL 子系统功能。如果是 Windows 11 家庭版,默认并没有安装Hyper-V功能,可以通过以下方式进行安装:
在这里插入图片描述
【第一步(家庭版):安装 Hyper-V 依赖包】

  1. 新建一个 txt 临时文本,并复制以下代码并保存,之后把该临时文件重命名为Hyper-V.bat​
  2. 右键以管理员方式运行Hyper-V.bat​,本代码自动安装相关包,完成之后输入Y​重启电脑后即可
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

【第二步:开启虚拟化功能】

首先,打开 Windows 功能(即:控制面板):
在这里插入图片描述
然后,勾选以下 3 个选项(Hyper-V、适用于 Linux 的 Windows 子系统和虚拟机平台),打开虚拟化功能:
在这里插入图片描述
打开虚拟化功能
点击确定之后重启电脑即可!‍‍

Docker Desktop安装配置

这里之前文章有介绍,可参考,这里不再赘述‍‍
在这里插入图片描述

AnythingLLM 安装和配置

接下来,开始安装和部署AnythingLLM框架,包含以下 3 步:

  1. 下载 AnythingLLM 镜像
    https://github.com/Mintplex-Labs/anything-llm/blob/master/locales/README.zh-CN.md
docker pull mintplexlabs/anythingllm

在这里插入图片描述
4.2 启动AnythingLLM 镜像
Windows 系统: AnythingLLM 镜像挂载和启动命令(因为命令有多行,需要通过PowerShell执行):

# Run this in powershell terminal
$env:STORAGE_LOCATION="$HOME\Documents\anythingllm"; `
If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory}; `
If(!(Test-Path "$env:STORAGE_LOCATION\.env")) {New-Item "$env:STORAGE_LOCATION\.env" -ItemType File}; `
docker run -d -p 3001:3001 `
--cap-add SYS_ADMIN `
-v "$env:STORAGE_LOCATION`:/app/server/storage" `
-v "$env:STORAGE_LOCATION\.env:/app/server/.env" `
-e STORAGE_DIR="/app/server/storage" `
mintplexlabs/anythingllm;

在这里插入图片描述

linux

export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm

在这里插入图片描述

在这里插入图片描述

启动完成,通过浏览器打开AnythingLLM界面:http://localhost:3001
在这里插入图片描述

4.3 配置 AnythingLLM
点击Get started 按钮,进入LLM 选择页面。在这里选择Ollama方式。
在这里插入图片描述

如果大家重新设置了端口号,则需要看下 Ollama URL 端口号是否正确,默认值为:http://host.docker.internal:11434​

在这里插入图片描述
这里可以根据情况,配置当前用户使用,还是团队使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AnythingLLM 设置确认,包括:大模型提供方、词嵌入和向量数据库,这些配置后续还可以修改。

最后,创建一个工作区,这里设置的名称为:My workspace
在这里插入图片描述

五、AnythingLLM 导入数据和使用
上一步配置完成之后,无需任何其他配置,就可以和大模型对话聊天了,和通过其他客户端与大模型对话没有区别。接下来,我们需要导入我们内部私有数据,并进行验证。

5.1 导入内部数据
我们在电脑本地新建一个 txt 文件,文件名为:为什么个人、团队等均有必要部署私有化的RAG知识库系统.txt​,文件内容就是本文的开头内容:

自ChatGPT发布以来,大型语言模型(Large Language Model,LLM,大模型)得到了飞速发展,它在解决复杂任务、增强自然语言理解和生成类人文本等方面的能力让人惊叹,几乎各行各业均可从中获益。


然而,在一些垂直领域,这些开源或闭源的通用的基础大模型也暴露了一些问题,主要有以下3个方面:


1. **知识的局限性:** 大模型的知识源于训练数据,目前主流大模型(如:通义千问、文心一言等)的训练数据基本来源于网络公开的数据。因此,非公开的、离线的、实时的数据大模型是无法获取到(如:团队内部实时业务数据、私有的文档资料等),这些数据相关的知识也就无从具备。
2. **幻觉问题:** 大模型生成人类文本底层原理是基于概率(目前还无法证明大模型有意识),所以它有时候会**一本正经地胡说八道**,特别是在不具备某方面的知识情况下。当我们也因缺乏这方面知识而咨询大模型时,大模型的幻觉问题会各我们造成很多困扰,因为我们也无法区分其输出的正确性。
3. **数据的安全性:** 对于个人、创新团队、企业来说,**数据安全**至关重要,老牛同学相信没有谁会愿意承担数据泄露的风险,把自己内部私有数据上传到第三方平台进行模型训练。这是一个矛盾:我们既要借助通用大模型能力,又要保障数据的安全性!


为了解决以上3个大模型通用问题,**检索增强生成**(Retrieval-Augmented Generation,**RAG**)方案就应运而生了!

首先,点击RAG-ClassmateWX工作空间右边的上传图标,准备上传本 txt 文件:

在这里插入图片描述
准备上传文件;然后,点击 txt 文件并上传,并点击Move to workspace导入到工作空间:
在这里插入图片描述
上传txt外部文件。最后,点击Save and Embed完成 txt 文本文件数据准备步骤(导入、向量化和入库等)。

在这里插入图片描述

5.2 内部数据使用和验证
回到主界面,输入刚才 txt 内部文件名:为什么个人、团队等均有必要部署私有化的 RAG 知识库系统
在这里插入图片描述

同时,用同样的问题,咨询 AnythingLLM 的底层模型,大家可以对比看下:
在这里插入图片描述

总结和问题

和之前的大模型部署和应用过程相比,基于 AnythingLLM 的 RAG 实现整个部署过程比较繁琐,包括环境准备、Docker 安装和配置、AnythingLLM 配置等。然而,AnythingLLM 的使用过程却相对比较简单,只需要上传数据文件,AnythingLLM 框架屏蔽了中间的数据提取分割、向量化处理、向量索引和入库、检索召回和重组 Prompt 提示词等过程。

同时,通过构建本地知识库,做了一个简单的测试验证,测试结果表明,在使用 RAG 的情况下,大模型的回答结果更加有效、更符合我们期望,同时具备了一定的创造性!

注意事项

资源要求:运行大型语言模型需要一定的内存或显存。请确保您的计算机满足Ollama和所选模型的资源要求。

网络问题:在下载模型时,可能会遇到网络问题导致下载速度缓慢或失败。此时可以尝试重启电脑或重启Ollama服务来解决问题。

模型选择:根据自己的需求和预算选择合适的模型。免费的开源模型可能适合个人学习或小型项目,而付费的商用模型则可能提供更高的性能和准确性。

通过以上步骤,您可以将AnythingLLM与Ollama成功结合,并利用这一强大的组合进行智能对话和文档处理。无论是个人学习还是企业团队协作,这一解决方案都将为您提供极大的便利和效率提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤胜骄阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值