前言

因为之前一直关注langchain,现在DeepSeek又非常的火爆,所以尝试在langchain项目中使用DeepSeek。

我在查询资料时,发现国外小哥已经提供了一套开源代码。于是本着图省事儿的原则,我立即下载并使用了这套代码,它基于DeepSeek-R1、LangChain 和 Ollama 搭建了一个隐私优先的检索增强生成(RAG)系统的文章。

按照步骤进行操作,亲测好用,分享给小伙伴们!

先看效果:

什么是 RAG ?

赘述一下基本概念,检索增强生成(Retrieval-Augmented Generation,简称 RAG)是一种结合信息检索和生成式 AI 的技术架构。RAG 通过从外部知识库(如文档、数据库)中检索相关信息,并将其作为上下文输入给 LLM(大型语言模型),从而提高回答的准确性,减少幻觉问题。

我们的目标是在本地运行一个 RAG 系统,能够处理 PDF 文档,保障数据隐私,并能高效回答与文档内容相关的问题。当然,通过修改代码,我们也可以实现处理其他类型的数据。

所需技术栈

本文使用了多个开源工具和框架:

  • LangChain:用于管理 RAG 工作流,支持文档加载、向量存储、检索和 LLM 交互。

  • DeepSeek-R1:众所周知,最近很火出圈的国产大语言模型。

  • Ollama:一个简化本地 LLM 部署的工具,支持 DeepSeek-R1 等多个模型,方便、快捷。

  • ChromaDB:用于存储和检索文本向量的数据库,支持高效的相似度搜索。

  • Streamlit:一个简单易用的 Python Web 框架,用于构建交互式用户界面。

使用过程

1、安装必要的工具

首先,确保你已经安装了 Python 3.8+,然后安装 Ollama:

curl -fsSL https://ollama.com/install.sh | sh   

然后在命令行中使用下面的命令下载 DeepSeek-R1 模型和 mxbai-embed-large 词向量模型:

ollama pull deepseek/deepseek-r1
ollama pull mxbai-embed-large

2、设置 Python 项目环境

克隆 GitHub 仓库并安装依赖:

git clone https://github.com/paquino11/chatpdf-rag-deepseek-r1
cd chatpdf-rag-deepseek-r1
python -m venv venv
source venv/bin/activate  # Windows 用户使用 `venv\Scripts\activate`
pip install -r requirements.txt

**提示:**如果遇到类似的错误提示
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for pyarrow
可以使用下面的命令升级pip后尝试

python3 -m pip install --upgrade pip   

3、运行应用

按照步骤2操作完成后,我们就可以启动项目了,启动命令

streamlit run app.py   

因为我使用的模型和代码中使用的模型不一致,所以这里我首先要修改一下模型名称,打开项目源码文件rag.py,修改模型名称为deepseek-r1:1.5b,同理我们也可以修改embedding模型:

def __init__(self, llm_model: str = "deepseek-r1:1.5b", embedding_model: str = "mxbai-embed-large"):   

启动结果

启动后,一般会自动打开浏览器页面,如果没有自动打开浏览器,也可以手动访问:http://localhost:8501

应用功能介绍

  • PDF 文档上传

支持用户上传 PDF 文档,系统会自动解析并向量化存储。

  • 查询系统

用户输入问题,系统会从向量数据库中检索相关段落,并结合 LLM 生成回答。

  • 数据隐私保障

所有处理过程均在本地完成,数据不会上传到云端,确保敏感信息安全。

源码解析

我们简单分析一下源码,其核心代码rag.py解析如下

1、初始化 ChatPDF 类

def __init__(self, llm_model: str = "deepseek-r1:latest", embedding_model: str = "mxbai-embed-large"):   
  • 加载 LLM 和 Embeddings:

  • ChatOllama:使用 DeepSeek-R1 进行问答。

  • OllamaEmbeddings:使用 mxbai-embed-large 计算文本向量。

  • 文本拆分:

  • RecursiveCharacterTextSplitter 以 1024 字符块 分割文档,100 字符重叠 避免信息丢失。

  • 提示词模板:

  • 规定 LLM 需基于 检索到的上下文 生成 三句话内 的答案。

  • 向量数据库(Chroma):

  • 用于存储文档嵌入,并支持检索。

2、文档摄取(Ingest)

def ingest(self, pdf_file_path: str):   
  • 使用 PyPDFLoader 解析 PDF 文档

  • self.text_splitter.split_documents(docs) 进行文本分块

  • Chroma.from_documents() 计算 嵌入向量 并存储到 chroma_db 目录

3、问答(Ask)

def ask(self, query: str, k: int = 5, score_threshold: float = 0.2):   
  • 检索相关内容:

  • 使用 Chroma 向量数据库,以 相似度搜索 筛选 相关文本块(默认 k=5,阈值 0.2)

  • 调用 RAG 处理链:

  • RunnablePassthrough() 直接传递输入数据。

  • self.prompt 处理查询上下文格式化。

  • self.model 调用 LLM 生成答案。

  • StrOutputParser() 解析 LLM 输出,返回最终答案。


如何学习AI大模型?

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

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

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

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

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

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

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐