当前位置: 首页 > news >正文

本地部署DeepSeek-R1并打通知识库

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 的安装包。
[图片]

下载完成后,直接双击安装包并按照提示完成安装。
[图片]

安装完成后,我们直接打开命令行执行 ollama --version 判断是否安装成功:
[图片]

ollama 会在我们本地服务监听 11434 端口:http://localhost:11434/
[图片]

Ollama 支持的模型

ollama 支持的模型列表,我们可以到Ollama Search查看:
[图片]

可以看到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。

模型选择:性能对比和所需空间

[图片]

编程和软件工程的区别(Codeforces和SWE-bench Verified):
Codeforces:用于评估模型的编程能力,包括理解问题规格、设计算法、编写功能性代码以及处理逻辑错误的能力。
SWE-bench Verified:用于评估模型在软件工程相关任务上的能力,包括编程技能、软件设计能力、需求理解能力等。
[图片]

满血版(671b)虽然只需要 404GB 的磁盘空间,对内存、显卡、CPU 等其他硬件也有极高要求。

下载和启动模型

然后,直接在控制台使用 ollama run 模型名称 来下载我们想要的模型就可以了:
[图片]

[图片]

下载完成后可以直接在命令行运行:
[图片]

ollama命令

  1. 删除模型
ollama rm deepseek-r1:7b
  1. 显示模型信息
ollama show deepseek-r1:8b
  1. 列出计算机上的模型
ollama list
  1. 列出当前加载的模型
ollama ps
  1. 停止当前正在运行的模型
ollama stop deepseek-r1:8b
  1. 启动 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>

注意事项:

  1. 运行 7B 模型至少需要 8GB 内存,运行 13B 模型至少需要 16GB 内存,运行 33B 模型至少需要 32GB 内存。
  2. Ollama 进程会一直运行,如果需要终止 Ollama 所有相关进程,可以使用以下命令:
Get-Process | Where-Object {$_.ProcessName -like '*ollama*'} | Stop-Process

Anything LLM + Ollama

Anything LLM 是一款基于 RAG架构的本地知识库工具,能够将文档、网页等数据源与本地运行的大语言模型(LLM)相结合,构建个性化的知识库问答系统。它支持多种主流模型的 API 接入方式,如 OpenAI、DeepSeek 等。

安装

安装使用的方式也比较简单,我们直接访问 Anything LLM 的官方网站
[图片]

下载完成后,运行安装包并按照提示完成安装,安装完成后,打开 Anything LLM 应用,第一步就是选择大模型,这里我们看到 Anything LLM 同样支持大部分的主流模型提供商,我们选择 Ollama,工具会自动读取我们本地已经安装的模型:
[图片]

然后下一步应该是选择Embedding(嵌入模型)和 Vector Database(向量数据库)
[图片]

然后他让我们输入一个 Workspace(工作区)的名字,我们可以在不同的工作区里设置不同的知识库:
[图片]

其他设置
[图片]

上传知识库
[图片]

本地文件版
[图片]

[图片]

上传知识库前

[图片]

上传知识库以后

[图片]

网页链接版本

https://cn.vuejs.org/api/application#createapp

[图片]

[图片]

链接场景在测试时候不太好展示,实时变更的网站都有反爬,非实时变更的他都知道

联网搜索

DeepSeek R1 是没办法联网的,想要让本地模型联网我们需要开启一个代理
[图片]

其中DuckDuckGo是免费的,效果肯定没有其他付费的效果好。此时我们就可以顺利访问网络了
[图片]

[图片]

设置完不生效

重启客户端、不行就再建个工作区

API调用

在客户端下使用还是太局限了,Anything LLM 还提供了 API 调用的能力,这样我们就可以通过代码来灵活定制我们的使用场景,可以做很多事情,比如:私人知识管理工具、企业内部智能客服等等。

基本概念

在开始 API 调用之前,我们先要明确 Anything LLM 的两个核心概念:
[图片]

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调用智能用英文提问,否则会被识别为???
[图片]

补充文档:

Nnything llm学习
Ollama 学习

http://www.dtcms.com/a/285568.html

相关文章:

  • 数字地与模拟地隔离
  • 【C语言】深入理解柔性数组:特点、使用与优势分析
  • Cursor替代,公测期间免费使用Claude4
  • 首个直播流扩散(LSD)AI模型:MirageLSD,它可以实时把任意视频流转换成你的自定义服装风格——虚拟换装新体验
  • mpiigaze的安装过程一
  • 【后端】.NET Core API框架搭建(10) --配置163邮件发送服务
  • 【锂电池剩余寿命预测】TCN时间卷积神经网络锂电池剩余寿命预测(Pytorch完整源码和数据)
  • C#之线程Thread
  • ARCS系统机器视觉实战(直播回放)
  • Huber Loss(胡贝损失)详解:稳健回归的秘密武器 + Python实现
  • Unity 堆栈分析实战指南 C#
  • Copula 回归与结构方程模型:R 语言构建多变量因果关系网络
  • 机器视觉的布料丝印应用
  • React条件渲染
  • 用 React-Three-Fiber 实现雪花下落与堆积效果:从零开始的 3D 雪景模拟
  • jvm分析篇---1、先认识下dump文件
  • Linux系统安装Docker及部署Node.js 20.15.0(含pnpm、pm2)完整指南
  • Docker部署前后端分离项目——多项目共享环境部署
  • GEV/POT/Markov/点过程/贝叶斯极值全解析;基于R语言的极值统计学
  • Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解
  • vue2 面试题及详细答案150道(81 - 90)
  • 2025阿里云黑洞自救指南:从分钟级恢复到长效免疫的实战方案
  • RPG59.玩家拾取物品三:可拾取物品的提示UI
  • Excel批量生成SQL语句 Excel批量生成SQL脚本 Excel拼接sql
  • Android studio和gradle升级后的一些错误
  • YOLO 目标检测的改进方法
  • FastExcel:革新Java生态的高性能Excel处理引擎
  • [2025CVPR-目标检测方向]FSHNet:一种用于3D物体检测的全稀疏混合网络。
  • 如何为“地方升学导向型”语校建模?Prompt 框架下的宇都宫日建工科专门学校解析(7 / 500)
  • 20250718-6-Kubernetes 调度-Pod对象:环境变量,初始容器,静态_笔记