Ollama本地搭建大模型

短短一夜之间,中国的AI大模型DeepSeek迅速崛起,成功引起了全球科技界的广泛关注。

deepSeek爆火时间线

DeepSeek大事记

  1. 技术突破与产品发布
    • 2024年12月26日:DeepSeek-V3发布,知识类任务水平提升,生成吐字速度加快。
    • 2025年1月20日:DeepSeek开源推理模型DeepSeek-R1发布。
    • 2025年1月24日:DeepSeek发布多模态大模型Janus-Pro。
    • 2025年1月27日:DeepSeek应用登顶中国和美国苹果应用商店免费APP下载排行榜。
  1. 市场与行业影响
    • 2025年1月27日:DeepSeek导致美股科技股暴跌,英伟达单日市值蒸发约6000亿美元,创下美股史上最大单日市值下跌纪录。
    • 2025年1月28日:英伟达、亚马逊、微软等美国科技巨头宣布接入DeepSeek。
  1. 遭遇网络攻击
    • 2025年1月3日:DeepSeek开始遭受网络攻击,前期为HTTP代理攻击。
    • 2025年1月20日-26日:攻击者采用SSDP/NTP反射放大攻击。
    • 2025年1月27日:攻击数量激增,手段升级为应用层攻击及暴力破解。
    • 2025年1月28日凌晨:DeepSeek官网发布公告称线上服务遭遇大规模恶意攻击。
    • 2025年1月30日凌晨:攻击烈度再次升级,大量僵尸网络参与其中。

各方表态

各国政府表态
  1. 美国
    • 政府层面:美国众议院首席行政事务官向国会办公室发出通知,警告国会办公室不要使用DeepSeek的服务。
    • 军事层面:美国海军禁止内部人员使用DeepSeek,称其存在“潜在安全和道德问题”。
    • 舆论层面:美国媒体广泛报道DeepSeek,认为其对美国AI领先地位构成挑战。
  1. 英国
    • 议会层面:英国议会对DeepSeek热议非凡,议员们盛赞其卓越性能和开源精神,认为其为英国攀登全球人工智能顶峰提供了机遇。
    • 舆论层面:英国媒体认为DeepSeek的出现使美国巨额投资显得多余,苏格兰因其天然优势被看作是数据中心建设的理想地点。
  1. 印度
    • 政府层面:印度部长称赞DeepSeek低成本AI模型,认为其为印度提供了有益的借鉴。
    • 舆论层面:印度社会反思自身在AI领域的发展不足,对中国推出DeepSeek表示羡慕和焦虑。
  1. 其他国家
    • 日本:日本内阁官房长官林芳正表示,尚未有特别应对方针,将密切关注AI相关国际开发动向。
    • 法国:法国监管机构国家信息与自由委员会表示,将对DeepSeek进行问询,了解其系统运行及可能存在的隐私风险。
    • 意大利、爱尔兰、澳大利亚:这些国家也对DeepSeek的使用表示关注。
头部大公司表态
  1. 英伟达
    • 股价暴跌:2025年1月27日,英伟达股价暴跌近17%,单日市值蒸发约6000亿美元。
    • 技术认可:英伟达科学家Jim Fan认为DeepSeek延续了OpenAI的开放研究使命。
    • 接入合作:英伟达宣布NVIDIA NIM已经可以使用DeepSeek-R1模型。
  1. 微软
    • 股价下跌:微软股价在DeepSeek事件后也出现下跌。
    • 接入合作:微软宣布将DeepSeek-R1正式纳入Azure AI Foundry,并表示DeepSeek“有一些真的创新”,AI成本下降是趋势。
  1. 亚马逊
    • 股价下跌:亚马逊股价在DeepSeek事件后出现下跌。
    • 接入合作:亚马逊表示DeepSeek-R1模型可以在Amazon Web Services上使用。
  1. Meta
    • 股价下跌:Meta股价在DeepSeek事件后出现下跌。
    • 技术反思:Meta CEO马克·扎克伯格表示,DeepSeek有很多值得学习的地方,公司“仍在消化DeepSeek的一些成果”,并计划将其中一些进步应用到Llama中。
  1. OpenAI
    • 抄袭指控:OpenAI对DeepSeek发起抄袭指控。
    • 技术反思:OpenAI创始人山姆·奥特曼承认DeepSeek的强大。
  1. 谷歌
    • 股价下跌:谷歌母公司Alphabet股价在DeepSeek事件后出现下跌。
    • 技术反思:谷歌等公司开始重新评估AI投资策略。
  1. 阿斯麦
    • 积极评价:阿斯麦总裁兼首席执行官富凯表示,DeepSeek推出高效AI模型是个好消息,有助于降低AI应用成本,为阿斯麦带来更多商机。

程序员参与吃瓜

  • 程序员是否有必要关注,如何参与这一场全球舆论?
  • 学习大模型应用门槛有多高?
  • java社区对大模型的应用跟进状态?

带着这些朴素的问题,我们从最简单的开始,自己动手本地搭建大模型,切身感受AI能为我们做什么,学习使用门槛有多低。

Ollama

什么是Ollama

Ollama 是一个用于本地运行和部署大型语言模型(LLM,Large Language Models)的平台。它使开发者能够在本地环境中运行 AI 模型,而不必依赖于云服务。这个工具支持多种类型的 LLM,能够帮助开发者更轻松地与 AI 模型交互、进行训练和调优。

Ollama 主要特点包括:

  1. 本地部署:Ollama 允许用户在本地运行多个大型语言模型,避免了云计算带来的延迟和隐私问题。
  2. 易于使用:它通过命令行工具和简单的 API,提供了直接与模型交互的方式。
  3. 多模型支持:支持各种类型的 LLM,比如 GPT 系列、LLaMA 等。
  4. 轻量级:它优化了模型运行的资源消耗,可以在普通的本地机器上运行,而不需要强大的 GPU 资源。

Ollama 适合那些希望在本地环境中控制和运行大型语言模型的开发者,尤其在需要减少延迟、保护数据隐私或避免过度依赖云计算的情况下特别有用。

官网

Ollama

支持多种平台

也可以使用docker安装

https://hub.docker.com/r/ollama/ollama

本次使用docker安装演示:

直接访问11434端口,可查看Ollama状态:curl http://localhost:11434

模型

有了平台,哪里去找可运行的大模型?Ollama也准备好了。

Ollama

查看模型详情

deepseek-r1:8b

使用风格跟docker非常类似,复制命令执行即可

ollama run deepseek-r1:1.5b
# docker
# docker exec -it ollam ollama run deepseek-r1:1.5b

安装完成之后,就可以使用本地的大模型进行普通的问答了

控制台问答用起来有些不舒服,我们可以用一些开源的web工具,如Open WebUI

Open WebUI

Open WebUI 是一个可扩展的、功能丰富且用户友好的自托管人工智能平台,设计为完全离线运行。它支持各种 LLM 运行器,如Ollama和OpenAI 兼容的 API,带有内置推理引擎用于检索增强生成(RAG),使其成为一个强大的人工智能部署解决方案。

官网

https://docs.openwebui.com

使用docker安装
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data --name open-webui \
--restart always ghcr.io/open-webui/open-webui:main

安装完成之后,访问 http://localhost:3000

可以看到和ChatGPT的对话框相似。

能自动识别到本地通过Ollama运行的大模型,直接选择就可以愉快的对话了。

Lobe Chat

官网:LobeHub - LobeChat: Personal LLM productivity tool, surpassing the ChatGPT / OLLaMA user experience

使用docker安装
 docker run -d -p 3210:3210 --add-host=host.docker.internal:host-gateway -e OLLAMA_PROXY_URL=http://host.docker.internal:11434 lobehub/lobe-chat

访问3210端口:

配置ollama地址

开始对话

Spring整合Ollama

Spring AI 是 Spring 框架的一部分,它目的是为构建与人工智能(AI)和机器学习(ML)相关的应用程序提供支持。这个模块整合了常见的 AI 工具和库,简化了 Spring 开发者在应用中引入 AI 功能的过程。Spring AI 是为了让开发者能够以更简单、直观的方式将 AI 功能嵌入到 Spring 应用程序中,并提高生产力。

官网

Spring AI

新建工程

选择AI模块的Ollama

<?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.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example.ai</groupId><artifactId>spring-ai-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-ai-demo</name><properties><java.version>17</java.version><spring-ai.version>1.0.0-SNAPSHOT</spring-ai.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>${spring-ai.version}</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><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories></project>

application.yaml

spring:application:name: spring-ai-demoai:ollama:base-url: http://localhost:11434

代码demo


@RestController
@RequestMapping("/ai/ollama")
public class OllamaChatController {@Autowiredprivate OllamaChatModel ollamaChatModel;@GetMapping("/chat")public Object chat(@RequestParam(value = "msg",defaultValue = "你好!") String msg) {String call = ollamaChatModel.call(msg);System.out.println(call);return call;}
}

启动服务,并访问:

RAG

什么是RGA?

RAG(Retrieval-Augmented Generation)是一种结合信息检索(Information Retrieval)和生成模型(Generative Models)的方法,用于提升自然语言处理(NLP)任务的性能。RAG 的核心思想是将信息检索与生成模型的能力相结合,通过检索外部知识来增强模型生成的质量,尤其是在需要大规模知识的场景下,如问答系统、对话生成和文档生成等。

RAG 与 LLM 配合使用的概念流程:

anythingLLM

官网:https://anythingllm.com/

安装:支持多端

docker安装:https://hub.docker.com/r/mintplexlabs/anythingllm

docker pull mintplexlabs/anythingllm:latestdocker run -d \--name anythingllm \--add-host=host.docker.internal:host-gateway \--health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1" \--health-interval 60s \--health-start-period 60s \--health-timeout 10s \-p 3001:3001/tcp \--restart=always \--user anythingllm \-w /app \mintplexlabs/anythingllm

访问:

可以在工作区上传自己的知识库,anythingLLM提供检索能力。

连接一些常见的数据源

RAGflow

https://github.com/infiniflow/ragflow/blob/main/README_zh.md

spring ai整合知识库

前面通过RAG介绍知道,需要将知识存到一个向量数据库中。

向量数据库

VectorDBBench: An Open-Source VectorDB Benchmark Tool

DB-Engines Ranking

演示使用pgvector

安装向量数据库pgvector(postgres封装提供)

docker run -d --name pgvector -p 5433:5433 \-e POSTGRES_USER=root -e POSTGRES_PASSWORD=root pgvector/pgvector:pg17

选择数据向量化模型

确定使用什么embedding向量化数据。

下载量最大的是这个nomic-embed-text

ollama pull nomic-embed-text

注意:embedding模型无需run命令

创建向量数据库

建库建表

create database spring_ai;CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS hstore;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";CREATE TABLE IF NOT EXISTS vector_store (id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,content text,metadata json,embedding vector(768) // 768 is the nomic-embed-text default embedding dimension
);CREATE INDEX ON vector_store USING HNSW (embedding vector_cosine_ops);

application.yaml

spring:application:name: demo-spring-aidatasource:driver-class-name: org.postgresql.Driverurl: jdbc:postgresql://47.236.8.42:5432/spring_aiusername: rootpassword: rootai:vectorstore:pgvector:index-type: HNSWdistance-type: COSINE_DISTANCEdimensions: 768max-document-batch-size: 10000ollama:embedding:enabled: truemodel: nomic-embed-textbase-url: http://47.236.8.42:11434chat:model: deepseek-r1:1.5boptions:temperature: 0.1

使用java代码,利用nomic-embed-text embedding模型向量化文本数据,并将向量数据保存到向量数据库pgvector中。

@Resource
private VectorStore vectorStore;@Test
void save() throws Exception {ClassPathResource classPathResource = new ClassPathResource("xxxjjj.txt");String content = FileUtils.readFileToString(classPathResource.getFile(), "UTF-8");List<Document> list = Arrays.stream(content.split("([。.;])")).map(Document::new).collect(Collectors.toList());vectorStore.write(list);
}

测试RAG能力代码,可以查询知识库相关内容。

@RestController
@RequestMapping("/ai/ollama")
public class OllamaChatController {@Autowiredprivate ChatClient chatClient;@GetMapping("/chat")public Object chat(@RequestParam(value = "msg",defaultValue = "你好!") String msg) {String prompt = chatClient.prompt().user(msg).call().content();System.out.println(prompt);return prompt;}
}@Configuration
public class OllamaConfiguration {@Autowiredprivate OllamaChatModel ollamaChatModel;@Autowiredprivate VectorStore vectorStore;@Beanpublic ChatClient chatClient(ChatMemory chatMemory) {return ChatClient.builder(ollamaChatModel).defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory),new QuestionAnswerAdvisor(vectorStore)).build();}@Beanpublic ChatMemory chatMemory() {return new InMemoryChatMemory();}
}

测试:

向量化的知识库文本数据为

数据库表内容:

测试问答:

参考链接

DeepSeek

Ollama

LM Studio - Discover, download, and run local LLMs

🏡 Home | Open WebUI

LobeChat: Personal LLM productivity tool

Introduction :: Spring AI Reference

AnythingLLM | The all-in-one AI application for everyone

ragflow/README_zh.md at main · infiniflow/ragflow

huggingface

ModelScope 魔搭社区

Cursor - The AI Code Editor

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

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

相关文章

C#结合html2canvas生成切割图片并导出到PDF

目录 需求 开发运行环境 实现 生成HTML范例片断 HTML元素转BASE64 BASE64转图片 切割长图片 生成PDF文件 小结 需求 html2canvas 是一个 JavaScript 库&#xff0c;它可以把任意一个网页中的元素&#xff08;包括整个网页&#xff09;绘制到指定的 canvas 中&#xf…

【通俗易懂说模型】线性回归(附深度学习、机器学习发展史)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

C#面试常考随笔12:游戏开发中常用的设计模式【C#面试题(中级篇)补充】

C#面试题&#xff08;中级篇&#xff09;&#xff0c;详细讲解&#xff0c;帮助你深刻理解&#xff0c;拒绝背话术&#xff01;-CSDN博客 简单工厂模式 优点&#xff1a; 根据条件有工厂类直接创建具体的产品 客户端无需知道具体的对象名字&#xff0c;可以通过配置文件创建…

大模型的底层逻辑及Transformer架构

一、大模型的底层逻辑 1.数据驱动 大模型依赖海量的数据进行训练&#xff0c;数据的质量和数量直接影响模型的性能。通过大量的数据&#xff0c;模型能够学习到丰富的模式和规律&#xff0c;从而更好地处理各种任务。 2.深度学习架构 大模型基于深度学习技术&#xff0c;通常…

C++ 学习:深入理解 Linux 系统中的冯诺依曼架构

一、引言 冯诺依曼架构是现代计算机系统的基础&#xff0c;它的提出为计算机的发展奠定了理论基础。在学习 C 和 Linux 系统时&#xff0c;理解冯诺依曼架构有助于我们更好地理解程序是如何在计算机中运行的&#xff0c;包括程序的存储、执行和资源管理。这对于编写高效、可靠…

【C++】STL——list底层实现

目录 &#x1f495;1.list的三个类介绍 &#x1f495;2.list——节点类 &#xff08;ListNode&#xff09; &#x1f495;3.list——链表类 &#xff08;List&#xff09; &#x1f495;4.list——迭代器类&#xff08;重点思考&#xff09;(ListIterator) &#x1f495;5…

deepseek、qwen等多种模型本地化部署

想要在本地部署deepseek、qwen等模型其实很简单,快跟着小编一起部署吧 1 环境搭建 1.1下载安装环境 首先我们需要搭建一个环境ollama,下载地址如下 :Ollama 点击Download 根据自己电脑的系统选择对应版本下载即可 1.2 安装环境(window为例) 可以直接点击安装包进行安…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>黄金矿工

目录 决策树&#xff1a;代码设计代码&#xff1a; 决策树&#xff1a; 代码设计 代码&#xff1a; class Solution {boolean[][] vis;int ret,m,n;public int getMaximumGold(int[][] grid) {m grid.length;n grid[0].length;vis new boolean[m][n]; for(int i 0; i <…

基于springboot河南省旅游管理系统

基于Spring Boot的河南省旅游管理系统是一种专为河南省旅游行业设计的信息管理系统&#xff0c;旨在整合和管理河南省的旅游资源信息&#xff0c;为游客提供准确、全面的旅游攻略和服务。以下是对该系统的详细介绍&#xff1a; 一、系统背景与意义 河南省作为中国的中部省份&…

并发编程 - 线程同步(三)之原子操作Interlocked简介

上一章我们了解了3种处理多线程中共享资源安全的方法&#xff0c;今天我们将更近一步&#xff0c;学习一种针对简单线程同步场景的解决方案——Interlocked。 在此之前我们先学习一个概念——原子操作。 01、原子操作 原子操作&#xff0c;其概念源于化学领域&#xff0c;原子…

0205算法:最长连续序列、三数之和、排序链表

力扣128&#xff1a;最长连续序列 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 class Solution {public int longestConsecutive(in…

JAVA_内部类

定义&#xff1a;在类的内部再定义一个类 特点&#xff1a;内部类可以直接访问外部类中的成员变量&#xff0c;即使是私有的。 外部类要想访问内部类中的成员变量&#xff0c;必须先创建内部类对象。 什么时候使用内部类&#xff1a;B类是A类的一部分&#xff0c;且B单独存在没…

2024 JAVA面试题

第一章-Java基础篇 1、你是怎样理解OOP面向对象 面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征&#xff1a; 继承****&#xff1a;****继承是从已有类得到继承信息创建新类的过程 封装&#xff1a;封装是把数据和操作数据的方法绑定起来&#xff0c;对数据的…

视频融合平台EasyCVR无人机场景视频压缩及录像方案

安防监控视频汇聚EasyCVR平台在无人机场景中发挥着重要的作用&#xff0c;通过高效整合视频流接入、处理与分发等功能&#xff0c;为无人机视频数据的实时监控、存储与分析提供了全面支持&#xff0c;广泛应用于安防监控、应急救援、电力巡检、交通管理等领域。 EasyCVR支持GB…

2025最新软件测试面试大全

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…

Hugging Face GGUF 模型可视化

Hugging Face GGUF 模型可视化 1. Finding GGUF files (检索 GGUF 模型)2. Viewer for metadata & tensors info (可视化 GGUF 模型)References 无知小儿&#xff0c;仙家雄霸天下&#xff0c;依附强者才是唯一的出路。否则天地虽大&#xff0c;也让你们无路可走&#xff0…

【C++】多态详细讲解

本篇来聊聊C面向对象的第三大特性-多态。 1.多态的概念 多态通俗来说就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)。 编译时多态&#xff1a;主要就是我们前⾯讲的函数重载和函数模板&#xff0c;他们传不同类型的参数就可以调⽤不同的函数&#xff0c;通…

oracle 基础语法复习记录

Oracle SQL基础 学习范围 学习SQL基础语法 掌握SELECT、INSERT、UPDATE、DELETE等基本操作。 熟悉WHERE、GROUP BY、ORDER BY、HAVING等子句。 理解表连接&#xff1a; 学习INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等连接方式。 掌握聚合函数&#xff1a; 熟悉…

配置@别名路径,把@/ 解析为 src/

路径解析配置 webpack 安装 craco npm i -D craco/craco 项目根目录下创建文件 craco.config.js &#xff0c;内容如下 const path require(path) module.exports {webpack: {// 配置别名alias: {// 约定&#xff1a; 使用 表示src文件所在路径: path.resolve(__dirname,src)…

Vue前端开发-pinia之Actions插件

Store中的Actions部分&#xff0c;用于定义操作属性的方法&#xff0c;类似于组件中的methods部分&#xff0c;它与Getters都可以操作State属性&#xff0c;但在定义方法时&#xff0c;Getters是对State属性进行加工处理&#xff0c;再返回使用&#xff0c;属于内部计算;Action…