广东购物网站建设价格泉州网页搜索排名提升
Ollama 介绍
为什么不直接部署deepSeek?
俩字:麻烦
为什么选择Ollama
- 开源免费:Ollama 及其支持的模型完全开源且免费,用户可以随时访问和使用这些资源,而无需支付任何费用。
- 简单易用:Ollama 无需复杂的配置和安装过程,只需几条简单的命令即可启动和运行,为用户节省了大量时间和精力。
- 支持多平台:Ollama 提供了多种安装方式,支持 Mac、Linux 和 Windows 平台,并提供 Docker 镜像,满足不同用户的需求。
- 模型丰富:Ollama 支持包括 DeepSeek-R1、 Llama3.3、Gemma2、Qwen2 在内的众多热门开源 LLM,用户可以轻松一键下载和切换模型,享受丰富的选择。
- 功能齐全:Ollama 将模型权重、配置和数据捆绑成一个包,定义为 Modelfile,使得模型管理更加简便和高效。
- 支持工具调用:Ollama 支持使用 Llama 3.1 等模型进行工具调用。这使模型能够使用它所知道的工具来响应给定的提示,从而使模型能够执行更复杂的任务。
- 资源占用低:Ollama 优化了设置和配置细节,包括 GPU 使用情况,从而提高了模型运行的效率,确保在资源有限的环境下也能顺畅运行。
- 隐私保护:Ollama 所有数据处理都在本地机器上完成,可以保护用户的隐私。
- 社区活跃:Ollama 拥有一个庞大且活跃的社区,用户可以轻松获取帮助、分享经验,并积极参与到模型的开发和改进中,共同推动项目的发展。
Ollama 安装和使用
Ollama 的下载和安装非常简单,尤其是对于 MAC 用户:
打开浏览器,访问 Ollama 官方网站:https://ollama.com/download,下载适用于 Mac 的安装包。
![[图片]](https://i-blog.csdnimg.cn/direct/bc429b3115c4400dbbb404bd52211d50.png)
下载完成后,直接双击安装包并按照提示完成安装。
![[图片]](https://i-blog.csdnimg.cn/direct/2e77184b2ab4486ba87728704e49f299.png)
安装完成后,我们直接打开命令行执行 ollama --version 判断是否安装成功:
![[图片]](https://i-blog.csdnimg.cn/direct/93356f25ba514dc89e1df139b43efefd.png)
ollama 会在我们本地服务监听 11434 端口:http://localhost:11434/
![[图片]](https://i-blog.csdnimg.cn/direct/6ed919357a4c4b4aa7716f5b2ea21b55.png)
Ollama 支持的模型
ollama 支持的模型列表,我们可以到Ollama Search查看:
![[图片]](https://i-blog.csdnimg.cn/direct/e3fe3610aaf54d3eb95deaf71dba7cc2.png)
可以看到deepseek已经有了三千九百万次下载,ollama 还支持下面这些主流模型:
| 模型名称 | 简介 |
|---|---|
| Llama | 由Meta开发的通用语言模型,擅长多种语言任务,如文本生成、问答等。Llama 3.1(8B参数)是其较受欢迎的版本之一,文件大小约4.7GB。 |
| Qwen | 阿里云推出的模型,具备强大的语言理解和生成能力。Qwen 2(7B参数)文件大小约4.4GB,适合多种应用场景。 |
| Gemma | 谷歌推出的模型,注重语言的准确性和逻辑性。Gemma 2(9B参数)文件大小约5.5GB,适合需要高精度的语言任务。 |
| Mistral | 以高效和性能平衡著称,适合资源有限的设备。Mistral(7B参数)文件大小约4.1GB。 |
| Phi | 专注于生成高质量文本,适合创意写作等任务。Phi 3(3.8B参数)文件大小约2.3GB。 |
| GLM | 智谱推出的模型,适合中文处理任务。GLM 4(9B参数)文件大小约5.5GB。 |
| CodeLlama | 专为代码生成和理解优化的模型,适合编程辅助等场景。CodeLlama(7B参数)文件大小约3.8GB。 |
| LLaVA | 结合视觉和语言能力的模型,适合多模态任务。LLaVA(7B参数)文件大小约4.5GB。 |
模型选择:性能对比和所需空间
![[图片]](https://i-blog.csdnimg.cn/direct/031a5c5e81444286b143133d0aaa5881.png)
编程和软件工程的区别(Codeforces和SWE-bench Verified):
Codeforces:用于评估模型的编程能力,包括理解问题规格、设计算法、编写功能性代码以及处理逻辑错误的能力。
SWE-bench Verified:用于评估模型在软件工程相关任务上的能力,包括编程技能、软件设计能力、需求理解能力等。
![[图片]](https://i-blog.csdnimg.cn/direct/de01955e80bf460fa386357d5fdc380a.png)
满血版(671b)虽然只需要 404GB 的磁盘空间,对内存、显卡、CPU 等其他硬件也有极高要求。
下载和启动模型
然后,直接在控制台使用 ollama run 模型名称 来下载我们想要的模型就可以了:
![[图片]](https://i-blog.csdnimg.cn/direct/ab8ad7abf9944ae68fbbbf12adda3134.png)
![[图片]](https://i-blog.csdnimg.cn/direct/1f82f1c2e621464f85ad8178a1a96c98.png)
下载完成后可以直接在命令行运行:
![[图片]](https://i-blog.csdnimg.cn/direct/4004e22a84d645479f0a14048e8e1753.png)
ollama命令
- 删除模型
ollama rm deepseek-r1:7b
- 显示模型信息
ollama show deepseek-r1:8b
- 列出计算机上的模型
ollama list
- 列出当前加载的模型
ollama ps
- 停止当前正在运行的模型
ollama stop deepseek-r1:8b
- 启动 Ollama
ollama serve
http://localhost:11434/
7. 其他命令
Java使用ollama
jdk版本17、springboot ai
http://localhost:8080/ai/ollama?msg=“嘿,光头”
@RestController
public class OllamaController {@Resourceprivate OllamaChatModel ollamaChatModel;@RequestMapping(value = "/ai/ollama")public Object ollama(@RequestParam(value = "msg")String msg){ChatResponse chatResponse = ollamaChatModel.call(new Prompt(msg, OllamaOptions.builder().model("deepseek-r1:7b")//越高越随机.temperature(0.5D).build()));return JSON.toJSONString(chatResponse.getResult().getOutput().getText());}
}
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.4</version><relativePath/></parent><groupId>org.example</groupId><artifactId>ollama_test</artifactId><version>0.0.1-SNAPSHOT</version><name>ollama_test</name><description>ollama_test</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version><spring-ai.version>1.0.0-M7</spring-ai.version></properties><repositories><repository><id>jitpack.io</id><url>https://jitpack.io</url></repository></repositories><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-ollama</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-M7</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
注意事项:
- 运行 7B 模型至少需要 8GB 内存,运行 13B 模型至少需要 16GB 内存,运行 33B 模型至少需要 32GB 内存。
- Ollama 进程会一直运行,如果需要终止 Ollama 所有相关进程,可以使用以下命令:
Get-Process | Where-Object {$_.ProcessName -like '*ollama*'} | Stop-Process
Anything LLM + Ollama
Anything LLM 是一款基于 RAG架构的本地知识库工具,能够将文档、网页等数据源与本地运行的大语言模型(LLM)相结合,构建个性化的知识库问答系统。它支持多种主流模型的 API 接入方式,如 OpenAI、DeepSeek 等。
安装
安装使用的方式也比较简单,我们直接访问 Anything LLM 的官方网站
![[图片]](https://i-blog.csdnimg.cn/direct/77b2a89d5958459d9e95c521a7df9828.png)
下载完成后,运行安装包并按照提示完成安装,安装完成后,打开 Anything LLM 应用,第一步就是选择大模型,这里我们看到 Anything LLM 同样支持大部分的主流模型提供商,我们选择 Ollama,工具会自动读取我们本地已经安装的模型:
![[图片]](https://i-blog.csdnimg.cn/direct/758c17578da24271b9bd5a79df7f9442.png)
然后下一步应该是选择Embedding(嵌入模型)和 Vector Database(向量数据库)
![[图片]](https://i-blog.csdnimg.cn/direct/2492d95270504af3bc85703feb8757a3.png)
然后他让我们输入一个 Workspace(工作区)的名字,我们可以在不同的工作区里设置不同的知识库:
![[图片]](https://i-blog.csdnimg.cn/direct/24a070d6b9774ea08d0377a29aa1166b.png)
其他设置
![[图片]](https://i-blog.csdnimg.cn/direct/7ca5b0d9ef954c39bc8250a9ae535025.png)
上传知识库
![[图片]](https://i-blog.csdnimg.cn/direct/a14fb3d6ed344cd58665166b04d7f7e5.png)
本地文件版
![[图片]](https://i-blog.csdnimg.cn/direct/a77c36df37e44403a4816b0ef99be36e.png)
![[图片]](https://i-blog.csdnimg.cn/direct/ad43bdcb9a894208ac20b3a8a9c06407.png)
上传知识库前
![[图片]](https://i-blog.csdnimg.cn/direct/230e5279986b4ee48885bbd7edb974a6.png)
上传知识库以后
![[图片]](https://i-blog.csdnimg.cn/direct/43129acf41f9488d8c53e1470f22a5db.png)
网页链接版本
https://cn.vuejs.org/api/application#createapp
![[图片]](https://i-blog.csdnimg.cn/direct/bfaae9f997774c4cb42b8328a4cad137.png)
![[图片]](https://i-blog.csdnimg.cn/direct/149508e3c406447ab34fed5454691101.png)
链接场景在测试时候不太好展示,实时变更的网站都有反爬,非实时变更的他都知道
联网搜索
DeepSeek R1 是没办法联网的,想要让本地模型联网我们需要开启一个代理
![[图片]](https://i-blog.csdnimg.cn/direct/59ff4241365749c19d5e316f233904ec.png)
其中DuckDuckGo是免费的,效果肯定没有其他付费的效果好。此时我们就可以顺利访问网络了
![[图片]](https://i-blog.csdnimg.cn/direct/b09bab566c9c4bc390a9c3e74eff3f35.png)
![[图片]](https://i-blog.csdnimg.cn/direct/a29e0009128f45048abe0a0ac1afac95.png)
设置完不生效
重启客户端、不行就再建个工作区
API调用
在客户端下使用还是太局限了,Anything LLM 还提供了 API 调用的能力,这样我们就可以通过代码来灵活定制我们的使用场景,可以做很多事情,比如:私人知识管理工具、企业内部智能客服等等。
基本概念
在开始 API 调用之前,我们先要明确 Anything LLM 的两个核心概念:
![[图片]](https://i-blog.csdnimg.cn/direct/8722e04c4b9f42a8b7bfbd8d3b000c0d.png)
Workspace:一个独立的环境,用于存储和管理与特定主题或项目相关的文件和数据。用户可以在工作区中上传文件、配置参数,并与模型进行交互。每个工作区的数据是独立的,互不干扰,方便用户对不同主题或项目进行分类管理。
Thread:工作区中的一次具体对话记录,代表用户与模型之间的一系列交互。它会记录用户的问题和模型的回答,保持对话的连贯性。用户可以在一个工作区中创建多个线程,分别处理不同的问题或任务,方便管理和追溯每次对话的内容。
获取密钥

获取Header
private HttpHeaders getHeaders() {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.set("Accept", "application/json");headers.set("Authorization", "Bearer 1JHANDS-8ZP4Z83-Q83JHB5-SWT8A6Y");return headers;
}
获取工作空间信息
@GetMapping("/getWorkspaceBySlug")
public String getWorkspaceBySlug(String slug) {HttpEntity<String> entity = new HttpEntity<>("parameters", getHeaders());// 发送 GET 请求ResponseEntity<String> response = restTemplate.exchange("http://localhost:3001/api/v1/workspace/" + slug,org.springframework.http.HttpMethod.GET,entity,String.class);return response.getBody();
}
获取历史对话记录
@GetMapping("/getChats")
public String getChats(String slug, String threadSlug) {HttpEntity<String> entity = new HttpEntity<>("parameters", getHeaders());// 发送 GET 请求ResponseEntity<String> response = restTemplate.exchange("http://localhost:3001/api/v1/workspace/" + slug + "/thread/" + threadSlug + "/chats",org.springframework.http.HttpMethod.GET,entity,String.class);return response.getBody();
}
提问
@GetMapping("/sendMessage")
public String sendMessage(String slug, String threadSlug, String message) {// 拼接消息体String request = "{\n" +" \"message\": \"@agent ".concat(message).concat("\",")+" \"mode\": \"chat\",\n" +" \"userId\": 1,\n" +" \"reset\": false\n" +"}";// 创建请求体HttpEntity<String> entity = new HttpEntity<>(request, getHeaders());// 发送 POST 请求并获取响应return restTemplate.postForObject("http://localhost:3001/api/v1/workspace/" + slug + "/thread/" + threadSlug + "/chat",entity,String.class);
}
注意
api调用智能用英文提问,否则会被识别为???
![[图片]](https://i-blog.csdnimg.cn/direct/fd01b9b849f1441cabf268900d1cdd07.png)
补充文档:
Nnything llm学习
Ollama 学习
