Type something to search...
使用 DeepSeek R1 和 Ollama 开发 RAG 系统(包含完整代码)

使用 DeepSeek R1 和 Ollama 开发 RAG 系统(包含完整代码)

你是否曾希望能够直接向PDF或技术手册提问?

本指南将向您展示如何使用检索增强生成(RAG)系统构建一个系统,使用DeepSeek R1,一个开源推理工具,以及Ollama,一个轻量级的本地AI模型运行框架。

想要简化您的API工作流程吗?

Apidog充当创建、管理和运行测试及模拟服务器的全能解决方案。使用Apidog,您可以:

  • 自动化关键工作流程,无需 juggling 多个工具或编写大量脚本。
  • 维护顺畅的CI/CD管道。
  • 识别瓶颈以确保API可靠性。

节省时间,专注于完善您的产品。

为什么选择 DeepSeek R1?

DeepSeek R1,一个与 OpenAI 的 o1 相媲美但便宜 95% 的模型,正在革新检索增强生成(RAG)系统。开发者们喜欢它的:

  • 聚焦检索:每个答案仅使用 3 个文档块。
  • 严格提示:通过“我不知道”的回答避免幻觉。
  • 本地执行:消除了云 API 的延迟。

构建本地 RAG 系统所需的内容

1. Ollama

Ollama 允许您在本地运行像 DeepSeek R1 这样的模型。

  • 下载: Ollama
  • 设置: 通过终端安装并运行以下命令。

Image 2

2. DeepSeek R1 模型变体

DeepSeek R1 的参数范围从 1.5B 到 671B。对于轻量级的 RAG 应用,建议从 1.5B 模型 开始。

ollama run deepseek-r1:1.5b

专业提示: 更大的模型(例如,70B)提供更好的推理能力,但需要更多的 RAM。

构建RAG管道的分步指南

第一步:导入库

我们将使用:

import streamlit as st  
from langchain_community.document_loaders import PDFPlumberLoader  
from langchain_experimental.text_splitter import SemanticChunker  
from langchain_community.embeddings import HuggingFaceEmbeddings  
from langchain_community.vectorstores import FAISS  
from langchain_community.llms import Ollama

Step 2: 上传和处理 PDF

利用 Streamlit 的文件上传器选择本地 PDF。使用 PDFPlumberLoader 高效提取文本,无需手动解析。

uploaded_file = st.file_uploader("Upload a PDF file", type="pdf")

if uploaded_file:
    with open("temp.pdf", "wb") as f:  
        f.write(uploaded_file.getvalue())

    loader = PDFPlumberLoader("temp.pdf")  
    docs = loader.load()

第3步:战略性地分块文档

利用Streamlit的文件上传器选择本地PDF。使用 PDFPlumberLoader 高效提取文本,无需手动解析。

text_splitter = SemanticChunker(HuggingFaceEmbeddings())  
documents = text_splitter.split_documents(docs)

第4步:创建可搜索的知识库

为文档块生成向量嵌入并将其存储在FAISS索引中。

  • 嵌入允许快速、上下文相关的搜索。
embeddings = HuggingFaceEmbeddings()  
vector_store = FAISS.from_documents(documents, embeddings)

retriever = vector_store.as_retriever(search_kwargs={"k": 3})

第5步:配置DeepSeek R1

设置一个检索问答链,使用DeepSeek R1 1.5B模型

  • 这确保了答案基于PDF的内容,而不是依赖于模型的训练数据。
llm = Ollama(model="deepseek-r1:1.5b")

prompt = """  
1. 仅使用以下上下文。  
2. 如果不确定,请说“我不知道”。  
3. 保持答案在4句话以内。

上下文:{context}

问题:{question}

答案:  
"""  
QA_CHAIN_PROMPT = PromptTemplate.from_template(prompt)

第6步:组装RAG链

将上传、分块和检索整合成一个统一的管道。

  • 这种方法为模型提供了经过验证的上下文,提高了准确性。
llm_chain = LLMChain(llm=llm, prompt=QA_CHAIN_PROMPT)

document_prompt = PromptTemplate(  
    template="Context:\\ncontent:{page_content}\\nsource:{source}",  
    input_variables=["page_content", "source"]  
)

qa = RetrievalQA(  
    combine_documents_chain=StuffDocumentsChain(  
        llm_chain=llm_chain,  
        document_prompt=document_prompt  
    ),  
    retriever=retriever  
)

第7步:启动Web界面

Streamlit使用户能够输入问题并获得即时答案。

  • 查询检索匹配的块,将其输入到模型中,并实时显示结果。
## Streamlit UI  
user_input = st.text_input("Ask your PDF a question:")

if user_input:  
    with st.spinner("Thinking..."):  
        response = qa(user_input)["result"]  
        st.write(response)

您可以在此找到完整代码:https://gist.github.com/lisakim0/0204d7504d17cefceaf2d37261c1b7d5.js

RAG与DeepSeek的未来

DeepSeek R1 只是一个开始。未来的 RAG 系统可能会通过即将推出的功能,如 自我验证多跳推理,自主辩论和完善其逻辑。

本文来源:如何使用 Ollama 在本地运行 Deepseek R1?

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...