【本文作者:擎创科技产品专家 布博士】

本文详细介绍了如何使用LM Studio和Anything LLM工具来构建和部署本地知识库。文中首先解释了安装和配置大模型的步骤,随后展示了如何将模型部署为后台服务,并通过API进行调用。此外,文章还涉及了如何使用这些工具快速构建知识库应用,包括知识库的配置和问答系统的设置。整个过程强调了无需深厚编程知识即可实现快速部署和使用,适合业务专家和产品设计人员使用。

业务背景

最近一直在寻找一套最佳的基于大模型的知识库系统解决方案,需要具有如下能力:

  1. 能够快速将大型模型进行本地化的部署使用。

  2. 结合大语言模型,能有一套良好的知识库系统,方便使用。

  3. 针对业务专家和产品设计人员,即使不懂代码,也能快速构建产品原型,了解基于大型模型知识体系的构建过程,并能选型大语言模型。

  4. 针对算法人员,“套壳”大模型或微调大模型,可通过一款工具完成本地化的快速部署和分发,而不需要自己单独写一个服务。

  5. 针对开发人员,可将算法开发好的模型快速构建成后台服务,且为OpenAI标准的服务API,能让开发团队快速进行大型模型的接入测试和验证。

  6. 针对测试人员,可以在构建的大型模型和知识库问答应用中进行快速测试,并跟踪各个环节的结果,如embedding的召回结果是否覆盖所有知识点,可通过接口调用日志进行快速查看。

  7. 针对甲方的企业要快速验证知识库项目的可行性,可以使用这两个工具搭建本地的测试环境。这样可以对一些关键技术进行全流程化的跟踪调试,待验证没有问题再进行立项或系统的集成。

最终选择了LM studio + Anything LLM搭建本地知识库。

LM Studio安装部署及使用

安装

LM Studio是一款桌面软件,安装后,经过简单的配置即可使用。登录https://lmstudio.ai/ 即可看到如下界面,按自己的操作系统进行下载即可。

图片

安装完成之后,登录系统的主界面如下图所,可以看到其默认界面如下:

图片

安装完成!!!

下载和管理大模型

在LMs studio的首页即提供了大模型列表及搜索能力,可以从hugging Face上获取支持的大模型列表,并可以通过搜索获取关注的大模型。如下图搜索最近也比较火的Mistral:

图片

  1. 点击“download”可以将想要的大模型下载到本地磁盘中。

图片

查看下载进度条

图片

2. 点击My models图标,即可查看本地下载的大模型列表,在这里我本身下载了4个大模型(LLama-3、LLama-3 chinese、gemma,刚刚下载的mistral)、一个embedding Model(据说是一个比较好的embedding算法),还有一个是自己通过LLama-3套壳的本地模型:

图片

AI chat

下载了模型之后,就来验证一下这个模型能否正常使用,进入AI chat界面:

图片

  1. 是选择模型,选择我们刚下载的mistral,左侧可以显示该模型在执行时的内存及cpu占用情况。

  2. 是针对该模型的聊天历史

  3. 是针对该模型进行对话时的参数配置,这里我们默认即可

  4. 是聊天的主交互界面。

以下是Mistral模型回答的结果,问题都理解出错了:

图片

换成最近超火的LLama 3:8b之后结果还是不错的:

图片

图片

将大模型部署为后台服务

点击“local server“,进入服务配置界面:

图片

  1. 选择做为后台服务的大语言模型,在这里选择llama3

  2. embedding算法,这里选择了一个社区比较推荐的nomic-ai-nomic embed text算法

  3. 配置做为后台服务的端口,并启动server

  4. 针对python在不同的场景下的示例代码

  5. 服务器的logs界面,每一次api的调用日志在这里都可以看得到,方便进行问题排查,还有就是embedding算法返回结果是否召回的验证非常有帮助,方便算法和测试人员进行模型测试和调优使用。

用Anything LLM快速构建知识库应用

Anything LLM有两个版本,一是桌面安装版本,另一是通过Docker进行部署的版本。我选择安装桌面版,有兴趣的同学可以研究一下Docker版本,它增加了用户权限管理功能,并可以进行企业级应用部署。它是开源的,可以在真正的生产环境中使用Anything LLM作为知识库的后台系统,并开放API供前端业务系统集成。

安装

登录网站https://useanything.com/download 并选择适用自己的版本:

图片

下载到本地后直接像普通软件一样安装即可,由于本地已经完成了安装,在此就不再进行安装了。

安装完成之后,有三个比较重要的配置:

  1. 配置大模型:

    1. 推荐使用LM Studio,因为他还是比较方便调试的。在这里输入LMStudio后台服务的URL,选择模型和token的大小。

      图片

    2. 另外,也可以选择openai或AnythingLLM,如果选择AnythingLLM,如下图所示,列表了其支持的大语言模型,选择了对应的模型点击“save changes“时,在后台会下载对应的大模型到本地。因此,AnythingLLM也可以自行体系独立运行。

      图片

  2. 配置embedding模型(用于对语言档切分和向量数据库中知识内容的相似性判断并召回,该算法的好坏,直接影响大模型的推理结果),在这里也可以有多种选择,我选择使用LMStudio中的nomic-edmbed-text-v1.5,如下图所示:

    图片

  3. 向量数据库:在这里我选择了一个轻量级的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 ————

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐