在本地运行 DeepSeek-R1 并构建 RAG 应用程序!使用 DeepSeek-R1、LangChain 和 SingleStore 构建 RAG 应用程序

2025-05-26

在本地运行 DeepSeek-R1 并构建 RAG 应用程序!

带有 DeepSeek-R1、LangChain 和 SingleStore 的 RAG 应用程序

DeepSeek-R1 在人工智能社区引起了不小的轰动。该模型由中国人工智能公司DeepSeek开发,目前正在与 OpenAI 的顶级模型进行比拼。DeepSeek-R1 之所以如此受欢迎,不仅在于其强大的功能,还在于其开源特性,任何人都可以下载并在本地运行。在本篇博文中,我将指导您使用 Ollama 在您的设备上设置 DeepSeek-R1。

为什么选择 DeepSeek-R1?

DeepSeek R1

DeepSeek-R1 脱颖而出有几个原因。它不仅比许多其他模型更便宜,而且在问题解决、推理和编码方面也表现出色。其内置的思维链推理提高了效率,使其成为其他模型的有力竞争者。让我们深入了解如何在本地系统上运行此模型。

Ollama 入门

奥拉马标志
在开始之前,我们先来讨论一下 Ollama。Ollama 是一款免费的开源工具,允许用户在本地运行自然语言处理模型。使用 Ollama,您可以轻松下载并运行 DeepSeek-R1 模型。

您可以按照以下方式开始:

步骤1:安装Ollama

首先,你需要下载并安装Ollama。访问 Ollama 网站并下载与你的操作系统匹配的版本。
按照网站上提供的安装说明进行操作。

安装 ollama

第 2 步:下载 DeepSeek-R1

步骤 2 下载 deepseek-R1

正如你所见,当你访问 Ollama 网站时,你可以运行 DeepSeek-R1 的不同参数。你可以在这里找到要求的详细信息(如上图所示)。

您可以运行 1.5b、7b、8b、14b、32b、70b、671b,显然,随着参数的增大,硬件要求也会随之增加。我在本教程中使用的是 7b 版本。

安装 Ollama 后,打开终端并输入以下命令下载 DeepSeek-R1 模型:

DeepSeek-7b

ollama run deepseek-r1
Enter fullscreen mode Exit fullscreen mode

此命令指示 Ollama 下载模型。根据您的网速,下载可能需要一些时间。下载过程中可以喝杯咖啡!

步骤 3:验证安装

下载后,运行以下命令验证安装:

ollama list
Enter fullscreen mode Exit fullscreen mode

您应该会在可用模型列表中看到 deepseek-r1。如果看到了,那就太棒了!您已准备好运行该模型。

步骤4:运行DeepSeek-R1

现在,让我们使用以下命令启动模型:

ollama run deepseek-r1
Enter fullscreen mode Exit fullscreen mode

就这样,你就可以在本地与 DeepSeek-R1 进行交互了。就这么简单!

第五步:提出疑问

提出疑问

通过模型进行思路链推理。

思路

该模型在编码任务上也表现出色。我们也来验证一下这种方法。

deepseek 代码生成

上述代码相关查询的详细答案。

代码生成 R1

下面是使用 DeepSeek-R1 处理不同用例的完整分步视频。

我对 DeepSeek-R1 的第一印象简直令人震惊:)

按照本指南,您已成功使用 Ollama 在本地计算机上设置 DeepSeek-R1。此设置提供了强大的 AI 集成解决方案,确保应用程序的隐私性、速度和控制力。欢迎您试用 DeepSeek-R1,探索本地 AI 模型的潜力。顺便说一句,为您的 AI/ML 应用程序配备一个强大的数据库至关重要。我建议使用像SingleStore这样的一体化数据平台


让我们使用 DeepSeek 和 SingleStore 构建一个 RAG 应用程序

如果您想扩展学习并构建一个简单的 RAG 应用程序,您可以按照本教程进行操作。

我们将从 NVIDIA NIM 微服务中设置 DeepSeek API 密钥(是的,我会演示如何设置)。NVIDIA NIM(推理微服务)是一组微服务,可帮助跨云、数据中心和工作站部署 AI 模型。我们将使用 LangChain 作为我们的 LLM 框架来绑定所有内容。我们将使用SingleStore作为我们的矢量数据库。

让我们开始吧(跟随)

1. 先决条件 [全部免费]

首先,创建一个免费的 SingleStore 帐户。登录您的帐户,并为自己创建一个工作区和一个数据库。

单店工作空间

创建工作区后,创建附加到该工作区的数据库。单击“创建数据库”,如仪表板屏幕截图所示,即可创建数据库。

单存储数据库

太棒了!现在,我们创建了数据库来存储 RAG 应用程序的自定义文档。

下一步是创建一个笔记本。没错,一个免费的笔记本环境。SingleStore 有一个很酷的集成功能,你可以使用他们的笔记本(就像你的 Google Collab 一样)。

转到 Data Studio,然后创建一个新的 Notebook。
单店笔记本

给你的笔记本命名
笔记本名称

这就是你将要降落的地方。
SS仪表板

确保从下拉菜单中选择您创建的工作区和数据库,如下所示。我的工作区名称是“pavappy-workspace-1”,我创建的数据库是“DeepSeek”。所以我选择了两者。

工作区 ss

现在,我们已准备好编写 RAG 应用程序。请逐步将以下所有代码添加到新创建的笔记本中(请确保运行每个代码片段)。

从安装所有必需的库和依赖项开始。

!pip install langchain --quiet
!pip install pdf2image --quiet
!pip install pdfminer.six --quiet
!pip install singlestoredb --quiet
!pip install tiktoken --quiet
!pip install --upgrade unstructured==0.10.14 --quiet
!pip install -qU pypdf langchain_community
!pip install langchain-nvidia-ai-endpoints --quiet
!pip install langchain-deepseek-official --quiet
Enter fullscreen mode Exit fullscreen mode

导入库

from langchain.document_loaders import PyPDFLoader
from langchain_nvidia_ai_endpoints import ChatNVIDIA
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain.vectorstores import SingleStoreDB
import os
Enter fullscreen mode Exit fullscreen mode

加载您的自定义文档[我使用了公开的pdf,您可以替换并使用您自己的文档)

file_path = "https://unctad.org/system/files/official-document/wesp2023_en.pdf"
loader = PyPDFLoader(file_path)
data = loader.load()
Enter fullscreen mode Exit fullscreen mode

将文档拆分成块

text_splitter = RecursiveCharacterTextSplitter(chunk_size=2000, chunk_overlap=0)
texts = text_splitter.split_documents(data)
Enter fullscreen mode Exit fullscreen mode

设置 OpenAI 嵌入(用于矢量化)

os.environ["OPENAI_API_KEY"] = "Add your OpenAI API key"
embedding = OpenAIEmbeddings()
Enter fullscreen mode Exit fullscreen mode

将嵌入存储在 SingleStore 中

docsearch = SingleStoreDB.from_documents(
    texts,
    embedding,
    table_name="deepseek_rag", # Replace table name with any name
    host="admin:password@host_url:3306/database_name",  # Replace with your SingleStore connection
    port=3306
)
Enter fullscreen mode Exit fullscreen mode

在上面的代码中,admin 是常量,无需更改。您可以从访问选项卡获取密码,主机 URL 如下所示。转到“部署”选项卡,您应该会看到您的工作区,点击“连接”,然后会看到如下所示的下拉菜单。从那里选择“SQL IDE”,您将看到所有必需的详细信息。

单店连接

接下来,通过 NVIDIA NIM 初始化 DeepSeek。
从 NVIDIA NIM 微服务免费获取 DeepSeek-R1 API 密钥。点击此处获取。

client = ChatNVIDIA(
    model="deepseek-ai/deepseek-r1",
    api_key="Add your DeepSeek-R1 API key you received from NVIDIA NIM microservice",  # Replace with your NVIDIA API key
    temperature=0.7,
    top_p=0.8,
    max_tokens=4096
)
Enter fullscreen mode Exit fullscreen mode

创建 RAG 链

qa_chain = RetrievalQA.from_chain_type(
    llm=client,
    chain_type="stuff",
    retriever=docsearch.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True
)
Enter fullscreen mode Exit fullscreen mode

查询 RAG 系统

query = "What India's GDP growth is projected to be?"
result = qa_chain.invoke({"query": query})
Enter fullscreen mode Exit fullscreen mode

显示结果

print("Answer:", result["result"])
print("\nSources:")
for doc in result["source_documents"]:
    print(f"- Page {doc.metadata['page']}: {doc.page_content[:100]}...")
Enter fullscreen mode Exit fullscreen mode

您应该会看到模型的良好响应:)

深度搜索模型响应

您可以检查数据库,了解数据是如何分块并以向量嵌入格式存储的。

嵌入中的数据

这是您可以尝试的完整代码库:)

带有 DeepSeek-R1、LangChain 和 SingleStore 的 RAG 应用程序

我们将设置 NVIDIA 的 DeepSeek API 密钥,因为我们将使用 NVIDIA NIM 微服务。NVIDIA NIM(推理微服务)是一组微服务,可帮助跨云、数据中心和工作站部署 AI 模型。我们将使用 LangChain 作为我们的 LLM 框架来绑定所有内容。我们将使用 SingleStore 作为我们的矢量数据库。

先决条件




感谢您阅读我的文章。希望您尝试了整个教程。您也可以通过我的YouTube 频道关注我。我每周都会制作 AI/ML/数据相关的视频。

文章来源:https://dev.to/pavanbelagatti/run-deepseek-r1-locally-for-free-in-just-3-minutes-1e82
PREV
使用 React Router 进行授权保护
NEXT
我最喜欢的用于构建 AI/ML 应用程序的 DevTools!