0

0

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!

爱谁谁

爱谁谁

发布时间:2025-04-22 11:12:01

|

1054人浏览过

|

来源于php中文网

原创

作者:昊然,Datawhale成员

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!

昨天文章《deepseek r1本地部署,小白教程来了!》的预告来兑现了。同时,有学习者问「可以上传文件啥的吗」?有的兄弟,有的。今天完整教程,它来了!

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!

handy-ollama 开源教程:https://github.com/datawhalechina/handy-ollama

在线阅读地址:https://datawhalechina.github.io/handy-ollama

同时,再预告一下,下周三的二月「组队学习」会有手把手带你部署本教程的课程。

完整教程

本教程将详细介绍如何利用 DeepSeek R1 和 Ollama 构建本地化的 RAG(检索增强生成)应用。

我们将通过实例演示完整的实现流程,包括文档处理、向量存储、模型调用等关键步骤。

本教程选用 DeepSeek-R1 1.5B 作为基础语言模型。

考虑到不同模型具有各自的特点和性能表现,读者可以根据实际需求选择其他合适的模型来实现 RAG 系统。

注:本文档包含核心代码片段和详细解释。完整代码可见 notebook (https://github.com/datawhalechina/handy-ollama/blob/main/notebook/C7/DeepSeek_R1_RAG/%E4%BD%BF%E7%94%A8%20DeepSeek%20R1%20%E5%92%8C%20Ollama%20%E5%AE%9E%E7%8E%B0%E6%9C%AC%E5%9C%B0%20RAG%20%E5%BA%94%E7%94%A8.ipynb)。

前期准备

首先,我们需要下载 Ollama 以及配置相关环境。

Ollama 的 GitHub仓库 (https://github.com/ollama/ollama)中提供了详细的说明,简单总结如下:

Step1:下载 Ollama

下载(https://ollama.com/download)并双击运行 Ollama 应用程序。

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!
Step2:验证安装

在命令行输入 ollama,如果出现以下信息,说明 Ollama 已经成功安装。

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!
Step3:拉取模型从命令行,参考 Ollama 模型列表 (https://ollama.com/library)和 文本嵌入模型列表 (https://python.langchain.com/v0.2/docs/integrations/text_embedding/)拉取模型。在该教程中,我们以 deepseek-r1:1.5b 和 nomic-embed-text 为例:命令行输入 ollama pull deepseek-r1:1.5b,拉取通用的开源大语言模型 deepseek-r1:1.5b;(拉取模型时,可能比较缓慢。如果出现拉取错误,可以重新输入指令拉取)命令行输入 ollama pull nomic-embed-text 拉取 文本嵌入模型 (https://ollama.com/search?c=embedding)nomic-embed-text。当应用运行时,所有模型将自动在 localhost:11434 上启动。注意,你的模型选择需要考虑你的本地硬件能力,该教程的参考显存大小 CPU Memory > 8GB。Step4:部署模型

命令行窗口运行以下命令,部署模型。

ollama run deepseek-r1:1.5b

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!

也可以从命令行直接运行部署模型,例如 ollama run deepseek-r1:1.5b。

手把手带你用DeepSeek-R1和Ollama搭建本地应用,一文搞定!

注意如果只想使用 Ollama 部署 DeepSeek R1 模型则无需进行以下步骤。

QIMI奇觅
QIMI奇觅

美图推出的游戏行业广告AI制作与投放一体化平台

下载
Step5:安装依赖代码语言:javascript代码运行次数:0运行复制
# langchain_communitypip install langchain langchain_community# Chromapip install langchain_chroma# Ollamapip install langchain_ollama

完成前期准备工作后,让我们开始逐步构建基于 LangChain、Ollama 和 DeepSeek R1 的本地 RAG 应用。下面将详细介绍具体实现步骤。

本地 RAG 应用实现

1. 文档加载

加载 PDF 文档并将其切分为适当大小的文本块。

代码语言:javascript代码运行次数:0运行复制
from langchain_community.document_loaders import PDFPlumberLoaderfile = "DeepSeek_R1.pdf"# Load the PDFloader = PDFPlumberLoader(file)docs = loader.load()from langchain.text_splitter import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)all_splits = text_splitter.split_documents(docs)

2. 初始化向量存储

使用 Chroma 数据库存储文档向量,并配置 Ollama 提供的嵌入模型。

代码语言:javascript代码运行次数:0运行复制
from langchain_chroma import Chromafrom langchain_ollama import OllamaEmbeddingslocal_embeddings = OllamaEmbeddings(model="nomic-embed-text")vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings)

3. 构建 Chain 表达式

设置模型和提示模板,构建处理链。

代码语言:javascript代码运行次数:0运行复制
from langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_ollama import ChatOllamamodel = ChatOllama(    model="deepseek-r1:1.5b",)prompt = ChatPromptTemplate.from_template(    "Summarize the main themes in these retrieved docs: {docs}")# 将传入的文档转换成字符串的形式def format_docs(docs):    return "\n\n".join(doc.page_content for doc in docs)chain = {"docs": format_docs} | prompt | model | StrOutputParser()question = "What is the purpose of the DeepSeek project?"docs = vectorstore.similarity_search(question)chain.invoke(docs)

4. 带有检索的 QA

整合检索和问答功能。

代码语言:javascript代码运行次数:0运行复制
from langchain_core.runnables import RunnablePassthroughRAG_TEMPLATE = """You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise.{context}Answer the following question:{question}"""rag_prompt = ChatPromptTemplate.from_template(RAG_TEMPLATE)retriever = vectorstore.as_retriever()qa_chain = (    {"context": retriever | format_docs, "question": RunnablePassthrough()}    | rag_prompt    | model    | StrOutputParser())question = "What is the purpose of the DeepSeek project?"# Runqa_chain.invoke(question)
总结

本教程详细介绍了如何使用 DeepSeek R1 和 Ollama 构建本地化的 RAG 应用系统。我们通过四个主要步骤实现了完整的功能:

文档处理:使用 PDFPlumberLoader 加载 PDF 文档,并通过 RecursiveCharacterTextSplitter 将文本切分成适当大小的块。向量存储:利用 Chroma 数据库和 Ollama 的嵌入模型建立向量存储系统,为后续的相似度检索提供基础。Chain 构建:设计并实现处理链,将文档处理、提示模板和模型响应整合成流程化的处理过程。RAG 实现:通过整合检索和问答功能,实现了完整的检索增强生成系统,能够基于文档内容回答用户问询。

通过本教程,可以快速搭建起自己的本地 RAG 系统,并根据实际需求进行定制化改进。建议在实践中多尝试不同的模型和参数配置,以获得最佳的使用效果。

注: 使用 streamlit 或 FastAPI 等工具,可以将本地 RAG 应用部署为 Web 服务,实现更广泛的应用场景。

仓库中也提供了 app.py (https://github.com/datawhalechina/handy-ollama/blob/main/notebook/C7/DeepSeek_R1_RAG/app.py)文件,可以直接运行该文件,启动 Web 服务。

参考文档 Build a RAG System with DeepSeek R1 & Ollama(https://apidog.com/blog/rag-deepseek-r1-ollama/)。

注意:运行该代码前,要提前运行 Ollama 服务。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

27

2025.12.22

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

934

2026.01.21

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

358

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2082

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

349

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

256

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

412

2023.10.16

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

13

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号