有学习者问「可以上传文件啥的吗」?有的兄弟,有的。今天完整教程,它来了!

在这里插入图片描述

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 应用程序。

Step2:验证安装

在命令行输入 ollama,如果出现以下信息,说明 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

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


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

Step5:安装依赖



# langchain\_community  
pip install langchain langchain\_community  
  
# Chroma  
pip install langchain\_chroma  
  
# Ollama  
pip install langchain\_ollama



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

本地 RAG 应用实现

1. 文档加载

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



from langchain\_community.document\_loaders import PDFPlumberLoader  
  
file = "DeepSeek\_R1.pdf"  
  
# Load the PDF  
loader = PDFPlumberLoader(file)  
docs = loader.load()  
  
from langchain.text\_splitter import RecursiveCharacterTextSplitter  
text\_splitter = RecursiveCharacterTextSplitter(chunk\_size=500, chunk\_overlap=0)  
all\_splits = text\_splitter.split\_documents(docs)


  1. 初始化向量存储

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



from langchain\_chroma import Chroma  
from langchain\_ollama import OllamaEmbeddings  
  
local\_embeddings = OllamaEmbeddings(model="nomic-embed-text")  
  
vectorstore = Chroma.from\_documents(documents=all\_splits, embedding=local\_embeddings)


3. 构建 Chain 表达式

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



from langchain\_core.output\_parsers import StrOutputParser  
from langchain\_core.prompts import ChatPromptTemplate  
from langchain\_ollama import ChatOllama  
  
model = 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

整合检索和问答功能。



from langchain\_core.runnables import RunnablePassthrough  
  
RAG\_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>  
{context}  
</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?"  
  
# Run  
qa\_chain.invoke(question)


总结

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

  1. 文档处理:使用 PDFPlumberLoader 加载 PDF 文档,并通过 RecursiveCharacterTextSplitter 将文本切分成适当大小的块。

  2. 向量存储:利用 Chroma 数据库和 Ollama 的嵌入模型建立向量存储系统,为后续的相似度检索提供基础。

  3. Chain 构建:设计并实现处理链,将文档处理、提示模板和模型响应整合成流程化的处理过程。

  4. 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 服务。

恭喜你完整地学完了教程,给你点赞 👍

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐