分享好友 最新动态首页 最新动态分类 切换频道
基于Ollama+AnythingLLM搭建本地私有知识库系统
2024-12-26 12:56

基于Ollama+AnythingLLM搭建本地私有知识库系统

1. 传统LLM应用的弊端       

        自OpenAI革命性的ChatGPT发布以来,在人工智能领域,特别是大型语言模型(Large Language Model,LLM)的能力进化速度之快令人惊叹,大模型浪潮已经席卷了几乎各行业。通过利用LLM的强大功能来解决复杂任务、增强自然语言理解和生成类人文本,从而可能颠覆各个领域。

       但是当涉及到专业场景或行业细分领域时,通用的基础大模型基本无法满足我们的实际业务需求,主要有以下几方面原因

  • 知识的局限性:模型自身的知识完全源于它的训练数据,而现有的主流大模型(ChatGPT、文心一言、通义千问)的训练集基本都是构建于网络公开的数据,对于一些实时性的、非公开的或离线的数据是无法获取到的,这部分知识也就无从具备。
  • 幻觉问题:所有的AI模型的底层原理都是基于数学概率,其模型输出实质上是一系列数值运算,大模型也不例外,所以它有时候会一本正经地胡说八道,尤其是在大模型自身不具备某一方面的知识或不擅长的场景。而这种幻觉问题的区分是比较困难的,因为它要求使用者自身具备相应领域的知识。
  • 数据安全性:对于企业来说,数据安全至关重要,没有企业愿意承担数据泄露的风险,将自身的私域数据上传第三方平台进行训练。这也导致完全依赖通用大模型自身能力的应用方案不得不在数据安全和效果方面进行取舍。既要保证安全,又要借助AI能力,那么最好的方式就是把数据全部放在本地,企业数据的业务计算全部在本地完成。

        其实问题还有很多,包括tokens的限制,虽然这个长期来看不是问题,各LLM供应商的tokens数量限制肯定会越来越大。但是,费用也许就是另外一个需要考虑的问题了。

2.  检索增强生成原理     

        检索增强生成(Retrieval-Augmented Generation,RAG),是一种使用外部知识库来补充大语言模型的上下文并生成响应的技术。 RAG结合了LLM中的参数化知识和非参数化外部知识,缓解了幻觉问题,通过检索技术识别及时的信息,并增强了响应的准确性。 此外,通过引用来源,RAG增加了模型输出的透明度和用户信任度。 RAG还可以通过索引相关文本语料库进行定制以适应特定领域。

       RAG的架构如图所示,简单来讲,RAG就是通过检索获取相关的知识并将其融入Prompt,让大模型能够参考相应的知识从而给出合理回答。因此,可以将RAG的核心理解为“检索+生成”,前者主要是利用向量数据库的高效存储和检索能力,召回目标知识;后者则是利用大模型和Prompt工程,将召回的知识合理利用,生成目标答案。

        完整的RAG应用流程主要包含数据准备和应用两个阶段。

        数据准备主要是将私域数据向量化后构建索引并存入数据库的过程。主要包括:数据提取、文本分割、向量化、数据入库等环节。文本分割主要考虑两个因素:1)embedding模型的Tokens限制情况;2)语义完整性对整体的检索效果的影响。向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果。数据向量化后构建索引,并写入数据库的过程可以概述为数据入库过程。

        应用阶段根据用户的提问,通过高效的检索方法,召回与提问最相关的知识,并融入Prompt;大模型参考当前提问和相关知识,生成相应的答案。

        我们可以化繁为简。把RAG——Retrieval Augmented Generation理解为Retrieval And  Generation,也就是检索与生成,在加上一个数据向量和索引的工作,我们对RAG就可以总概方式地理解为“索引、检索和生成”。

        可以看到,RAG与LLM相结合,成为现阶段自动构建私有/本地知识库的主要手段。

        构建本地知识库有三个方面,一是LLM,懂得怎么处理自然语言;二是嵌入模型,它的工作就是把复杂的数据简化,转化成易于处理的格式;最后是向量数据库,专门存储和管理那些转化后的数据。

        本文介绍利用Ollama和AnythingLLM构建自己的本地知识库。

        Ollama 是一个专注于本地运行大型语言模型(LLM)的框架,它使得用户能够在自己的计算机上轻松地部署和使用大型语言模型,而无需依赖昂贵的GPU资源。Ollama 提供了一系列的工具和服务,旨在简化大型语言模型的安装、配置和使用过程,让更多人能够体验到人工智能的强大能力。Ollama的下载和安装可以参考我之前写的另一篇文章(Window 11本地部署 Meta Llama3-8b,这里不再赘述。

1. AnythingLLM 简介

        AnythingLLM 是 Mintplex Labs 开发的一款可以与任何内容聊天的私人ChatGPT,是高效、可定制、开源的企业级文档聊天机器人解决方案。它能够将任何文档、资源或内容片段转化为大语言模型(LLM)在聊天中可以利用的相关上下文。

        AnythingLLM 支持多种文档类型(PDF、TXT、DOCX等,具有对话和查询两种聊天模式。

支持多种 LLM、嵌入模型和向量数据库

        LLM:包括任何开源的 llama.cpp 兼容模型、OpenAI、Azure OpenAI、Anthropic ClaudeV2、LM Studio 和 LocalAi。
        嵌入模型:AnythingLLM 原生嵌入器、OpenAI、Azure OpenAI、LM Studio 和 LocalAI。
        向量数据库:LanceDB(默认)、Pinecone、Chroma、Weaviate 和 QDrant。

        AnythingLLM 主要由三部分组成:收集器、前端和服务器。

  • collector:Python 工具,可快速将在线资源或本地文档转换为 LLM 可用格式。
  • frontend:ViteJS + React 前端,用于创建和管理 LLM 可使用的所有内容。
  • server:NodeJS + Express 服务器,处理所有向量数据库管理和 LLM 交互。

        可见,AnythingLLM是一个功能丰富,集成度很高的RAG框架,其在github上的开源项目(anything-llm,已经有1万2千多Star。它不仅仅是一个聊天机器人,是一个全栈应用程序,旨在通过一个精心设计的用户界面,为客户提供与文档、资源等进行智能对话的最简单方式。该工具的一个独特之处在于,它可以在后台简单地运行,而不需要使用大量的内存或资源。

        AnythingLLM将文档的容器化作为其基础。在这种情况下,不同的工作区可以共享相同的记录,但不能相互交互,从而允许用户为不同的用例维护不同的工作区。AnythingLLM包括两种聊天模式:对话模式,其中保留以前的问题;查询模式,指针对用户指定的文档进行简单的问答聊天。此外,对于公开可访问的文档,每个聊天响应还包括一个引用,链接到原始内容。

2. AnythingLLM 安装

        AnythingLLM安装有很多方式,一是到官方网站(Download AnythingLLM for Desktop)下载桌面版,然后双击即可。

        但是,与Docker版本相比,Desktop版本的功能要少很多,所以还是安装Docker版的吧。

        首先下拉一个镜像

 

        按照官方说明,输入下列命令: 

 

        然后就开源打开浏览器,输入网址http://localhost:3001/,显示Anyting LLM入口。

3. AnythingLLM 配置

        LLM选择

        选择 Ollama,填入 Ollama 的  端口,然后选择你下载的模型。

        咦,报错了

 

        哦,原因是AnythingLLM是运行在Docker容器中的,无法连接本地环回地址,得用这个地址: ,并选择LLM(llama3)。

4. AnythingLLM 测试

Embedding 和向量数据库配置

可以选择AnythingLLM 自带的 AnythingLLMEmbedder,以及默认使用内置的向量数据库 LanceDB。

        1. 配置worksapce

        点击新建文档库,填写名称testanythingllm。

        我们将本笔记存储为简单的txt文件,作为LLM的外部文档。点击按钮开始添加文档,并将文档点击出现就表示配置已经完成。

        作为对比,我们看一下,llama3本身的答案:是很通用的答案,与ollama和anythingllm没有联系。

        我们把llm换成对中文支持比较好的llama2 chinese版,看看这个问题的结果。

        可以看到,基于llama2中文版的AnythingLLM结果还是比较理想的。类似的,后面直接基于llama2的回答结果就有点“胡思乱语”了。

        本文首先介绍了LLM在落地应用中的不足,引入了RAG这个框架和原理,介绍了RAG在私有知识库中的重要作用。以Ollama和AnythingLLM为实现手段,构建了并测试了本地知识库。测试结果表明,有了RAG的加持,LLM的回答结果更加贴切,有效。

参考文献

最新文章
苹果怎么显示归属地
苹果手机作为现代通讯工具的重要组成部分,其归属地显示功能对于用户来说具有极大的便利性。然而,许多用户对于如何在苹果手机上设置和显示归属地信息并不十分了解。以下将详细解析这一功能,帮助用户更好地使用苹果手机。首先,确保你的苹
红米K50电竞版 OS1.0.8.0.ULJCNXM 面具ROOT服务
ROOT信息:机型:红米K50电竞版系统版本:OS1.0.8.0.ULJCNXM版本类型:稳定版安卓版本:14.0面具版本:27.0对应版本面具apk下载地址:http://tfile.7to.cn/qituroot/tool/Magisk-v27.0.apk手机ROOT完成开机后,请手动安装对应版本的面具APP
法院冻结不了三个银行
小编导语在当今社会,金融机构在经济活动中扮演着至关重要的角色。银行作为资金流动的中介,不仅支持经济发展,还为个人和企业提供了必要的金融服务。当法院需要对某些资金进行冻结时,往往会遇到各种法律和实际操作上的挑战。本站将探讨“
欧洲影院的多样性与独特魅力:它们如何在全球影坛占据一席之地
欧洲影院作为全球电影产业的一部分,其独特的文化、历史和观影体验吸引了无数影迷和旅游者。欧洲电影的制作风格、电影节以及影院本身的设计,形成了与其他地区截然不同的氛围。无论是经典的独立艺术影片,还是充满现代感的数字影像技术,欧
相信“感觉” 河北曲阳县购彩者中排列五100万元
投注方式中奖注数中奖金额排列3直选全国{d.list.pls.zjqk[0].qgzjzs}注/广西{d.list.pls.zjqk[0].gxzjzs}注{d.list.pls.zjqk[0].dzjj}元组选3全国{d.list.pls.zjqk[2].qgzjzs}注/广西{d.list.pls.zjqk[2].gxzjzs}注{d.list.pls.zjqk[2].dzj
网站外部链接建设工作内容
在搜索引擎优化()的实践中,是一项至关重要的工作。外部链接,也称为反向链接或入站链接,指的是其他网站指向你网站的链接。这些链接不仅可以提高网站的流量和曝光度,还能对搜索引擎排名产生积极影响,本文将详细说明网站的日常工作与细
策划大规模“钢铁+AI”场景应用为公司生产经营注入数智新动能!邹继新会见华为公司高级副总裁邹志磊!
点击上方“冶金信息网“,关注我们……新会员点击“阅读原文”订阅冶金信息网手机版;已订阅会员直接登录,联系小编,可获得一周试用。4月2日下午,宝武党委常委、宝钢股份党委书记、董事长邹继新会见了来访的华为公司高级副总裁邹志磊一行
迈腾330豪华播放视频支持mkv格式吗
汽车元宝大梁的结构在元宝大梁的结构中通常要求具有较高的刚度。主架与元宝横梁之间可加一层橡胶垫。当主架变形时,利用弹性橡胶的变形减弱元宝横梁对主架的冲击力。注意元宝梁安装在汽车底盘上时,其前端应尽量靠近驾驶室后部。当主架变形
武邑网站排名优化费用是如何计算的?
武邑网站优化中原创内容真的更容易收录和排名吗?武邑搜索引擎喜欢的并非原创内容,而是有价值的原创内容,很多人把这一点理解错了,认为只要文字是原创即可,所以很多人通过翻译国外文章,在APP中找文章以及其他的渠道获得低质量的原创文
相关文章
推荐文章
发表评论
0评