x一、基于Ollama的本地大模型管理
1.为何要搭建本地大模型
数据隐私安全
当使用云端的大模型服务时,数据需要上传至云端服务器进行处理,这可能会带来数据隐私泄露的风险
搭建本地大模型,数据仅在本地环境中流转和处理,企业或个人可以更好地掌控数据的访问权限,防止敏感信息泄露,满足对数据隐私和安全有严格要求的场景,如医疗、金融等行业。
定制化与可控性
不同的用户或企业可能有特定的业务需求和应用场景,本地大模型允许用户根据自己的需求对模型进行定制训练。例如,企业可以使用自己的业务数据对模型进行微调,使其更适应特定的业务任务,如特定领域的知识问答、文本生成等。
同时,用户可以完全控制模型的版本、参数设置和更新策略,根据实际需求进行灵活调整。
更低的运行成本
对于一些需要频繁使用大模型的场景,使用云端大模型服务可能会产生较高的费用,特别是在处理大规模数据或高并发请求时。
搭建本地大模型,虽然初期可能需要投入一定的硬件和软件成本,但从长期来看,如果使用量较大,本地部署可以降低每次调用的成本,具有更好的成本效益。
高效的响应速度
在云端使用大模型时,数据的上传和下载会存在一定的网络延迟,尤其是在网络不稳定的情况下,可能会影响模型的响应速度
而本地大模型由于数据和计算都在本地进行,无需依赖网络传输,能够实现快速的响应,适用于对实时性要求较高的应用,如实时对话系统、工业控制中的实时决策等。
断网可用
本地大模型在搭建完成后,即使处于断网环境也能正常运行。这对于一些特殊场景非常重要,如偏远地区的野外作业、军事行动等,在没有网络连接的情况下,依然可以利用本地大模型进行数据处理和分析。
研究和学习需求
对于研究人员和开发者来说,搭建本地大模型可以深入了解模型的内部机制和运行原理,便于进行模型的优化和创新研究。通过在本地环境中对模型进行实验和调试,可以更好地探索新的算法和技术,推动人工智能技术的发展。
2.什么是Ollama
Ollama 是一个致力于简化和优化机器学习模型使用的开源平台。
它的目标是让开发者和数据科学家能够更轻松地使用和部署大型语言模型(LLM),并提供了一系列工具和框架,以支持模型的加载、管理和运行。
3.Ollama的功能特点
简化模型管理:Ollama 提供了一个简单的命令行界面,允许用户快速下载和运行各种预训练的语言模型。用户可以通过简单的命令来管理模型的版本和配置。
本地运行:Ollama 支持在本地计算机上运行模型,避免了将数据上传到云端的需求。这对于保护隐私和数据安全尤为重要。
支持多种模型:Ollama 可以支持多种不同的模型架构和框架,包括 OpenAI 的 GPT 系列、Google 的 BERT 等。用户可以根据需求选择适合的模型。
易于集成:Ollama 的设计使其易于与现有的开发工具和工作流程集成。它可以与 Python、JavaScript 等编程语言一起使用,方便开发者将其嵌入到应用程序中。
社区支持:作为一个开源项目,Ollama 拥有活跃的社区支持,用户可以参与开发、报告问题和贡献代码。
灵活性和扩展性:Ollama 提供了灵活的 API 接口,用户可以根据特定需求进行扩展和定制。
4.Ollama的应用场景广泛,包括但不限于
聊天机器人:利用Ollama部署的LLM可以构建智能聊天机器人,为用户提供自然流畅的对话体验。
文本生成:Ollama可以生成各种文本内容,如新闻文章、博客文章、诗歌等,满足内容创作的需求。
问答系统:构建基于LLM的问答系统,快速准确地回答用户的问题。
代码生成:生成代码片段,如Python、JavaScript等,辅助软件开发和测试工作。
二、ollama的部署
Ollama官网:Ollama
1.部署Ollama到Linux系统
[root@ollama ~]# mkdir ollama [root@ollama ~]# cd ollama/ [root@ollama ollama]# wget https://ollama.com/install.sh [root@ollama ollama]# dnf install zstd [root@ollama ollama]# sh install.sh2.Ollama的调试与使用方法
ollama中的变量大全
OLLAMA_DEBUG #是否开启调试模式,默认为 false。 OLLAMA_FLASH_ATTENTION #是否闪烁注意力,默认为 true。 OLLAMA_HOST #Ollama 服务器的主机地址,默认为空。 OLLAMA_KEEP_ALIVE #保持连接的时间,默认为 5m。 OLLAMA_LLM_LIBRARY #LLM 库,默认为空。 OLLAMA_MAX_LOADED_MODELS #最大加载模型数,默认为 1。 OLLAMA_MAX_QUEUE #最大队列数,默认为空。 OLLAMA_MAX_VRAM #最大虚拟内存,默认为空。 OLLAMA_MODELS #模型目录,默认为空。 OLLAMA_NOHISTORY #是否保存历史记录,默认为 false。 OLLAMA_NOPRUNE #是否启用剪枝,默认为 false。 OLLAMA_NUM_PARALLE #并行数,默认为 1。 OLLAMA_ORIGINS #允许的来源,默认为空。 OLLAMA_RUNNERS_DIR #运行器目录,默认为空。 OLLAMA_SCHED_SPREAD #调度分布,默认为空。 OLLAMA_TMPDIR #临时文件目录,默认为空Here is the optimized list in the desired format: OLLAMA_DEBUG #是否开启调试模式,默认为 false。 OLLAMA_FLASH_ATTENTION #是否闪烁注意力,默认为 true。 OLLAMA_HOST #Ollama 服务器的主机地址,默认为空。 OLLAMA_KEEP_ALIVE #保持连接的时间,默认为 5m。 OLLAMA_LLM_LIBRARY #LLM 库,默认为空。 OLLAMA_MAX_LOADED_MODELS #最大加载模型数,默认为 1。 OLLAMA_MAX_QUEUE: #最大队列数,默认为空。 OLLAMA_MAX_VRAM #最大虚拟内存,默认为空。 OLLAMA_MODELS #模型目录,默认为空。 OLLAMA_NOHISTORY #是否保存历史记录,默认为 false。 OLLAMA_NOPRUNE #是否启用剪枝,默认为 false。 OLLAMA_NUM_PARALLEL: #并行数,默认为 1。 OLLAMA_ORIGINS: #允许的来源,默认为空。 OLLAMA_RUNNERS_DIR: #运行器目录,默认为空。 OLLAMA_SCHED_SPREAD: #调度分布,默认为空。设定环境变量
[root@ollama ollama]# vim /etc/systemd/system/ollama.service [Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/local/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" Environment=OLLAMA_HOST=0.0.0.0 #外网访问 Environment="OLLAMA_ORIGINS=*" #允许的来源 [Install] WantedBy=default.target [root@ollama ollama]# systemctl daemon-reload [root@ollama ollama]# systemctl restart ollama.serviceOllama常见指令
ollama serve #启动ollama ollama create #从模型文件创建模型 ollama show #显示模型信息 ollama run #运行模型 ollama pull #从注册表中拉取模型 ollama push #将模型推送到注册表 ollama list #列出模型 ollama cp #复制模型 ollama rm #删除模型 ollama help #获取有关任何命令的帮助信息3.Ollama中模型的管理
安装模型
安装完毕Ollama后,默认是没有本地大模型的。可以通过Ollama pull 来下载模型到本地
[root@ollama ollama]# ollama serve [root@ollama ollama]# ollama pull qwen:7b#模型名称通常为
模型:参数数量
qwen:7b 表示qwen模型的7b版本。7b就是10亿个参数
运行模型
[root@ollama ollama]# ollama run qwen:7b >>> 什么是docker Docker是一种开源的容器化平台,它通过使用轻量级的镜像(Image)来打包应用程序及其依赖环境,使其可以在任何具备 Docker 容器环境的系统上运行。 Docker 提供了一种标准化的开发和部署流程,使得跨平台和团队协作变得更加简单和高效。 >>> /bye #退出模型复制模型
[root@ollama ollama]# ollama cp qwen:7b my-qwen:7b copied 'qwen:7b' to 'my-qwen:7b' [root@ollama ollama]# ollama list NAME ID SIZE MODIFIED my-qwen:7b 2091ee8c8d8f 4.5 GB 13 seconds ago qwen:7b 2091ee8c8d8f 4.5 GB 9 minutes ago导出现有模型
#查看模型位置 [root@ollama ollama]# ollama show --modelfile qwen:7b|grep FROM FROM /root/.ollama/models/blobs/sha256-87f26aae09c7f052de93ff98a2282f05822cc6de4af1a2a159c5bd1acbd10ec4 [root@ollama ollama]# cp ~/.ollama/models/blobs/sha256-87f26aae09c7f052de93ff98a2282f05822cc6de4af1a2a159c5bd1acbd10ec4 /mnt/qwen_7b.guuf [root@ollama ollama]# ls /mnt/ hgfs qwen_7b.guuf [root@ollama ollama]# du -sh /mnt/qwen_7b.guuf 4.3G /mnt/qwen_7b.guuf利用GUUF文件加载模型
[root@ollama ollama]# vim myqwen\:7b FROM /mnt/qwen_7b.guuf [root@ollama ollama]# ollama create test-qwen:7b -f myqwen\:7b [root@ollama ollama]# ollama listhuggingface模型镜像站
最新版Ollama开始支持从Huggingface Hub上直接拉取各种模型,包括社区创建的GGUF量化模型
国内可用镜像站地址:
HF-Mirror
ollama run hf.co/{username}/{repository} #要选择不同的量化方案,只需在命令中添加一个标签: ollama run hf.co/{username}/{repository}:{quantization} #例如:量化名称不区分大小写 ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:IQ3_M ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Q8_0 #还可以直接使用完整的文件名作为标签: ollama run hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:Llama-3.2-3B-Instruct-IQ3_M.ggufOllama的卸载方法
Ollama通常不是用rpm的方式进行安装的,所以卸载过程中只需要吧相关文件删除即可
]# systemctl stop ollama.service ]# systemctl disable ollama.service ]# rm -fr /etc/systemd/system/ollama.service ]# rm -fr /usr/local/bin/ollama ]# rm -fr /usr/share/ollama/ ]# userdel -r ollama ]# groupdel ollama五.本地知识库简介
1.本地知识库的必要性
在日益激烈的商业竞争中,知识与信息的管理愈发变得重要。知识管理不再只是企业内部的事,而在开源和协作的互联网时代,它已经成为了企业可持续性发展的关键因素之一。那么,为什么企业需要搭建本地知识库呢?接下来我们一起探讨其背后的原因。
开启知识共享,提升效率
企业内部往往存在各种各样的知识资源,比如客户信息、项目管理、产品发布等。这些知识如果没有得到充分的共享和传递,就会形成所谓的“信息孤岛”,对企业内部沟通造成阻碍,甚至妨碍了企业的发展。而建立了本地知识库,就能够打通信息流通的渠道,让知识信息得以在企业内部自由流动,从而提高工作效率。
知识积累,构建企业核心竞争力
每一个企业在其成长历程中,都会积累着大量的知识资源,比如研发经验、市场策略、管理方法等。这些知识资源的积累会形成企业的核心竞争力,它是没有办法被模仿和替代的。这就需要企业建立本地知识库,对这些资源进行集中存储和管理,使得随着时间的推移,企业的核心竞争力可以得到逐步积累和提升。
强化信息保密,保障企业安全
虽然互联网的发展让信息共享变得更加便捷,但是也给企业的信息安全带来了威胁。尤其在一个企业内部,一些重要信息,如果没有得到良好的管理和保护,可能就会遭到泄露和滥用。因此,建立本地知识库,不能只是看中其知识共享的功能,更应该注重其在信息保密方面的作用。对于敏感信息,企业应当实行严格的访问权限控制,保证只有被授权的人才能够访问。
保证业务连续性,确保数据备份
如果企业的知识库只存储在网络上,那么一旦网络出现故障,或者服务器宕机,会给企业的运营带来极大的困扰。而在本地搭建知识库,就可以保证在出现此类情况时,企业依然可以访问到核心信息。同时,本地知识库为数据备份提供了一个便捷的方案,使得企业能够应对可能的数据丢失情况。
2.本地知识库的构建须知
制定明确的策略:
首先,你需要制定一个明确的策略,要知道你要收集哪些信息,如何收集,如何分类和更新。这样才能确保知识库的有效性和实用性。
选择合适的知识库软件:
在开发团队的精力有限的情况下,选择合适的知识库软件是成功建立知识库的关键一步。完全定制的知识库软件灵活度高,但成本和周期过重;而开源知识库软件则以较低成本提供了高度开放的选择,推荐使用如MaxKB这类开源知识库。
六、利用MaxKB构建本地知识库
1.MaxKB简介
MaxKB(Max Knowledge Base):是一款基于大语言模型和 RAG 的开源知识库问答系统,广泛应用于智能客服、企业内部知识库、学术研究与教育等场景
官网:MaxKB - 强大易用的企业级智能体平台
功能特色:
开箱即用:支持直接上传文档、自动爬取在线文档,支持文本自动拆分、向量化,智能问答交互体验好。
无缝嵌入:支持零编码快速嵌入到第三方业务系统,让已有系统快速拥有智能问答能力。
模型中立:支持对接各种大语言模型,包括本地私有大模型(Llama 3 / Qwen 2 等)、国内公共大模型(通义千问 / 腾讯混元 / 字节豆包 / 智谱 AI / 百度千帆 / Kimi / DeepSeek 等)和国外公共大模型(OpenAI /Gemini 等)。
灵活编排:内置工作流引擎和函数库,支持编排 AI 工作过程,满足复杂业务场景下的需求
MaxKB实现原理
2.部署MaxKB
MaxKB需要在Docker中运行,因此需要安装docker
[root@ollama ~]# cat > /etc/yum.repos.d/docker.repo << EOF > [docker-ce] name=docker baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable gpgcheck=0 > EOF [root@ollama ~]# dnf install docker -y #下载MaxKB运行镜像 [root@ollama ~]# docker pull registry.fit2cloud.com/maxkb/maxkb #建立持久目录 [root@ollama ~]# mkdir /MaxKB/postgresql/data /MaxKB/python-packages -p #运行maxkb [root@ollama ~]# docker run -d --name=maxkb --restart=always -p 4444:8080 -v /MaxKB/postgresql/data:/var/lib/postgresql/data -v /MaxKB/python-packages:/opt/maxkb/app/sandbox/python-packages registry.fit2cloud.com/maxkb/maxkb:latest3.MaxKB的配置与调试
MaxKB 的使用操作流程一般可分为四步:添加模型、创建知识库、创建应用、发布应用。 在高级编排应用中还可以通过函数库的功能,实现数据处理、逻辑判断、信息提取等功能,提供更加强大、灵活的能力
本地模型管理
MaxKB支持在线大模型和本地大模型,用ollama管理的大模型可以直接在MaxKB中添加应用添加步骤如下:
首页找到添加模型:
选择ollama:
创建智能体
新创建的高级编排应用会默认生成简易工作流,可以根据自己的需求进行自定义编排,点击发布后生效。
注意:
画布上的节点必须在工作流程中,不能有流程外的孤立节点,否则在发布时会校验失败。
每个节点可以根据节点的用途进行重命名,双击节点名称即可重命名,但同一个工作流编排中节点名称不能重复。
连线的后置节点可以引用前置节点的输出参数,如果节点名称变更,需要重新复制变量,参数引用方式是
{{节点名称.变量名称}}。
构建本地知识库
企业私有的专业知识库,包含各种类型的数据,是问答对话中回答用户问题的知识来源。MaxKB 中知识库分为通用型知识库和 Web 站点知识库两种类型。
通用型知识库:对离线文档上传管理,支持的文本文件、表格以及 QA 问答对。
Web 站点知识库:用于获取在线静态文本数据管理,输入 Web 根地址后自动同步根地址及子级地址的文本数据。
MaxKB 支持知识库创建、重新向量化、设置、同步、导出、删除等功能。
上传文档
智能分段并导入
七、利用Ollama和MaxKB构建企业内部知识库
构建本地知识库的意义在于通过日常积累,可以把所有人的智慧、经验、问题、解决方案收集到知识库中,其他同事可以通过本地AI来快速学习公司需要的内容、经验、当工作中出现技术问题时也可以通过知识库来快速学习、确保在需要技术指导的时候能够快速得到企业对应的内容、节省企业对于新人的培养开销、真正让AI作为新人的24小时指导老师,
大家在学习过程中会遇到实验报错的情况,我们可以把大家遇到的所有问题构建成知识库,并在本地持久化,当其他同学在遇到此类问题时,我们可以通过知识库来快速定位问题点并给出合理的解决方案