新技术前沿-2024-构建个人知识库和小语言模型

Ollama+WebUI+AnythingLLM,构建安全可靠的个人/企业知识库

1 技术路线一

1.1 搭建本地大模型Ollama

1.2 搭建用户界面open WebUI

使用Docker Desktop
Open-webui。它可以快速基于Ollama构筑本地UI。
如果没有科学上网,很可能会拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,按步骤依次执行以下命令:

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/open-webui/open-webui:main
# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/open-webui/open-webui:main ghcr.io/open-webui/open-webui:main
# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/open-webui/open-webui:main

下载镜像完成后,就可以启动容器

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

然后就可以通过3000端口访问页面。
首次启动,注册账号和密码以后,修改Ollama的服务地址链接。

1.3 与知识库相连AnythingLLM

AnythingLLM的官网地址

这是一个可以基于大模型的知识库交互软件,可以应用本地大模型,或调用公域大模型API。知识库也同样可以使用本地的,而且几乎不占用很大的资源。
(1)下载安装AnythingLLMDesktop.exe。
(2)完成安装后,先会要求配置大模型。这里可以选择Ollama的本地模型,选择Llama3。
在这里插入图片描述

(3)然后会让你选择嵌入模式和向量数据库,我们选择默认的即可,或者接入外部API。
在这里插入图片描述
(4)配置完成后,再为你的工作空间起个名字,即可进入AnythingLLM中。
(5)在正式使用前,你需要上传你的知识文档,支持多种形式,但图片形式PDF不可读取。
在这里插入图片描述

(6)最后,你就可以在对话框中,和你的知识进行对话交流了。

1.3.1 问答增加个人文档

(1)打开anythingllm,点击要用的工作区上的按钮(上传文件,支持多种文件类型(PDF,TXT,DOC等)。
(2)点击Click to upload or drag and drop,选择要引用的文档。
(3)点击Move to Workspace,加载文档。
(4)点击Save and Embed。
(5)等待加载,提示Workspace updated successfully的时候说明加载完了。
(6)加载完成后就可以使用了,直接对话即可,回答的信息里面同时还可以显示引用文本(文件删除并不影响使用)。

可以设置chat或query模式。

2 技术路线二

Llama 3的微调、量化、知识库接入及部署
用通俗易懂的方式讲解大模型:一个强大的 LLM 微调工具 LLaMA Factory

2.1 微调LLaMA-Factory

使用中文得到更好的支持需要进行微调,最简单的方法之一是使用Llama Factory。

它几乎不需要任何编程基础,直接使用即可微调出一个适用于您的模型。

2.2 量化Llama.Cpp

微调出来的这个模型有点太大了,推理的时候速度比较慢,占用显存比较多,这时需要量化。

大模型量化主要是为了减小模型的体积和提高运算速度,让模型在资源有限的设备上也能高效运行。同时,量化还能降低能耗和成本,让模型部署更加经济实用。

那量化的时候有没好用的框架呢?

最常见的就是直接用Llama.Cpp。可以快速的帮我们把这个模型给它量化的比较小。

2.3 本地知识库接入Phidata

Phidata:快速构建一个智能 AI 助手【附代码示例】
官网基于phidata使用本地Ollama模型
安装依赖包

pip install -U phidata
pip install ollama

简单示例如下:

from phi.assistant import Assistant
from phi.llm.ollama import Ollamaassistant = Assistant(llm=Ollama(model="llama3",host='localhost'),description="旅游博主",
)
assistant.print_response("使用中文推荐一下上海好玩的地方,不超过20字", markdown=True)

在这里插入图片描述

3 小语言模型SLM

参考AI届的新宠:小语言模型(SLM)?

3.1 背景介绍

大语言模型(LLM)在过去几年产生了巨大影响,特别是随着OpenAI的ChatGPT的出现,各种大语言模型如雨后春笋般出现,国内如KimiChat、通义千问、文心一言和智谱清言等。

然而,大语言模型通常拥有庞大的参数,从数十亿到数千亿,甚至到数万亿。比如通义千问发布的开源模型就包含了70亿、140亿和720亿等多个规模的版本;而最近发布的Llama3大模型则是有80亿和700亿两个版本;而广为人知的ChatGPT3最大的一个模型参数则达到了1750亿!

大模型的参数越多,一般意味着它能够捕捉和处理更丰富的信息和更复杂的模式,也就是回答的效果会更好,但是它们对于个人电脑、智能手机和其他智能设备等设备来说计算量却太大(尽管出现了量化等技术)。由于上述原因,人们对小语言模型(SLM)的兴趣日益浓厚,而下面就是最近几款比较火的小语言模型。

3.2 安装ollama框架

参考ollama的GitCode地址
参考ollama官网

下载这个OllamaSetup.exe即可,双击后自动安装到C盘。
安装目录为C:\Users\user\AppData\Local\Programs\Ollama。

(1)设置外网可以访问
Ollama的默认配置是只有本地才可以访问,需要配置一下,
Ollama 默认提供 OpenAI 的兼容 API,默认端口是 11434,默认只可以通过 localhost 进行访问,如果想公开访问的话,可以通过设置 OLLAMA_HOST 进行修改。
在环境变量-系统变量中新增OLLAMA_HOST,值填入0.0.0.0。重新运行OLLAMA后,就可以通过本机IP访问。

(2)更改AI模型下载位置。
打开环境变量,在系统变量中新增OLLAMA_MODELS变量,值填入想要存放模型的路径D:\OllamaCache。
在这里插入图片描述
退出交互的方式:交互Ollama按下Ctrl + D 可以退出终端交互,但此时模型并不会退出,仍旧可以正常通过 Api 接口交互。
查看已经安装了哪些模型。
在这里插入图片描述

3.3 小语言模型

3.3.1 Phi-3模型

Phi-3是微软最近发布的一系列开放式 AI 模型,并且也是现有功能最强大、最具成本效益的小语言模型。

目前只提供了mini版本,即Phi-3-mini ,这个版本拥有38亿个参数(也就是3.8B),经过3.3 万亿 token 的训练,并且被优化至可部署在手机上。如果想体验的话,可以在Microsoft Azure AI Studio、Hugging Face[2],或者Ollama上使用。

Phi-3-mini一共支持两种上下文,分别是4K和128K,其中128K的上下文长度是同类产品第一个支持的,并且对质量影响很小。而且 Phi-3-mini 是经过指令微调的,这意味着它可以开箱即用!

虽然Phi-3 mini 参数很小,但是它表现良好,能够与Mixtral 8x7B 和 GPT-3.5 等模型相媲美!

CMD>ollama run phi3
按下Ctrl + D 可以退出终端交互。

在这里插入图片描述

3.3.2 Gemma模型

Gemma 由 Google DeepMind 和 Google 的其他团队开发,灵感来自 Gemini,其名称反映了拉丁语gemma,意思是“宝石”。

Google一共发布了两种尺寸的模型,分别是Gemma 2B 和 Gemma 7B[3],每个尺寸都发布了经过预训练和指令调整的变体,并且能够直接在开发人员笔记本电脑或台式电脑上运行。

值得注意的是,Gemma还有两个变体,分别是CodeGemma和RecurrentGemma。

(1)CodeGemma注重的是编码功能,它也有几个不同的版本:一个7B的预训练变体,专门用于代码补全和代码生成任务;一个7B的指令调整变体,用于代码聊天和指令执行;还有一个2B的预训练变体,适用于快速代码补全,并且可以安装在你的本地计算机上。
(2)RecurrentGemma 注重的是推理能力,与其他模型不同的是,它并没有采用目前LLM的Transformer 架构,而是基于Google新的Griffin 架构。

ollama run gemma:2b

在这里插入图片描述

3.3.3 OpenELM模型

OpenELM是Apple团队最近发布的模型,这是一个旨在在手机和笔记本电脑上运行的开源小语言模型 (SLM) 系列。

这个系列一共包含了2.7亿、4.5亿、11亿和30亿四个参数版本(有预训练和指令微调版本,一共8个型号)。

OpenELM 模型的突出特点是其内存和计算效率。它们建立在一系列最新的优化技术之上,这些技术减少了语言模型的内存和计算占用量。

根据Apple团队的描述,OpenELM 还使用了分层缩放策略,即以非均匀的方式将参数分配给注意力层和前馈层,这与经典的 Transformer 模型相反,经典的 Transformer 模型在所有层上具有统一的结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux网络服务“PXE网络批量装机和Kickstart全自动化安装”

PXE网络批量装机 pxe自动装机: 服务端和客户端 pxe c/s 模式:允许客户端通过网络从远程服务器(服务端)下载引导镜像,加载安装文件,实现自动化安装操作系统。 无人值守 :安装选项不需要人为干预&#xf…

FlexJavaFramwork

FlexJavaFramwork架构

【高校科研前沿】广西大学博士生冯德东为一作在Habitat Int发文:区域乡村性与贫困治理变化的时空格局及相关效应——以滇桂黔石漠化地区为例

1.文章简介 论文名称:Spatio-temporal patterns and correlation effects of regional rurality and poverty governance change: A case study of the rocky desertification area of Yunnan-Guangxi-Guizhou, China(区域乡村性与贫困治理变化的时空格…

从零开始搭建Electron项目(二)之例程解析

本专栏,前面学习了怎么下载例程并运行。 这里解析例程的构成 从零开始搭建Electron项目之运行例程-CSDN博客文章浏览阅读22次。最好的学习方式就是:给一段能够运行的代码示例。本文给出了例程资源,以及运行的步骤。在国内开发electron有一点特…

【吊打面试官系列-Mysql面试题】MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么 ?

大家好,我是锋哥。今天分享关于 【MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么 ?】面试题,希望对大家有帮助; MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么 ? 以下是 MySQL_fetch_array 和 MySQL…

让AI做2024新高考1卷数学最后一题:AI智商横向对比!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

【Python】成功解决SyntaxError: invalid syntax

【Python】成功解决SyntaxError: invalid syntax 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕&am…

探索OrangePi AIpro:单板计算机的深度体验之旅

准备阶段:环境与资料 在开始我们的探索之旅前,确保您已准备好以下装备: OrangePi AIpro:我们的主角,一台功能强大的单板计算机。Windows 10笔记本电脑:作为我们的辅助工具,用于管理和测试。路…

SSM民宿在线预订平台的设计与实现-计算机毕业设计源码44449

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对民宿在线预订平台等问题,对民宿…

力扣74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示…

1.nginx介绍

介绍 是一个高性能的http和反向代理服务器。 特点 占用内存少,并发能力强。 nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。 基…

游戏服务器工程实践一:百万级同时在线的全区全服游戏

我应该有资格写这篇文章,因为亲手设计过可以支撑百万级同时在线的全区全服类型的游戏服务器架构。 若干年前我在某公司任职时,参与研发过一款休闲类型的游戏,由 penguin 厂独代。研发的时候,p 厂要求我们的游戏服务器要能支撑百万…

Vue学习|Vue快速入门、常用指令、生命周期、Ajax、Axios

什么是Vue? Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。官网:https://v2.cn.vuejs.org/ Vue快速入门 打开页面&#xff0…

MySQL事务,视图,用户管理学习笔记【事务概念 | 事务隔离级别 | 设置级别 | 视图 | 用户管理】

博客主页:花果山~程序猿-CSDN博客 文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,事务初…

面试杂谈之clickhouse

clickhouse 之前定时任务读取binlog 批量同步clickhouse kafka 批量给clickhouse灌数据 clickhouse列式数据库,运行时创建库表,加载数据查询数据压缩,磁盘存储,向量化引擎,利用CPU多核并行处理缺少完整的update/del…

【SQL】牛客网SQL非技术入门40道代码|练习记录

跟着刷题:是橘长不是局长哦_哔哩哔哩_bilibili 6查询学校是北大的学生信息 select device_id, university from user_profile where university 北京大学 7查找年龄大于24岁的用户信息 select device_id, gender, age, university from user_profile where age…

开源低代码平台技术为数字化转型赋能!

实现数字化转型升级是很多企业未来的发展趋势,也是企业获得更多发展商机的途径。如何进行数字化转型?如何实现流程化办公?这些都是摆在客户面前的实际问题,借助于开源低代码平台技术的优势特点,可以轻松助力企业降低开…

设计模式-装饰器模式(结构型)

装饰器模式 装饰器模式是一种结构模式,通过装饰器模式可以在不改变原有类结构的情况下向一个新对象添加新功能,是现有类的包装。 图解 角色 抽象组件:定义组件的抽象方法具体组件:实现组件的抽象方法抽象装饰器:实现…

沐风老师3DMAX一键多孔结构建模插件Porous使用方法

​3DMAX一键多孔结构建模插件Porous使用教程 3dMax是大家熟知的3D建模软件之一,其功能非常的强大,在科研绘图领域有着非常广泛的应用,但是由于科研绘图的图形(模型)一般都属于异形结构,手工绘制建模&#x…

mysql设置允许外部ip访问,局域网IP访问

(支持MYSQL8版本) 1. 登录进入mysql;mysql -uroot -p输入密码进入 2. 输入以下语句,进入mysql库,查看user表中root用户的访问 use mysql; select host,user from user; 3. 更新user表中root用户域属性&#xff0c…