【大模型实战篇】搭建本地的隐私计算知识问答系统“密答”

ops/2024/10/21 13:39:52/

1. 背景介绍     

        在之前分享的文章《基于开源大模型的问答系统本地部署实战教程》中,我们介绍了基于ollama实现本地问答系统的部署和使用。本文将基于ollama进一步实现本地垂直领域的问答系统搭建。ollama作为大模型的运行框架,可以提供大模型的使用接口,方便其他应用调用。

        本文将利用AnythingLLM来实现隐私计算垂直领域的知识问答。本次分享一下搭建的过程,以及初步的体验,但如果想追求好的问答效果,还是需要好好准备高质量知识库,这个是起决定作用的因素。

         我们采用docker的方式安装AnythingLLM。AnythingLLM是一款文档聊天机器人解决方案,能够将任何文档、资源或内容片段转化为大语言模型在聊天中可以利用的相关上下文。

2. 部署步骤

2.1 ollama准备大模型参数文件及模型加载

        首先,通过ollama下载相应的本地模型,为了便于尝试不同大模型的效果,可以在ollama的models列表中下载多个模型。前几天看到google开源了Gemma 2B的文章,介绍了端侧小模型的进展,没想到ollama上就已经可以下载使用了,借着这次机会也体验一下。

  ollama 服务启动指令:

ollama serve

  启动之后,后续AnythingLLM就可以使用ollama提供的接口能力。

2.2  docker安装AnythingLLM

1. 拉取镜像(执行需要点时间)

docker pull mintplexlabs/anythingllm

2. docker运行镜像(Linux/MacOs系统,根据实际情况可修改端口等信息)

其他的平台可以参考这里

export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 4001: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

3. docker管理平台

4.web访问

2.3 参数配置

2.3.1 配置LLM provider

我们这里就选择ollama服务。我选择了gemma2:2b,最大tokens数量设置4096.

2.3.2 用户范围设置

AnythingLLM支持设置个人使用和团队使用,如果选择团队使用,需要配置管理员账户,其他成员加入需要管理员审核。

2.3.3 配置工作区

        AnythingLLM支持创建工作区,这个想法还挺好的。不同的工作区相对独立,互补影响。可以创建不同垂直领域的知识库和问答应用。这里我创建了隐私计算工作区。

2.3.4 外观定制配置

        可以根据自己的需求,定制外观展示,比如配置logo和平台名称等。这里我设置隐私计算知识稳单系统名称为“密答”。

2.3.5 向量数据库和向量化模型的选择和配置

        这里为了方便起见,我们使用了内置的LanceDB,以及内置的Embedder。可以按照自己的需求进行定制配置。Embedder的重要性比较高,最好使用向量表征能力强的模型,不然后续的向量检索质量也难以保证。

2.3.6 上传垂直领域知识内容

        接下来就是重头戏,上传隐私计算知识文档,可以支持各种类型文件:pdf、txt、word。不过建议还是转换成markdown的文件,既能够保证结构,又可以保持文本状态,减少pdf之类文件的复杂性,导致向量化存在问题。左侧操作框是上传的文件,需要选择对应文件移动到相应的工作区,然后执行保存和向量化,处理成功后就可以回到问答界面。

2.3.7 知识库关键参数配置

        这里需要提示一下,在基于知识库的问答中,为了回答的问题尽可能与所提供知识相关,可以将知识库文档相似性阈值设置的高一些,实际体验下来效果会更准确。

2.3.8 API对外服务能力

        AnythingLLM还提供了API服务能力,使用方法可以参考API文档。

2.4 操作体验

         测试了一个上传知识中的版本功能问题,回答挺不错。不过为了尽可能提升效果,需要好好处理你的知识文档以及选择合适的向量化模型、问答模型,这些都是影响因素。

        本次分享介绍了基于本地垂直知识的隐私计算知识问答系统的搭建方法和初步使用体验。想要能够上生产的版本,还有很多工作要做,继续尝试优化提升。


http://www.ppmy.cn/ops/89043.html

相关文章

Markdown语法学习

Markdown学习 一、基础语法讲解 1. 换行 本行末尾双空格然后回车(在Typora的中直接回车也可以) 2. 换段 本段末尾两次回车 3. 加粗 **加粗** __加粗__效果:加粗 4. 斜体 *加粗* _加粗_效果:斜体 5. 斜体加粗 ***加粗**…

学习记录day18——数据结构 算法

算法的相关概念 程序 数据结构 算法 算法是程序设计的灵魂,结构式程序设计的肉体 算法:计算机解决问题的方法护额步骤 算法的特性 1、确定性:算法中每一条语句都有确定的含义,不能模棱两可 2、有穷性:程序执行一…

python中的字符串方法

python中的字符串 举个例子先 name = 貂蝉开大 #声明了一个字符串 print(name) # 打印了一个字符串 print(name[0:1] #输出貂蝉 print(name[2:3] #输出开大 扩展方法 find() # 查找字符串中某个字符的索引 index_ = name.find("貂") print(index_) # 输出 …

Stable Diffusion基本原理通俗讲解

Stable Diffusion是一种基于深度学习的图像生成技术,它属于生成对抗网络(GANs)的一种。简单来说,Stable Diffusion通过训练一个生成器(Generator)和一个判别器(Discriminator)&#…

银河麒麟无法获得锁,锁由进程持有的解决方法

解决方法有两种 方法一:杀死进程 执行如下代码,2234换成字节的进程号 sudo kill 2234方法二:强制解锁 删除进程锁的缓存文件,强制解锁 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock我用的时候第一种方法…

MyBatis动态SQL

目录 1、动态SQL (1)什么是动态SQL? (2)常用的动态SQL元素 2、if元素 3、choose 、when 、otherwise元素 (1)为什么使用choose元素 (2)choose元素的功能 4、trim 、where …

02 Go语言开发REST API接口_20240728 课程笔记

概述 如果您没有Golang的基础,应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础 基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会…

MinGW-w64编译安装Acise

Acise(A CAx Industrial Software Ecology)是一款跨平台的CAx软件开发框架,本文记录在Windows下编译安装Acise的流程。 零、环境 操作系统Windows11Visual Studio CodeVisual Studio Code 1.92.0CMakeCMake 3.24.2GitGit version 2.45.2.windows.1MSYS2msys2-x86_6…