用DeepSeek R1和Ollama搭建RAG系统(附代码)
构建一个高效的 RAG 系统,DeepSeek R1 与 Ollama 正成为备受青睐的组合方案。我们先从几个核心维度切入:DeepSeek R1 在性能上的突出优势、其在检索效率与提示机制方面的独特设计,以及 Ollama 如何大幅简化本地模型的部署流程。今天,我们将一步步拆解如何利用这两者搭建一
构建一个高效的 RAG 系统,DeepSeek R1 与 Ollama 正成为备受青睐的组合方案。我们先从几个核心维度切入:DeepSeek R1 在性能上的突出优势、其在检索效率与提示机制方面的独特设计,以及 Ollama 如何大幅简化本地模型的部署流程。今天,我们将一步步拆解如何利用这两者搭建一个功能完备的 RAG 系统。
DeepSeek R1:RAG 系统的卓越之选
DeepSeek R1(开启了 AI 推理新时代的开源先锋)在 RAG 领域一经亮相便令人瞩目。它的性能完全可以与 OpenAI 的 o1 一较高下,但成本仅为后者的 5%——如此巨大的价格差距,让中小开发团队也能毫无压力地进入这一领域。
在检索环节,DeepSeek R1 的表现堪称“精准狙击手”——它只锁定所需的那 3 个文档块,多余的内容一概不取。这意味着,即便文档堆积如山,它也能直击要害,输出干净且精准的答案。
面对棘手问题或信息不充分的情况,DeepSeek R1 不会强行编造,而是坦诚地表示“我不知道”。正是这种“宁愿不知道,也不胡乱编造”的严谨态度,让它从众多易产生幻觉的模型中脱颖而出,确保了回答的可靠性与可信度。
数据安全与响应速度一直是开发者的心头大事。DeepSeek R1 支持本地运行,完全不依赖云端 API,这意味着既没有人能窥探你的数据,也无需忍受网络延迟。对于金融、医疗等对数据高度敏感的行业来说,这无疑是刚需特性。
Ollama:本地模型运行的理想框架
Ollama 这一轻量级框架,让本地运行大模型变得像喝水一样简单。它是构建本地 RAG 系统(更多详情可参考《RAG 系统从 POC 到生产应用:全面解析与实践指南》)的关键组件。有了它,开发者不再受云端资源的束缚,本地即可轻松部署,成本可控且隐私有保障。
使用 Ollama 下载和安装模型极其简便。以运行 DeepSeek R1 为例,只需在终端输入一条命令即可:
ollama run deepseek-r1:1.5b
想使用 7B 版本?换成 ollama run deepseek-r1 即可。即使技术经验不多,也能快速上手,开启 RAG 开发之旅。
Ollama 的模型库相当丰富,从轻量级到强力型任你选择。无论你是追求极致推理能力,还是更注重资源利用率,都能找到合适的选项。无论是高效推理还是资源节省,Ollama 都能满足多样化的需求。
构建本地 RAG 系统的详细步骤
1. 导入必要的库
要搭建这个 RAG 系统,首先需要备齐几件“利器”。LangChain 负责文档处理与检索,Streamlit 用于构建交互界面,PDFPlumberLoader 负责提取 PDF 内容,SemanticChunker 执行语义分割,HuggingFaceEmbeddings 生成向量表示,FAISS 建立索引,最后通过 Ollama 调用 DeepSeek R1 进行推理。一行 import 语句,即可全部引入。
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
2. 上传与处理 PDF 文件
首先让用户上传 PDF 文件——使用 Streamlit 的文件上传器,简单几步即可将文件保存为临时文件。接着,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. 策略性地分割文档
文档分割并非简单的切分,而是需要讲究策略。SemanticChunker 结合 HuggingFaceEmbeddings,会根据语义将文字切割成逻辑连贯的小块——例如,同一技术概念的相关段落会被分在一组。这样在检索时,上下文更连贯,回答也更具针对性。
text_splitter = SemanticChunker(HuggingFaceEmbeddings())
documents = text_splitter.split_documents(docs)
4. 创建可搜索的知识库
现在要为每一段文字配备一张“指纹”——向量嵌入。HuggingFaceEmbeddings 负责生成嵌入,FAISS 负责存储与快速匹配。搜索时设置 k=3,仅返回最相关的 3 个文档块,这与 DeepSeek R1 高效检索的风格高度契合。
embeddings = HuggingFaceEmbeddings()
vector_store = FAISS.from_documents(documents, embeddings)
retriever = vector_store.as_retriever(search_kwargs={"k": 3})
5. 配置 DeepSeek R1 模型
接下来请出我们的主角——DeepSeek R1。通过 Ollama 启动一个 1.5B 参数的轻量模型,然后为其设定严格的规则:仅根据提供的上下文回答,不清楚时回答“我不知道”,且回答内容不超过 4 句话。这个提示模板就像给模型套上了缰绳,防止它偏离方向。
llm = Ollama(model="deepseek-r1:1.5b")
prompt = """
1. Use ONLY the context below.
2. If unsure, say "I don’t know".
3. Keep answers under 4 sentences.
Context: {context}
Question: {question}
Answer:
"""
QA_CHAIN_PROMPT = PromptTemplate.from_template(prompt)
6. 组装 RAG 链
最后一步,将所有组件组装成一条完整的流水线。LLMChain 负责生成回答,StuffDocumentsChain 将检索到的文档块与问题一同馈入模型,RetrievalQA 则将检索与问答环节串联起来。用户提出问题后,系统自动查找相关文档并生成答案,一气呵成。
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 搭建一个输入框,用户输入问题并点击发送,系统会显示“Thinking...”,随后答案直接呈现。整个过程流畅顺滑,非技术人员也能轻松上手。这就是 RAG 系统的最终形态——从文档到答案,一步到位。
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)
总体而言,DeepSeek R1 与 Ollama 的组合为开发者提供了一条低成本、高效率且安全可靠的 RAG 搭建路径。按照这七步流程操作,你也能在本地运行起一套智能问答系统,将海量文档转化为随时可查阅的“知识大脑”。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:用DeepSeek R1和Ollama搭建RAG系统(附代码)要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点2026年6月29日,微软研究院低调公开了一项名为“Memora”的前沿研究成果。该项目由Xuchao Zhang等多位研究员主导,核心理念十分明确——在AI的记忆表示领域,探索一种既能把握全局、又不遗漏细节的“和谐”方案。通俗地说,就是让机器像人类一样,既能在宏观层面理清逻辑主线,又能精准记住那些
核心要点 停止支付版税:即日起,所有被判定为完全由AI生成的曲目,一律失去获利资格。 非全面禁止:平台明确表示不会彻底下架AI音乐,目前只是限制了它的赚钱能力。 引入识别标识:从7月15日开始,AI生成的曲目会多出一个特定图标,方便用户辨别。 政策核心目标:在技术迭代与创作者权益之间找平衡,一边保护
近日,艾伦人工智能研究所(Allen Institute for AI)在Hugging Face平台正式发布了一款全新模型——DiScoFormer。初看名称略显复杂,但深入分析后,其背后的设计理念值得高度关注。该模型采用统一的Transformer架构,同时实现了概率密度估计与评分匹配两大任务,
先说几个核心判断。近期,deepreinforce-ai团队正式推出了Ornith-1 0系列,这是一个完全开源且具备自我进化能力的编程智能体模型家族,模型规模从9B一路覆盖到397B。该系列基于Gemma 4和Qwen 3 5这两个成熟的基础模型进行后期训练,但最大亮点在于其训练方法——一套创新的
- 日榜
- 周榜
- 月榜
热点快看
