分享好友 最新动态首页 最新动态分类 切换频道
基于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的回答结果更加贴切,有效。

参考文献

最新文章
配置typora图片上传服务器
EasyTyporaEasyTypora是一个为Typora添加私用化图床的实用小工具,要使用本项目,你需要有自己的一台云服务器~本项目永久地址:通过这个项目你能得到什么?在2021年,配合Typora使用,即使不买图床,也能获得极致的Markdown写作体验。学会
新闻广告投放费用贵吗?这样投放更省钱!
新闻广告投放费用贵吗?这样投放更省钱!新闻广告投放费用贵吗?这样投放更省钱!标题:新闻广告投放费用贵吗?这样投放更省钱!在现代信息的时代,新闻广告作为一种有效的宣传手段,被众多企业视为提升品牌知名度、扩大市场份额的重要途径
网站发布排名优化,提升网站在搜索引擎中的可见性与权威度,网站发布排名优化方案
网站发布排名优化方案旨在提升网站在搜索引擎中的可见性与权威度。通过优化网站内容、建立高质量外部链接、提升网站速度、增强用户体验以及定期更新网站信息,可以有效提高网站在搜索引擎中的排名。还需关注竞争对手的动态,及时调整优化策
非华为电脑管家 V11.1.6.30 汉客儿版免费软件全功能绿色商业破解版注册码下载
非华为电脑管家 V11.1.6.30 汉客儿版免费软件宁缺见识多(见多识广)果实累累毋滥32. 在我们的城市里,夏季上演得太长,秋色就不免出场得晚些。但秋实永远不会被混淆的——这坚硬明朗的金属季。让我们从微凉的松风中去任取,让我们从新刈的
苹果采集插件全套教程-苹果cmsV10采集插件
最近几年随着互联网时代的发展,做电影网站的站长越来越多了,加入此行列的人也是与日俱增!但是很多站长都是跟风来做电影站的,怎么做一点思路都没有。电影资源都不知道怎么来的。今天就教大家怎么做好电影站,文章有点长请大家耐心观看,
【纵深推进“三抓三促”行动】庄浪:解难题办实事暖人心
  原标题:【纵深推进“三抓三促”行动】庄浪:解难题办实事暖人心  新甘肃·甘肃日报记者 田丽媛  窗外,雪花飞舞;室内,温暖如春。  “今年暖气真暖和!”说起今冬供暖,家住庄浪县朝阳社区水利小区的李明月老人感慨地说。  
天眼3D高清卫星地图下载
下载天眼3D高清卫星地图到手机上面的方法有很多。 安卓系统的手机可以在豌豆荚或者PP助手等手机助手里面一键下载安装!也可以通过电脑端用手机扫描天眼3D高清卫星地图下载的二维码获取下载链接!有手机端直接访问网页下载也是可以的,下面
预测模型自变量太多怎么筛选?这篇Lancet子刊如何从249个变量筛出11个
基于传统危险因素的风险预测模型虽然也能够有效的区分未来低风险和高风险的个体,但由于缺乏特异性和对复杂风险因素的不完整描述,临床适用性受到限制。因此越来越多的学者引入蛋白质组学、循环代谢物等分子层面信息作为预测因子提高模型的
营口SEO推广收费揭秘,解析奥秘与明智选择之道
营口SEO推广收费标准揭秘:本文深入剖析营口SEO推广行业收费规则,揭示行业奥秘,为企业和个人提供合理选择SEO推广服务的指南。通过对比分析,助您了解费用构成,避免陷入陷阱,实现高效SEO推广。随着互联网的快速发展,越来越多的企业开始
相关文章
推荐文章
发表评论
0评