私有化部署大模型最佳解决方案 Ollama (8B)模型

私有化部署大模型Ollama

  • 为什么需要私有化部署大模型
  • 一、Ollama本地部署Llama3大模型
  • 二、Langchain4j调用Ollama本地部署模型API
  • 三、Ollama本地部署nomic向量模型
  • 四、Spring AI调用Ollama本地部署模型API


为什么需要私有化部署大模型

企业考虑成本和数据隐私问题,会特别希望能在企业内部部署一套大模型,在企业内部直接调用,这样就能成本可控,数据也不会泄露,所以开源大模型是非常有前景的,目前来说Meta开源的Llama3是开源大模型中性能表现最好的,所以这节课先带大家来尝试使用Ollama来部署Llama3和nomic模型。

一、Ollama本地部署Llama3大模型

Ollama的目标是能够在本地运行大模型,使用Go语言实现的一款开源项目,项目地址为https://github.com/ollama/ollama。

官方主页为https://ollama.com/,进入主页就能看到在各个操作系统中如何下载和安装

在这里插入图片描述

安装完后,就可以使用ollama命令来私有化部署和运行某个大模型,首次运行需要下载大模型文件,所以需要花时间。

在这个 https://ollama.com/library 中可以搜索你想要尝试的大模型,比如llama3
在这里插入图片描述
进入对应模型的首页,还可以选择要尝试的模型版本

在这里插入图片描述

比如我选择8b之后,右侧就给出了运行命令

在这里插入图片描述

直接运行该命令即可,默认情况下模型文件会下载在用户目录的.ollama目录下

在这里插入图片描述
等待下载完即可,下载完后会自动进入聊天对话模式
在这里插入图片描述
可以按Ctrl+d退出。

如果你只想启动ollama的服务端,从而用来接收API调用,那么可以运行:

ollama serve

这样,ollama的服务端就启动了,就可以接收模型的请求调用了,不过可能ollama部署了多个模型,所以请求调用时需要指定想要调用的是哪个模型.

二、Langchain4j调用Ollama本地部署模型API

比如我们用Langchain4j可以这么调用,先引入ollama的依赖:

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-ollama</artifactId><version>${langchain4j.version}</version>
</dependency>

然后:

package com.qjc.demo;import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.language.LanguageModel;
import dev.langchain4j.model.ollama.OllamaLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.output.Response;/**** @projectName ollama-demo* @packageName com.qjc.demo* @author qjc* @description TODO* @Email qjc1024@aliyun.com* @date 2024-10-18 09:10**/
public class Main {public static void main(String[] args) {LanguageModel model = OllamaLanguageModel.builder().baseUrl("http://localhost:11434/v1/").modelName("llama3:8b").build();String result = model.generate("你是谁").content();System.out.println(result);}
}

输出为:

在这里插入图片描述
不过,ollama是兼容了Open Ai的API的,所以也可以直接使用OpenAiChatModel:

OpenAiChatModel model = OpenAiChatModel.builder().baseUrl("http://localhost:11434/v1/").modelName("llama3:8b").apiKey("123").build();String result = model.generate("你是谁");
System.out.println(result);

三、Ollama本地部署nomic向量模型

并不定是OpenAI的向量化模型就是最好的,比如Ollama支持的nomic-embed-text就比OpenAI的text-embedding-ada-002和text-embedding-3-small要好。

https://ollama.com/library/nomic-embed-text

所以,我们可以利用Ollama来本地部署

nomic-embed-text

对于向量化模型,我们只需要把模型拉取下来,并通过API调用就可以了,所以可以运行:

ollama pull nomic-embed-text:v1.5

来拉取
在这里插入图片描述
然后就可以在Langchain4j中进行测试了:

package com.qjc.demo;import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.model.StreamingResponseHandler;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.language.LanguageModel;
import dev.langchain4j.model.ollama.OllamaEmbeddingModel;
import dev.langchain4j.model.ollama.OllamaLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.openai.OpenAiEmbeddingModel;
import dev.langchain4j.model.openai.OpenAiStreamingChatModel;
import dev.langchain4j.model.output.Response;/**** @projectName ollama-demo* @packageName com.qjc.demo* @author qjc* @description TODO* @Email qjc1024@aliyun.com* @date 2024-10-18 09:18**/
public class Main {public static void main(String[] args) {OllamaEmbeddingModel model = OllamaEmbeddingModel.builder().baseUrl("http://localhost:11434/").modelName("nomic-embed-text:v1.5").build();System.out.println(model.embed("你是谁").content());}
}

不过,目前Ollama的向量化API还没有兼容OpenAI,所以只能用OllamaEmbeddingModel,而不能用OpenAiEmbeddingModel。

四、Spring AI调用Ollama本地部署模型API

同理,也可以使用Spring AI来调用Ollama本地部署的大模型和向量模型,比如,先引入:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>

再配置:

spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.model=llama3:8b
spring.ai.ollama.embedding.model=nomic-embed-text:v1.5

就可以正常使用Spring AI调用Ollama部署的模型了,不过目前Ollama的Starter中只提供了OllamaChatClient和OllamaEmbeddingClient
在这里插入图片描述
因此不支持ImageClient等其他客户端。

另外在Spring AI中也可以通过open-ai的starter来使用Ollama部署的模型,因为Ollama兼容了Open AI的API,但是同样还不支持Embedd

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

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

相关文章

021_Thermal_Transient_in_Matlab统一偏微分框架之热传导问题

Matlab求解有限元专题系列 固体热传导方程 固体热传导的方程为&#xff1a; ρ C p ( ∂ T ∂ t u t r a n s ⋅ ∇ T ) ∇ ⋅ ( q q r ) − α T d S d t Q \rho C_p \left( \frac{\partial T}{\partial t} \mathbf{u}_{\mathtt{trans}} \cdot \nabla T \right) \nab…

BM算法(手算版)

BM 算法 BM 算法是一种字符串匹配的算法。 与 KMP 相比&#xff0c;BM 算法不扫描全部输入字符&#xff0c;平均匹配时间 c・n, 常量 c <1 (随机或真实文本), 但最坏情况是 O (n・m). 可以将 BM 算法的最坏情况改进到 O (n)&#xff1a;通过记录文本后缀中最…

计算机系统简介

一、计算机的软硬件概念 1.硬件&#xff1a;计算机的实体&#xff0c;如主机、外设、硬盘、显卡等。 2.软件&#xff1a;由具有各类特殊功能的信息&#xff08;程序&#xff09;组成。 系统软件&#xff1a;用来管理整个计算机系统&#xff0c;如语言处理程序、操作系统、服…

群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP

有nas的相信对公网都不模式&#xff0c;在现在基础上传带宽能有100兆的时代&#xff0c;有公网代表着家里有一个小服务器&#xff0c;像百度网盘&#xff0c;优酷这种在线服务都能部署为私有化服务。但现在运营商几乎不可能提供公网ip&#xff0c;要么自己买个云服务器做内网穿…

通过github创建自己网页链接的方法

文章目录 要使用GitHub创建静态网页链接&#xff0c;可以按照以下详细步骤进行操作&#xff1a;一、准备阶段二、创建仓库并配置三、准备并上传静态网站文件四、配置GitHub Pages五、访问和更新你的静态网页 要使用GitHub创建静态网页链接&#xff0c;可以按照以下详细步骤进行…

uniapp微信小程序调用百度OCR

uniapp编写微信小程序调用百度OCR 公司有一个识别行驶证需求&#xff0c;调用百度ocr识别 使用了image-tools这个插件&#xff0c;因为百度ocr接口用图片的base64 这里只是简单演示&#xff0c;accesstoken获取接口还是要放在服务器端&#xff0c;不然就暴露了自己的百度项目k…

Xshell使用密钥远程登录Ubuntu 22.04报错:所选的用户密钥未在远程主机上注册。请再试一次

报错截图如下&#xff1a; 问题原因&#xff1a; Ubuntu 22.04 不支持 Xshell使用的私钥。 查看系统支持的私钥&#xff1a;sudo sshd -T | egrep "pubkey" ~$ sudo sshd -T | egrep "pubkey" pubkeyauthentication yes pubkeyacceptedalgorithms ssh-ed…

基于SpringBoot+Vue的旅游服务平台【提供源码+答辩PPT+参考文档+项目部署】

&#x1f4a5; ① 前言&#xff1a;这两年毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的JavaWeb项目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff01; ❗② 如何解决这类问题&#xff1f; 让我们能够顺利通过毕业&#xff0c;我也一直在不断思考、…

ROS 的 urdf 中 link 和 joint 的子标签中 origin 的含义

主要参考文章——主要文章&#xff0c;官方关于urdf的介绍和官方文档的翻译解析 link标签里面的origin含义 link标签里面有三个主要的子标签&#xff0c;分别是visual——连杆的外观和坐标系&#xff0c;collisoin——连杆的碰撞属性和inertial——连杆的惯性设置 首先&…

【AIGC】AI如何匹配RAG知识库: Embedding实践,语义搜索

引言 RAG作为减少模型幻觉和让模型分析、回答私域相关知识最简单高效的方式&#xff0c;我们除了使用之外可以尝试了解其是如何实现的。在实现RAG的过程中Embedding是非常重要的手段。本文将带你简单地了解AI工具都是如何通过Embedding去完成语义分析匹配的。 Embedding技术简…

低空经济发展迅猛,无人机设计制造技术详解

低空经济的迅猛发展&#xff0c;为无人机设计制造技术带来了新的机遇和挑战。无人机作为低空经济中的重要组成部分&#xff0c;其设计制造技术直接关系到无人机的性能、安全性和应用场景的拓展。以下是对无人机设计制造技术的详细解析&#xff1a; 一、无人机设计技术 1. 气动…

【HTML + CSS 魔法秀】打造惊艳 3D 旋转卡片

HTML结构 box 类是整个组件的容器。item-wrap 类是每个旋转卡片的包装器&#xff0c;每个都有一个内联样式–i&#xff0c;用于控制动画的延迟。item类是实际的卡片内容&#xff0c;包含一个图片。 <template><div class"box"><div class"item…

STM32L010F4 最小系统设计

画一个 STM32L010F4 的测试板子...... by 矜辰所致前言 最近需要用到一个新的 MCU&#xff1a; STM32L010F4 &#xff0c;上次测试的 VL53L0X 需要移植到这个芯片上&#xff0c;网上一搜 STM32L010F4&#xff0c;都是介绍资料&#xff0c;没有最小系统&#xff0c;使用说明等。…

计算生物学与生物信息学漫谈-1-测序一路走来

最近工作中&#xff0c;反思自己计算生物学基础非常薄弱&#xff0c;然而作为一门非常新兴的交叉学科&#xff0c;涉及计算机、物理、生物、数学等多多学科&#xff0c;国内并没有这样完善的教程&#xff0c;因此想要自己做一个教程&#xff0c;使用费曼学习法学习&#xff0c;…

探讨淘宝商品 API 接口:运用及收益

在当今电子商务蓬勃发展的时代&#xff0c;淘宝作为全球领先的电商平台&#xff0c;拥有海量的商品资源和庞大的用户群体。而淘宝商品 API 接口的出现&#xff0c;为开发者和企业提供了一种强大的工具&#xff0c;能够实现对淘宝商品数据的高效获取和利用。本文将深入探讨淘宝商…

C语言 | Leetcode C语言题解之第492题构造矩形

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> constructRectangle(int area) {int w sqrt(1.0 * area);while (area % w) {--w;}return {area / w, w};} };

2024年PDF转JPG新趋势,4款常用编辑工具梳理,不容错过

嘿&#xff0c;大家好&#xff0c;我是你们的老朋友&#xff0c;今天咱们聊个超实用的技巧——把PDF文件变成JPG图片&#xff0c;这样分享起来就方便多了。不管是工作汇报、学习资料还是生活照片&#xff0c;这招都能让你事半功倍。 1. 福昕PDF编辑器 闪现 ✚ https://editor…

排序---java---黑马

排序算法 名称平均时间复杂度最好情况最坏情况空间复杂度稳定性冒泡排序 O ( n 2 ) O(n^2) O(n2) O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1) Y Y Y选择排序 O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1) N N …

【JavaScript】网页交互的灵魂舞者

我的主页&#xff1a;2的n次方_ 1. JavaScript 的三种引入方式 引⼊⽅式 语法描述 ⽰例 ⾏内样式 直接嵌⼊到 html 元素内部 <input type"button" value"点我⼀下" οnclick"alert(haha)"> 内部样式 定义<script>标签&a…

PDF 软件如何帮助您编辑、转换和保护文件

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案&#xff0c;还是尝试组织和编辑主文档&#xff0c;PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时&#xff0c;请考虑这些因素。 1. 确定您的…