短短一夜之间,中国的AI大模型DeepSeek迅速崛起,成功引起了全球科技界的广泛关注。
deepSeek爆火时间线
DeepSeek大事记
- 技术突破与产品发布
-
- 2024年12月26日:DeepSeek-V3发布,知识类任务水平提升,生成吐字速度加快。
- 2025年1月20日:DeepSeek开源推理模型DeepSeek-R1发布。
- 2025年1月24日:DeepSeek发布多模态大模型Janus-Pro。
- 2025年1月27日:DeepSeek应用登顶中国和美国苹果应用商店免费APP下载排行榜。
- 市场与行业影响
-
- 2025年1月27日:DeepSeek导致美股科技股暴跌,英伟达单日市值蒸发约6000亿美元,创下美股史上最大单日市值下跌纪录。
- 2025年1月28日:英伟达、亚马逊、微软等美国科技巨头宣布接入DeepSeek。
- 遭遇网络攻击
-
- 2025年1月3日:DeepSeek开始遭受网络攻击,前期为HTTP代理攻击。
- 2025年1月20日-26日:攻击者采用SSDP/NTP反射放大攻击。
- 2025年1月27日:攻击数量激增,手段升级为应用层攻击及暴力破解。
- 2025年1月28日凌晨:DeepSeek官网发布公告称线上服务遭遇大规模恶意攻击。
- 2025年1月30日凌晨:攻击烈度再次升级,大量僵尸网络参与其中。
各方表态
各国政府表态
- 美国
-
- 政府层面:美国众议院首席行政事务官向国会办公室发出通知,警告国会办公室不要使用DeepSeek的服务。
- 军事层面:美国海军禁止内部人员使用DeepSeek,称其存在“潜在安全和道德问题”。
- 舆论层面:美国媒体广泛报道DeepSeek,认为其对美国AI领先地位构成挑战。
- 英国
-
- 议会层面:英国议会对DeepSeek热议非凡,议员们盛赞其卓越性能和开源精神,认为其为英国攀登全球人工智能顶峰提供了机遇。
- 舆论层面:英国媒体认为DeepSeek的出现使美国巨额投资显得多余,苏格兰因其天然优势被看作是数据中心建设的理想地点。
- 印度
-
- 政府层面:印度部长称赞DeepSeek低成本AI模型,认为其为印度提供了有益的借鉴。
- 舆论层面:印度社会反思自身在AI领域的发展不足,对中国推出DeepSeek表示羡慕和焦虑。
- 其他国家
-
- 日本:日本内阁官房长官林芳正表示,尚未有特别应对方针,将密切关注AI相关国际开发动向。
- 法国:法国监管机构国家信息与自由委员会表示,将对DeepSeek进行问询,了解其系统运行及可能存在的隐私风险。
- 意大利、爱尔兰、澳大利亚:这些国家也对DeepSeek的使用表示关注。
头部大公司表态
- 英伟达
-
- 股价暴跌:2025年1月27日,英伟达股价暴跌近17%,单日市值蒸发约6000亿美元。
- 技术认可:英伟达科学家Jim Fan认为DeepSeek延续了OpenAI的开放研究使命。
- 接入合作:英伟达宣布NVIDIA NIM已经可以使用DeepSeek-R1模型。
- 微软
-
- 股价下跌:微软股价在DeepSeek事件后也出现下跌。
- 接入合作:微软宣布将DeepSeek-R1正式纳入Azure AI Foundry,并表示DeepSeek“有一些真的创新”,AI成本下降是趋势。
- 亚马逊
-
- 股价下跌:亚马逊股价在DeepSeek事件后出现下跌。
- 接入合作:亚马逊表示DeepSeek-R1模型可以在Amazon Web Services上使用。
- Meta
-
- 股价下跌:Meta股价在DeepSeek事件后出现下跌。
- 技术反思:Meta CEO马克·扎克伯格表示,DeepSeek有很多值得学习的地方,公司“仍在消化DeepSeek的一些成果”,并计划将其中一些进步应用到Llama中。
- OpenAI
-
- 抄袭指控:OpenAI对DeepSeek发起抄袭指控。
- 技术反思:OpenAI创始人山姆·奥特曼承认DeepSeek的强大。
- 谷歌
-
- 股价下跌:谷歌母公司Alphabet股价在DeepSeek事件后出现下跌。
- 技术反思:谷歌等公司开始重新评估AI投资策略。
- 阿斯麦
-
- 积极评价:阿斯麦总裁兼首席执行官富凯表示,DeepSeek推出高效AI模型是个好消息,有助于降低AI应用成本,为阿斯麦带来更多商机。
程序员参与吃瓜
- 程序员是否有必要关注,如何参与这一场全球舆论?
- 学习大模型应用门槛有多高?
- java社区对大模型的应用跟进状态?
带着这些朴素的问题,我们从最简单的开始,自己动手本地搭建大模型,切身感受AI能为我们做什么,学习使用门槛有多低。
Ollama
什么是Ollama
Ollama 是一个用于本地运行和部署大型语言模型(LLM,Large Language Models)的平台。它使开发者能够在本地环境中运行 AI 模型,而不必依赖于云服务。这个工具支持多种类型的 LLM,能够帮助开发者更轻松地与 AI 模型交互、进行训练和调优。
Ollama 主要特点包括:
- 本地部署:Ollama 允许用户在本地运行多个大型语言模型,避免了云计算带来的延迟和隐私问题。
- 易于使用:它通过命令行工具和简单的 API,提供了直接与模型交互的方式。
- 多模型支持:支持各种类型的 LLM,比如 GPT 系列、LLaMA 等。
- 轻量级:它优化了模型运行的资源消耗,可以在普通的本地机器上运行,而不需要强大的 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