有小伙伴私信我,DeepSeek-R1能用来搭建 RAG(检索增强生成)系统吗?答案是绝对可以!
春节前夕,我们接到了业务方的紧急任务,需要探讨如何将 DeepSeek-R1 快速集成到即将上线的项目中。经过多次深入讨论,我们团队决定在现有 RAG 系统的一个核心模块中使用 DeepSeek-R1,与原有的 Qwen 模型进行线上AB测试。更换完成后,我们对系统进行了一系列严格的测试,以确保其稳定运行。在经过彻底验证后,我们成功地在除夕之夜将系统上线。
鉴于所处理数据的敏感性,本文将详尽介绍如何使用DeepSeek-R1、LangChain、Ollama和Streamlit搭建一个本地的、专门处理PDF文件的RAG系统。这套系统利用LangChain的模块化特点和DeepSeek-R1的隐私保护能力,非常适合处理技术文档、法律文件及学术资料等。在后续的分享中,我将详细介绍如何利用 DeepSeek-R1 对系统进行Fine-tuning和优化的过程。
此项目整合了 LangChain(一种用于 RAG 工作流程的 AI 框架)、Ollama(负责 DeepSeek-R1 的本地部署)和 Streamlit(提供用户界面)。最终成品是一个 AI 助手,它能在本地处理 PDF 文件,并以高精确度和速度回答问题。
在此次演示中,我们将使用一个参数为 7B 的 DeepSeek-R1 精简模型。但如果你的计算资源更充足,我建议尝试使用其他版本的 DeepSeek-R1 精简模型。
为什么选择本地部署的 RAG 解决方案?
虽然云端 AI 解决方案功能强大,但它们往往涉及到隐私和成本问题。使用 LangChain 的模块化框架,你可以在本地搭建一个 RAG 系统,这样做有几大优点:
- 数据隐私:所有的操作都在你自己的设备上完成,数据安全得到保障。
- 成本效率:避免了昂贵的 API 订阅费用,这个方案不仅免费还是开源的。
- 高度定制化:你可以根据需要调整文档检索和回答生成的具体流程。
- 强大的 AI 能力:整合了 DeepSeek-R1,这是一款专为解决复杂问题和技术任务而设计的模型。
所用工具和技术:LangChain, DeepSeek-R1, Ollama, ChromaDB 和 Streamlit
这个项目涵盖了以下几个部分:
- LangChain:这是构建 RAG 工作流程的核心框架,支持集成文档加载、向量存储和大型语言模型(LLM)。它的模块化设计让你可以根据具体需求进行调整。
- DeepSeek-R1:一种专为编程、问题解决和技术任务优化的推理型语言模型。它提供了多种本地部署的版本,可通过 Ollama 轻松部署。
- Ollama:一个命令行工具,用于简化本地大型语言模型和嵌入模型(如 DeepSeek-R1 和 mxbai-embed-large)的部署与管理。
- ChromaDB:一个向量数据库,能存储和检索文档向量,方便进行基于相似性的快速查询。
- Streamlit:一个 Python 库,用于创建易于操作的 Web 用户界面,使你的 RAG 应用更加用户友好,易于使用。
构建 RAG 工作流:分步指南
以下是如何设置你的本地 ChatPDF 解决方案:
1. 安装先决条件
确保你已经安装了 Python 3.8+ 和Ollama。运行以下命令:
bash
curl -fsSL https://ollama.com/install.sh | sh
ollama -v # 验证安装
下载所需的 AI 模型:
bash
ollama pull deepseek-r1:latest # 默认 7B 模型
ollama pull mxbai-embed-large # 嵌入模型
2. 项目设置
克隆仓库并设置虚拟环境:
bash
git clone https://github.com/paquino11/chatpdf-rag-deepseek-r1.git
cd chatpdf-rag-deepseek-r1
python3 -m venv venv
source venv/bin/activate
安装依赖:
pip install -r requirements.txt
3. 启动Streamlit
启动 Streamlit 应用:
arduino
streamlit run app.py
在浏览器中访问http://localhost:8501
。上传你的 PDF 文件,调整检索设置,开始提问。
使用 DeepSeek-R1、Ollama、LangChain 和 ChromaDB 构建 RAG 管道
这个项目我将利用 LangChain 来从零开始搭建的文档处理流程:
-
PDF 文件的处理:
- 利用 LangChain 读取 PDF 文件,并将其分割成小块。
- 使用 Ollama 将这些小块转换成向量形式,便于计算机理解和处理。
-
文档的查找:
- 通过 ChromaDB 这个工具,快速找到与你问题最相关的文档部分。
- 你可以设置想要查找的结果数量和查找的严格程度。
-
生成回答:
- DeepSeek-R1 会拿到这些相关的文档小块,然后生成准确的回答。
- LangChain 确保这些回答格式对用户友好,易于理解。
调整设置以获得更好的结果
LangChain 允许你轻松调整设置,以优化搜索结果:
- 检索结果数量(
k
) :这个参数决定了将使用多少文档片段来生成答案。如果设置的数目较多,可以获得更全面的答案,但响应时间会变慢;如果设置的数目较少,响应速度会加快,但可能因信息不足而影响答案的全面性。 - 相似度阈值(
score_threshold
) :这个参数用于设定检索时的匹配严格度。阈值设定得高,只有最相关的文档片段才会被检索出来;阈值设定得低,虽然能检索到更多的信息,但可能会包括一些相关性不高的内容。
如何使用和测试你的 RAG 应用
这里介绍几种常见的场景,帮助你测试你的应用程序:
测试用的 PDF 文件:
- 金融:分析财务报告,挖掘出可实施的商业见解。
- 医疗保健:总结医学研究论文或指南,提取关键信息。
- 教育:从电子书和学术论文中提取摘要或主要观点。
示例问题:
- "这个 Python 库的核心功能有哪些?"
- "这份合同的第五部分主要讨论了什么内容?"
- "简要概述这本电子书的第二章。"
结论
结合 LangChain、DeepSeek-R1 和 ChromaDB 的使用,你可以构建一个重视隐私保护、灵活性和成本效率的 RAG 系统。这种本地化的解决方案非常适用于分析技术性文件和法律文件,无需依赖于云服务。如此一来,你便可以在完全控制数据安全的环境下,有效地处理和分析专业文档。