null

基于推理的大规模语言模型"DeepSeek-R1",并将其开源!

据说它的性能与OpenAI最准确的推理模型’o1’不相上下。更令人印象深刻的是,它是一个极具性价比的模型,API价格不到OpenAI o1的1/25。此外,它还在高度灵活的MIT许可证下开源,任何人都可以下载和使用该模型。

R1模型一经推出,便不仅反驳了之前关于提炼OpenAI o1的说法,官方也直接表示:“我们可以与o1的开源版本相媲美。”

值得一提的是,R1突破了以往的模型训练方法,完全不使用任何SFT数据,而是通过纯粹的RL训练模型。这表明R1已经学会了独立思考问题——这实际上更符合人类的思维规则。

null

当我想开发RAG聊天机器人时,我发现LangChain在我使用它开发RAG聊天机器人之前进行了巨大的更新。不幸的是,它并不像ChatGPT那样记住对话内容,也不能像客服聊天机器人那样输入新数据或进行特定问题的训练。

所以,让我给你一个实时聊天机器人的快速演示,向你展示我的意思。

我将上传一个包含图像的PDF,然后问聊天机器人一个问题:"总结这个PDF。"随意问任何你想问的问题。如果你看看聊天机器人生成输出的方式,你会看到PDF文件将其内容存储在临时文件中,使用PDFPlumberLoader处理复杂数据,如表格,并清理临时文件。

它使用SemanticChunker将文档拆分为语义块,并使用FAISS进行高效的基于相似性的搜索。检索器为查询找到最相似的3个块,并使用history_aware_retriever增强代理将整个对话历史纳入检索过程的能力。

它还集成了context_chain以处理外部输入数据和docs_chain以记录对话,使用create_retrieval_chain形成完整的检索过程。它通过验证文档是否已上传、检索上下文以及使用RAG链生成响应来处理上下文感知的响应。

在视频结束时,你将了解Deepseek R1是如何训练的,以及如何使用Deepseek-R1与RAG。

DeepSeek R1 学习方法概述

DeepSeek R1 的特点是使用强化学习(RL)进行后训练。一般来说,大规模语言模型的开发经过以下步骤:

  1. \1. 预训练:通过大量语料库创建一个"预测下一个单词"的模型。
  2. \2. 监督微调(SFT):使用高质量的人类创建的指令-响应对来微调模型以完成特定任务。
  3. \3. RLHF(带有人类反馈的强化学习):人类评估模型的输出,并使用分数作为奖励来更新模型。

据报道,DeepSeek R1 在大规模上进行了强化学习,尤其是在第 3 步。此外,他们探索了一种通过直接应用 RL 的方法,而不使用传统的 SFT(称为 DeepSeek-R1-Zero),然后再添加 SFT 来完成 DeepSeek R1。这种方法被认为促进了模型的内部思维过程(思维链)和自我验证。

通常,有效处理思维链需要一些 SFT 数据和人类标签。然而,DeepSeek-R1-Zero 声称仅通过 RL 实现了推理能力,而没有经过 SFT。这种方法提供了以下优势:

  • • 降低大规模数据收集的成本
  • • 使模型能够在未知任务和复杂情况下进行自我纠正

然而,完全没有经过 SFT 的模型仍然存在一些问题,例如文本有些难以阅读和意外的多语言内容。

让我们构建应用程序

现在让我们逐步探索并揭示如何创建 RAG 应用程序的答案。我们将安装支持该模型的库。为此,我们将执行 pip install requirements

pip install -r requirements.txt

下一步是通常的步骤,我们将导入相关库,其重要性在后续过程中将变得明显。

PDFPlumberLoader 是一个非常强大的工具,用于处理复杂的结构化数据,例如来自 PDF 文件的表格。它可以提取文本、图像、表格、字段等。

SemanticChunker 根据语义相似性将文本拆分为块,确保相关内容保留在同一块中。

如果您想了解更多关于最新 langchain 升级的信息,我将在其中详细解释。

import os
import streamlit as st
from langchain_community.document_loaders import PDFPlumberLoader
from langchain_experimental.text_splitter import SemanticChunker
from langchain_huggingface import HuggingFaceEmbeddings
import os
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.chains.history_aware_retriever import create_history_aware_retriever
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain.chains.retrieval import create_retrieval_chain
from langchain_core.messages import AIMessage, HumanMessage
import tempfile
from langchain_openai.chat_models.base import BaseChatOpenAI

文件处理函数

我创建了一个函数来处理上传的文件,使用临时文件存储其内容。然后,我使用 PDFPlumberLoader 处理 PDF,以处理复杂的结构化数据,例如来自 PDF 文件的表格,确保在之后清理临时文件以保持系统整洁。最后,我返回提取的数据以供进一步使用。

def process_uploaded_file(uploaded_file):
    with tempfile.NamedTemporaryFile(delete=False, suffix='.pdf') as tmp_file:
        tmp_file.write(uploaded_file.getvalue())
        loader = PDFPlumberLoader(tmp_file.name)
        documents = loader.load()
    os.unlink(tmp_file.name)
    return documents

检索器构建函数

我创建了一个函数来处理文档列表并构建一个基于相似性的搜索检索器。首先,我使用 SemanticChunkerOpenAIEmbeddings 将文档拆分为较小的块,同时保留语义关系,确保相关内容保持在一起。

def get_vs_retriever_from_docs(doc_list):
    text_splitter = SemanticChunker(HuggingFaceEmbeddings())
    documents = text_splitter.split_documents(doc_list)
    st.write('文档拆分完成')
    
    embedder = HuggingFaceEmbeddings()
    vector = FAISS.from_documents(documents, embedder)

    return vector.as_retriever(search_type="similarity", search_kwargs={"k": 3})

UI初始化函数

我创建了 init_ui() 函数,以设置一个用户友好的界面,用于使用 Streamlit 上传和分析 PDF 文档。

def init_ui():
    st.set_page_config(page_title='文档上传器')
    st.markdown('#### :books:🧙高达烈 (Gao Dalie): 您的文档摘要工具')
    st.markdown("<h8 style='text-align: right; color: green;'>*分享您想阅读的书的 PDF*</h8>", unsafe_allow_html=True)

    if"vector_store"notin st.session_state:
        st.session_state.vector_store = None
    if"chat_history"notin st.session_state:
        st.session_state.chat_history = []  
    if"doc_upload"notin st.session_state:
        st.session_state.doc_upload = False

    uploaded_file = st.file_uploader("上传 PDF", type=["pdf"])
    if uploaded_file:
        docs = process_uploaded_file(uploaded_file)
        if docs:
            retriever = get_vs_retriever_from_docs(docs)
            st.session_state.vector_store = retriever
            st.session_state.doc_upload = True
            st.success("文档处理成功")

上下文检索函数

我创建了 get_related_context() 函数,以改善对话系统中相关信息的检索。

def get_related_context(vector_store):
    llm = BaseChatOpenAI(
        model='deepseek-reasoner', 
        openai_api_key='sk-68f459660c7b4d179e074cbedce962c0', 
        openai_api_base='https://api.deepseek.com',
        max_tokens=1024
    )
    prompt = ChatPromptTemplate.from_messages([
        ("system", "根据对话生成搜索查询。"),
        ("user", "{input}")
    ])
    return create_history_aware_retriever(llm, vector_store, prompt)

上下文感知提示函数

def get_context_aware_prompt(context_chain):
    llm = BaseChatOpenAI(
        model='deepseek-reasoner', 
        openai_api_key='sk-68f459660c7b4d179e074cbedce962c0', 
        openai_api_base='https://api.deepseek.com',
        max_tokens=1024
    )
    prompt = ChatPromptTemplate.from_messages([
       ("system", "使用提供的上下文回答问题:\n\n{context}"),
       ("user", "{input}")
    ])
    return create_retrieval_chain(context_chain, docs_chain)

响应生成函数

def get_response(query: str) -> str:
    ifnot st.session_state.vector_store:
        return"错误:请先上传文档"
    try:
        context_chain = get_related_context(st.session_state.vector_store)
        ifnot context_chain:
            return"错误:无法处理上下文"

        rag_chain = get_context_aware_prompt(context_chain)
        current_history = st.session_state.chat_history[-2:] iflen(st.session_state.chat_history) > 1else []
        return rag_chain.invoke({
            "chat_history": current_history,
            "input": query
        })["answer"].do
    except Exception as e:
        return f"错误:{str(e)}"

聊天界面初始化

def init_chat_interface():
    for message in st.session_state.chat_history:
        with st.chat_message("user"ifisinstance(message, HumanMessage) else"assistant"):
            st.write(message.content)

    if prompt := st.chat_input("问一个问题...", disabled=not st.session_state.doc_upload):
        st.session_state.chat_history.append(HumanMessage(content=prompt))
        response = get_response(prompt)
        st.session_state.chat_history.append(AIMessage(content=response))

if __name__ == "__main__":
    init_ui()
    if st.session_state.vector_store:
        init_chat_interface()

实践指南:快速接入DeepSeek-R1

在完成上述RAG系统构建后,开发者常面临模型部署的工程化挑战。为此推荐使用Rifx.Online AI模型市场进行快速集成。

🔗 相关链接

  • • AI模型市场:https://rifx.online/models/
  • • DeepSeek-R1免费版:https://rifx.online/models/deepseek-deepseek-r1free/
  • • DeepSeek-R1专业版:https://rifx.online/models/deepseek-deepseek-r1/
  • • 限时优惠活动:https://rifx.online/#special-offers–free-trial-models

该平台提供以下特性:

技术特性

# 标准OpenAI接口兼容
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_RIFX_KEY",
    base_url="https://api.rifx.online/v1"  # 兼容OpenAI标准端点
)

response = client.chat.completions.create(
    model="deepseek-r1",  # 指定模型版本
    messages=[{"role": "user", "content": "解释量子计算的核心概念"}],
    max_tokens=1024,
    temperature=0.3
)
print(response.choices[0].message.content)
  • • 📈 性能监控面板:实时追踪P99延迟、token消耗、错误率等关键指标
  • • ⚡ 智能路由:自动选择最优API节点

结论

DeepSeek R1 的发布是一个技术突破,也是人工智能民主化的一个关键里程碑。它的开放方法正在重塑我们对人工智能的看法,使更多人能够参与其开发。

实践推荐

想要亲身体验DeepSeek-R1的强大功能?推荐通过Rifx.Online AI聚合平台进行体验,该平台提供:

  • • 🆓 免费版:适合个人开发者和小规模实验

    链接:https://rifx.online/models/deepseek-deepseek-r1free/

  • • 💰 专业版:享受完整功能与更高性能

    链接:https://rifx.online/models/deepseek-deepseek-r1/

  • • 🔄 统一API接口:轻松集成到现有系统

  • • 📊 实时用量监控:清晰掌握AI资源消耗

🎁 特别优惠: 平台当前提供多个限时折扣模型(https://rifx.online/),包括OpenAI o1系列40%优惠和GPT-4o mini半价体验,是成本敏感型开发的理想选择。

理解像 Retrieval Chain 和 Conversation Retrieval Chain 这样的概念对于使用 LangChain 至关重要。

只要理解这两个链的原理,您不仅可以了解基于语言模型的客户服务聊天机器人的操作原理,还可以使我们能够实现类似的应用。

然而,LangChain 不仅仅是这些。创建与语言模型相关的应用程序还需要学习许多功能和技巧。

img

访问200+LLM聚合平台:https://rifx.online

DeepSeek无疑是2025开年AI圈的一匹黑马,在一众AI大模型中,DeepSeek以低价高性能的优势脱颖而出。DeepSeek的上线实现了AI界的又一大突破,各大科技巨头都火速出手,争先抢占DeepSeek大模型的流量风口。

DeepSeek的爆火,远不止于此。它是一场属于每个人的科技革命,一次打破界限的机会,一次让普通人也能逆袭契机。

DeepSeek的优点

read-normal-img

掌握DeepSeek对于转行大模型领域的人来说是一个很大的优势,目前懂得大模型技术方面的人才很稀缺,而DeepSeek就是一个突破口。现在越来越多的人才都想往大模型方向转行,对于想要转行创业,提升自我的人来说是一个不可多得的机会。

那么应该如何学习大模型

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

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

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

大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。

read-normal-img

掌握大模型技术你还能拥有更多可能性:

• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;

• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;

• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;

• 更优质的项目可以为未来创新创业提供基石。

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

read-normal-img

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

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

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

read-normal-img

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

read-normal-img

read-normal-img

👉学会后的收获:👈

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

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

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

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

read-normal-img

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费在这里插入图片描述

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐