在Mac mini上实现本地话部署AI和知识库
在Mac mini上实现本地话部署AI和知识库
- 硬件要求:
- 大模型AI,也叫LLM,需要硬件支持,常见的方式有2种:一种是采用英伟达之类支持CUDA库的GPU芯片或者专用AI芯片;第二种是采用苹果M系列芯片架构的支持统一内存架构的硬件;
- 软件要求:
- 软件基于ollama + anything LLM
- 模型主要选择的是OpenChat,感觉openchat的中文支持比较好
- 步骤
- 先安装Ollama,步骤也很简单,主要下载官网的安装包安装即可;以下是下载页链接:[https://ollama.com/download](https://ollama.com/download)
- 安装完了Ollama之后,就可以在终端里用Ollama run openchat,
- 现在大模型本地安装就完成了,接下来就可以继续部署本地的知识库;
- 本地知识库的部署:
- anythingLLM的安装。
- 可以说,AI的出现就是懒人的福音,基本上你按照官网的指引来做不会有什么难的。唯独是如果英语阅读可能对某些同学有点障碍,不过这种障碍估计很快也要被AI消除了。
- anthingLLM的配置,资料的投喂,搜索检验。
- 总结,下一步考虑把系统的bug list喂给AI模型,看看能不能方便地查到有用的东西。
- 投喂网页数据之前的查询:
- 投喂数据之后的查询:
硬件要求:
大模型AI,也叫LLM,需要硬件支持,常见的方式有2种:一种是采用英伟达之类支持CUDA库的GPU芯片或者专用AI芯片;第二种是采用苹果M系列芯片架构的支持统一内存架构的硬件;
本文主要讲基于苹果M系列的方式,采用的内存建议16M,8M内存也能支持,但支持模型会比较少;除此之外,即使普通的电脑,如果你的内存够大,CPU够快,也是可以运行一些小的模型的,只是速度上会比较慢,CPU占用比较高,具体情况大家可以实际体验一下,例如我用一台T460,Intel i5 4核2.3G x4,16G内存,显卡GeForce 940MX/PCIe/SSE2,运行Ollama openchat 4B模型,一分钟大概生成100个词左右。
软件要求:
软件基于ollama + anything LLM
模型主要选择的是OpenChat,感觉openchat的中文支持比较好
步骤
先安装Ollama,步骤也很简单,主要下载官网的安装包安装即可;以下是下载页链接:https://ollama.com/download
安装完了Ollama之后,就可以在终端里用Ollama run openchat,
这样第一次执行的话,会自动拉取模型,建议选择8B左右大小的,8B就是8billion,也就是80亿参数,模型文件的大小大概是8G左右;以下是模型的说明:openchat;等下载完模型之后,就可以在终端里直接使用模型,输入一些问题,可以看到模型有回复,就说明正常运行了,如果机器的硬件不支持,例如内存不够,可能会比较慢;
现在大模型本地安装就完成了,接下来就可以继续部署本地的知识库;
本地知识库的工作原理是通过人工投喂特定的数据给大模型,使大模型可以在我们投喂的数据里学习到特定的知识,这样当用户向大模型提问的时候,就可以从我们投喂的数据里匹配响应的结果给我们;目前这种技术常见应用于电商平台的AI客服上;但不限于这种场景,对于公司内部的经验库管理也是挺适合的,对于个人的桌面电脑,也会有很好的帮助;本地知识库具有保密性的优势,不必把公司内部的资料上传到外部云端,或者第三方,而且没有常见的数据规模上的约束,所以以后会是一个受欢迎的方式;
本地知识库的部署:
本地知识库使用anything LLM来实现;工作原理就是使用一个embeding模型来对文档进行词向量的提取;词向量是一个专业术语,是人工智能对人类的文件的一种编码方式。可以理解为把学习到的词语投射到二维坐标上,意思相近的词的距离靠的比较近,而意思无关的词距离就比较远;例如猫和狗都是动物,他们会靠得比较近,而花和草就不会跟猫狗靠得近;还有一个模型是用来实现向量数据的存储的,是向量数据库。这2种模型都是anythingLLM这个APP里面内置的,我们只需要拿来直接用就可以。但是我们必须知道他们的概念,因为这个embeding的功能对于知识库的管理效果至关重要,如果提取到的数据质量不够好,最终用户查询到的结果就会不满意,这个时候可以尝试改变其配置,使用其他的第三方模型。不管是LLM模型,还是embeding模型,我们的选择是很多的,既有开源模型,也有闭源模型,既有免费模型,也有收费模型,这些都是可以选择的。
anythingLLM的安装。
在官网下载安装即可。安装好后会有一个引导过程,让用户设置好LLM模型,working space这些。LLM模型我们选择Ollama。以下是anythingLLM的链接地址:https://anythingllm.com/desktop
可以说,AI的出现就是懒人的福音,基本上你按照官网的指引来做不会有什么难的。唯独是如果英语阅读可能对某些同学有点障碍,不过这种障碍估计很快也要被AI消除了。
anthingLLM的配置,资料的投喂,搜索检验。
最简单的投喂方式就是把Excel表格投喂给模型,也可以投喂一个网页链接,让其下载并消化;embeding模型消化数据时有一个等待过程,这个过程就是把文档里面的资料进行词向量的计算和映射过程。怎么知道我们投喂的数据有效果呢?例如我们可以这样进行测试,首先没有投喂资料之前,我们可以先提一个问题,例如,Mac mini的价格是多少?这样,因为AI模型的数据是比较早期的,回复的结果通常是不知道,或者不准确;这个时候我们可以打开苹果的官网,进入有Mac mini价格的页面,然后把这个页面的URL复制粘贴给模型,让模型进行一个消化整理;完了之后再询问,这个时候模型就可以输出有用的信息了,而且还会附带引用的来源;


总结,下一步考虑把系统的bug list喂给AI模型,看看能不能方便地查到有用的东西。



投喂网页数据之前的查询:

投喂数据之后的查询:

相关文章:
在Mac mini上实现本地话部署AI和知识库
在Mac mini上实现本地话部署AI和知识库 硬件要求:大模型AI,也叫LLM,需要硬件支持,常见的方式有2种:一种是采用英伟达之类支持CUDA库的GPU芯片或者专用AI芯片;第二种是采用苹果M系列芯片架构的支持统一内存架…...
一个方法被多个线程同时调用,确保同样参数的调用只能有一个线程执行,不同参数的调用则可以多个线程同时执行
我们知道通过lock一个固定静态object给代码段加同步锁,可以让多个线程的同时调用以同步执行,因此可以利用字典来给不同参数分配不同的静态对象,方法中不同的参数调用锁住各自不同的静态对象即可实现不同参数不加锁,相同参数才加锁…...
3. MySQL事务并发的问题与解决方法
一. 并发事务带来的问题 并发会造成事务间出现脏读,不可重复读,幻读现象。 1. 脏读 一个事务在处理过程中读取了另外一个事务未提交的数据。若另外一个事务回滚,则读取到的数据是无效的,又称为脏读。 2. 不可重复读 在一个事务…...
25/1/15 嵌入式笔记 初学STM32F108
GPIO初始化函数 GPIO_Ini:初始化GPIO引脚的模式,速度和引脚号 GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化GPIOA的引脚0 GPIO输出控制函数 GPIO_SetBits:将指定的GPIO引脚设置为高电平 GPIO_SetBits(GPIOA, GPIO_Pin_0); // 将GPIO…...
MySQL的不同SQL模式导致行为不同?
现象: 我在两个mysql库都有相同定义的表,其中一个字段是varchar(1200)。当我都对这个表进行insert操作,而且超过此字段的规定长度(此处是1200),这两库的行为是不一样的:库B是直接报错too long&…...
Flink 使用 Kafka 作为数据源时遇到了偏移量提交失败的问题
具体的错误日志 21:43:57.069 [Kafka Fetcher for Source: Custom Source -> Map -> Filter (1/1)#2] ERROR org.apache.kafka.clients.consumer.internals.ConsumerCoordinator - [Consumer clientIdconsumer-my-group-6, groupIdmy-group] Offset commit failed on pa…...
【日志篇】(7.6) ❀ 01. 在macOS下刷新FortiAnalyzer固件 ❀ FortiAnalyzer 日志分析
【简介】FortiAnalyzer 是 Fortinet Security Fabric 安全架构的基础,提供集中日志记录和分析,以及端到端可见性。因此,分析师可以更有效地管理安全状态,将安全流程自动化,并快速响应威胁。具有分析和自动化功能的集成…...
LSA更新、撤销
LSA的新旧判断: 1.seq,值越大越优先 2.chksum,值越大越优先 3.age,本地的LSA age和收到的LSA age作比较 如果差值<900s,认为age一致,保留本地的:我本地有一条LSA是100 你给的是400 差值小于…...
DevUI 2024 年度运营报告:开源生态的成长足迹与未来蓝图
在当今数字化飞速发展的时代,开源已成为推动技术创新与协作的重要力量。DevUI 作为开源领域的重要一员,其发展历程与成果备受关注。值此之际,GitCode 精心整理了 DevUI 年度运营报告,为您全面呈现 DevUI 社区在过去一年里的开源之…...
centos 7 Mysql服务
将此服务器配置为 MySQL 服务器,创建数据库为 hubeidatabase,将登录的root密码设置为Qwer1234。在库中创建表为 mytable,在表中创建 2 个用户,分别为(xiaoming,2010-4-1,女,male&…...
React 表单处理与网络请求封装详解[特殊字符][特殊字符]
在 React 开发中,表单处理和网络请求是非常常见的需求。本文将围绕以下几个方面展开讲解: FormItem 绑定 name 属性表单校验与失焦校验获取表单数据封装请求模块 request 1. FormItem 绑定 name 属性 在 React 中,使用 Ant Design 的 Form …...
C++ 的 CTAD 与推断指示(Deduction Guides)
1 类模板参数推导(CTAD) 1.1 曲线救国 CTAD 的全称是类模板参数推导(Class Template Argument Deduction),它允许在实例化类模板时,根据构造函数的参数类型自动推导模板参数,从而避免显式指…...
【Rust自学】13.2. 闭包 Pt.2:闭包的类型推断和标注
13.2.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中,我们会讨论 Rust 的一…...
如何将原来使用cmakelist编译的qt工程转换为可使用Visual Studio编译的项目
将原来使用CMakeLists.txt编译的Qt工程转换为可使用Visual Studio编译的项目,可以通过以下步骤实现: 一、准备阶段 安装必要的软件: 确保已安装Visual Studio,并选择了C开发相关的组件。安装CMake,并确保其版本与Qt和…...
微软确认Win10停更不碍Microsoft 365使用!未来是否更新成谜
快科技1月17日消息,微软澄清了关于Windows 10停止支持后Microsoft 365办公套件使用情况的误解。 前两天微软更新支持文档,表示2025年10月14日Windows 10停止支持之后,Microsoft 365应用程序将不再支持Windows 10设备,引发用户担忧…...
Ubuntu、Windows系统网络设置(ping通内外网)
一、 虚拟机VMware和Ubuntu系统的网络配置说明 1、虚拟机的网络适配器的模式有三种: 桥接模式NAT模式主机模式 2、虚拟机VMware的网卡配置(如何进行配置界面(虚拟机->设置)) 注意: 1、以上桥接模式(ubuntu有独立IP)、NAT模式(没有独立IP)都可以联…...
华为OD机试E卷 ---最大值
一、题目描述 给定一组整数(非负),重排顺序后输出一个最大的整数。 二、示例1 用例1 输入 10 9输出 910说明:输出结果可能非常大,所以你需要返回一个 字符串只而不是整数。 三、输入描述 数字组合 四、输出描述 最大的整数 五、解题思路 字符…...
UllnnovationHub,一个开源的WPF控件库
目录 UllnnovationHub1.项目概述2.开发环境3.使用方法4.项目简介1.WPF原生控件1.Button2.GroupBox3.TabControl4.RadioButton5.SwitchButton6.TextBox7.PasswordBox8.CheckBox9.DateTimePicker10.Expander11.Card12.ListBox13.Treeview14.Combox15.Separator16.ListView17.Data…...
Fabric区块链网络搭建:保姆级图文详解
目录 前言1、项目环境部署1.1 基础开发环境1.2 网络部署 2、后台环境2.1、环境配置2.2、运行springboot项目 3、PC端3.1、安装依赖3.2、修改区块链网络连接地址3.3、启动项目 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加…...
Kubernetes (K8s) 权限管理指南
1. 引言 Kubernetes (K8s) 作为当今最流行的容器编排平台,其安全性至关重要。本指南旨在全面介绍 K8s 的权限管理机制,帮助具有一定基础的读者深入理解并掌握这一关键领域。 © ivwdcwso (ID: u012172506) 2. Kubernetes 安全模型概述 K8s 的安全模型主要包括三个阶段…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
