赞
踩
【本文作者:擎创科技产品专家 布博士】
本文详细介绍了如何使用LM Studio和Anything LLM工具来构建和部署本地知识库。文中首先解释了安装和配置大模型的步骤,随后展示了如何将模型部署为后台服务,并通过API进行调用。此外,文章还涉及了如何使用这些工具快速构建知识库应用,包括知识库的配置和问答系统的设置。整个过程强调了无需深厚编程知识即可实现快速部署和使用,适合业务专家和产品设计人员使用。
最近一直在寻找一套最佳的基于大模型的知识库系统解决方案,需要具有如下能力:
能够快速将大型模型进行本地化的部署使用。
结合大语言模型,能有一套良好的知识库系统,方便使用。
针对业务专家和产品设计人员,即使不懂代码,也能快速构建产品原型,了解基于大型模型知识体系的构建过程,并能选型大语言模型。
针对算法人员,“套壳”大模型或微调大模型,可通过一款工具完成本地化的快速部署和分发,而不需要自己单独写一个服务。
针对开发人员,可将算法开发好的模型快速构建成后台服务,且为OpenAI标准的服务API,能让开发团队快速进行大型模型的接入测试和验证。
针对测试人员,可以在构建的大型模型和知识库问答应用中进行快速测试,并跟踪各个环节的结果,如embedding的召回结果是否覆盖所有知识点,可通过接口调用日志进行快速查看。
针对甲方的企业要快速验证知识库项目的可行性,可以使用这两个工具搭建本地的测试环境。这样可以对一些关键技术进行全流程化的跟踪调试,待验证没有问题再进行立项或系统的集成。
最终选择了LM studio + Anything LLM搭建本地知识库。
LM Studio是一款桌面软件,安装后,经过简单的配置即可使用。登录https://lmstudio.ai/ 即可看到如下界面,按自己的操作系统进行下载即可。
安装完成之后,登录系统的主界面如下图所,可以看到其默认界面如下:
安装完成!!!
在LMs studio的首页即提供了大模型列表及搜索能力,可以从hugging Face上获取支持的大模型列表,并可以通过搜索获取关注的大模型。如下图搜索最近也比较火的Mistral:
点击“download”可以将想要的大模型下载到本地磁盘中。
查看下载进度条
2. 点击My models图标,即可查看本地下载的大模型列表,在这里我本身下载了4个大模型(LLama-3、LLama-3 chinese、gemma,刚刚下载的mistral)、一个embedding Model(据说是一个比较好的embedding算法),还有一个是自己通过LLama-3套壳的本地模型:
下载了模型之后,就来验证一下这个模型能否正常使用,进入AI chat界面:
是选择模型,选择我们刚下载的mistral,左侧可以显示该模型在执行时的内存及cpu占用情况。
是针对该模型的聊天历史
是针对该模型进行对话时的参数配置,这里我们默认即可
是聊天的主交互界面。
以下是Mistral模型回答的结果,问题都理解出错了:
换成最近超火的LLama 3:8b之后结果还是不错的:
点击“local server“,进入服务配置界面:
选择做为后台服务的大语言模型,在这里选择llama3
embedding算法,这里选择了一个社区比较推荐的nomic-ai-nomic embed text算法
配置做为后台服务的端口,并启动server
针对python在不同的场景下的示例代码
服务器的logs界面,每一次api的调用日志在这里都可以看得到,方便进行问题排查,还有就是embedding算法返回结果是否召回的验证非常有帮助,方便算法和测试人员进行模型测试和调优使用。
Anything LLM有两个版本,一是桌面安装版本,另一是通过Docker进行部署的版本。我选择安装桌面版,有兴趣的同学可以研究一下Docker版本,它增加了用户权限管理功能,并可以进行企业级应用部署。它是开源的,可以在真正的生产环境中使用Anything LLM作为知识库的后台系统,并开放API供前端业务系统集成。
登录网站https://useanything.com/download 并选择适用自己的版本:
下载到本地后直接像普通软件一样安装即可,由于本地已经完成了安装,在此就不再进行安装了。
安装完成之后,有三个比较重要的配置:
配置大模型:
推荐使用LM Studio,因为他还是比较方便调试的。在这里输入LMStudio后台服务的URL,选择模型和token的大小。
另外,也可以选择openai或AnythingLLM,如果选择AnythingLLM,如下图所示,列表了其支持的大语言模型,选择了对应的模型点击“save changes“时,在后台会下载对应的大模型到本地。因此,AnythingLLM也可以自行体系独立运行。
配置embedding模型(用于对语言档切分和向量数据库中知识内容的相似性判断并召回,该算法的好坏,直接影响大模型的推理结果),在这里也可以有多种选择,我选择使用LMStudio中的nomic-edmbed-text-v1.5,如下图所示:
向量数据库:在这里我选择了一个轻量级的LanceDB,如下图所示:
返回主界面之后,默认如下图所示,没有任何应用:需要我们创建一个新的workspace。
需要我们创建一个新的workspace,点击“new workspace”之后,创建一个新的worksapce:
针对新创建的itops工作区,需要为其增加知识库的内容,我手动创建了一份markdown格式的应急预案文档,文包括大致内容如下:
在AnythingLLM界面点击上传按钮,可以将本地的文件或来自某一个网站的站点内容进行抓取,并当成知识库的内容。
点击上传本地的文件:
上传后由于要对文件进行切分操作,在之前的配置中,我们配置了embedding算法使用的是LM Studio推荐的nomic-ai-nomic embed text算法,因此会直接调用LM Studio的后台服务对文档进行切分,如下图为后台日志:
至此知识库配置完成,下面将使用智能问答系统。
现在我们来问“数据库异常锁表故障”,看下结果如何:
首先,当我输入这个问题之后,第一件要做的事件就是调用LM Studio后台提供的API,这时会在Server Logs的控制台界面,看到调用过程,以及从知识库中召回的相关知识点:
当获取了这些召回的知识时,LM Studio的大语言模型(这里用的llama 3)就会执行推理的结果返回给Anything LLM,结果如下:
对比一下知识内容的原文,效果还是非常不错的,原文如下:
至此,大型模型的知识库系统已经搭建完毕,并已完成从知识构建到知识问答结果展示的整个过程。
下一步,我们将对问答的结果进行评估,并优化问答系统的结果,以使其在生产上得以应用。
敬请期待!
———— THE END ————
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。