首页 游戏 软件 资讯 排行榜 专题
首页
手机教程
使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)

使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)

热心网友
13
转载
2025-04-22

你有没有想过,能不能像跟人聊天一样,直接问 pdf 文件或技术手册问题?比如你有一本很厚的说明书,不想一页页翻,只想问它:“这个功能怎么用?”或者“这个参数是什么意思?”现在有了 ai 技术,这完全可以实现!

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

这篇文章教你如何用两个工具(DeepSeek R1 和 Ollama)来搭建一个智能系统,让它帮你从 PDF 里找答案。这个系统叫 RAG(检索增强生成),简单来说就是:先找资料,再生成答案。

为什么要用 DeepSeek R1?省钱:它比 OpenAI 的模型便宜 95%,效果却差不多。精准:每次只从 PDF 里找 3 个相关片段来回答问题,避免瞎编。本地运行:不用联网,速度快,隐私也有保障。你需要准备什么?

Ollama:一个让你在电脑上本地运行 AI 模型的工具。

下载地址:https://ollama.com/
使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)
安装后,运行命令:ollama run deepseek-r1 # 默认用7B模型

DeepSeek R1 模型:有不同大小,最小的 1.5B 模型适合普通电脑,更大的模型效果更好,但需要更强的电脑配置。

运行小模型:ollama run deepseek-r1:1.5b

通用配置原则 模型显存占用(估算):

每 1B 参数约需 1.5-2GB 显存(FP16 精度)或 0.75-1GB 显存(INT8/4-bit 量化)。例如:32B 模型在 FP16 下需约 48-64GB 显存,量化后可能降至 24-32GB。

内存需求:至少为模型大小的 2 倍(用于加载和计算缓冲)。

存储:建议 NVMe SSD,模型文件大小从 1.5B(约 3GB)到 32B(约 64GB)不等。

怎么搭建这个系统?第一步:导入工具包

我们用 Python 写代码,需要用到一些工具包:

LangChain:处理文档和检索。Streamlit:做一个简单的网页界面。代码语言:javascript代码运行次数:0运行复制
import streamlit as stfrom langchain_community.document_loaders import PDFPlumberLoaderfrom langchain_experimental.text_splitter import SemanticChunkerfrom langchain_community.embeddings import HuggingFaceEmbeddingsfrom langchain_community.vectorstores import FAISSfrom langchain_community.llms import Ollama
登录后复制
使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)
第二步:上传 PDF

用 Streamlit 做一个上传按钮,把 PDF 传上去,然后用工具提取里面的文字。

代码语言:javascript代码运行次数:0运行复制
uploaded_file = st.file_uploader("上传PDF文件", type="pdf")if uploaded_file:    with open("temp.pdf", "wb") as f:        f.write(uploaded_file.getvalue())    loader = PDFPlumberLoader("temp.pdf")    docs = loader.load()
登录后复制第三步:把 PDF 切成小块

PDF 内容太长,直接喂给 AI 会吃不消。所以要把文字切成小块,方便 AI 理解。

代码语言:javascript代码运行次数:0运行复制
text_splitter = SemanticChunker(HuggingFaceEmbeddings())documents = text_splitter.split_documents(docs)
登录后复制
使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)
第四步:建一个“知识库”

把切好的文字块转换成向量(一种数学表示),存到一个叫 FAISS 的数据库里。这样 AI 就能快速找到相关内容。

代码语言:javascript代码运行次数:0运行复制
embeddings = HuggingFaceEmbeddings()vector_store = FAISS.from_documents(documents, embeddings)retriever = vector_store.as_retriever(search_kwargs={"k": 3})  # 每次找3个相关块
登录后复制第五步:设置 AI 模型

用 DeepSeek R1 模型来生成答案。告诉它:只根据 PDF 内容回答,不知道就说“我不知道”。

代码语言:javascript代码运行次数:0运行复制
llm = Ollama(model="deepseek-r1:1.5b")prompt = """1. 仅使用以下上下文。2. 如果不确定,回答“我不知道”。3. 答案保持在4句话以内。上下文: {context}问题: {question}答案:"""QA_CHAIN_PROMPT = PromptTemplate.from_template(prompt)
登录后复制第六步:把整个流程串起来

把上传、切块、检索和生成答案的步骤整合成一个完整的系统。

代码语言:javascript代码运行次数:0运行复制
llm_chain = LLMChain(llm=llm, prompt=QA_CHAIN_PROMPT)document_prompt = PromptTemplate(    template="上下文:
内容:{page_content}
来源:{source}",    input_variables=["page_content", "source"])qa = RetrievalQA(    combine_documents_chain=StuffDocumentsChain(        llm_chain=llm_chain,        document_prompt=document_prompt    ),    retriever=retriever)
登录后复制第七步:做个网页界面

用 Streamlit 做一个简单的网页,用户可以输入问题,系统会实时返回答案。

代码语言:javascript代码运行次数:0运行复制
user_input = st.text_input("向你的PDF提问:")if user_input:    with st.spinner("思考中..."):        response = qa(user_input)["result"]        st.write(response)
登录后复制
使用 DeepSeek R1 和 Ollama 搭建一个 RAG 系统(包含完整代码)
未来展望

DeepSeek R1 只是开始,未来还会有更多强大的功能,比如:

自我验证:AI 能检查自己的答案对不对。多跳推理:AI 能通过多个步骤推导出复杂问题的答案。总结

用这个系统,你可以轻松地从 PDF 里提取信息,像跟人聊天一样问问题。赶紧试试吧,释放 AI 的潜力!

来源:https://www.php.cn/faq/1285715.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Python效率神器Pandas-Profiling:快速完成数据探索性分析
科技数码
Python效率神器Pandas-Profiling:快速完成数据探索性分析

Pandas-Profiling,能一键生成包含统计指标、缺失值、相关性等内容的交互式HTML报告,让探索性数据分析(EDA)效率直接翻倍。 很多同学刚接触数据分析时,习惯用df describe(

热心网友
03.31
OpenAI叫停“瞎折腾”:让打工人的桌面彻底解放
业界动态
OpenAI叫停“瞎折腾”:让打工人的桌面彻底解放

编辑 | 王凤枝OpenAI想把电脑桌面“包圆”了。在海外,很多人平时的办公状态大概是这样的,开着网页版ChatGPT问问题,切到其他页面去搜资料,然后再打开代码编辑器或者文档开始干活。但就在3月1

热心网友
03.25
Python课程百元起,分期债务却增数十倍
科技数码
Python课程百元起,分期债务却增数十倍

文 | 惊蛰研究所,作者 | 娅沁“8人名额仅剩最后几位”“微信二维码仅保留30秒,先到先得”,在刻意营造的紧迫氛围下,京莫迅速支付100元定金,锁定了一个总价5980元的Python小班课程名额,

热心网友
03.17
首批AI龙虾养殖者已陷入巨额亏损困境
科技数码
首批AI龙虾养殖者已陷入巨额亏损困境

不懂如何定义工作流的“小白”,装龙虾只是自寻烦恼。文|《中国企业家》记者 闫俊文见习编辑|李原编辑|何伊凡头图来源|视觉中国2026年开年,养“龙虾(OpenClaw)”热潮愈演愈烈,但一边有人“抢

热心网友
03.13
如何挑选好龙虾?能安龙鳃的才算数!
AI
如何挑选好龙虾?能安龙鳃的才算数!

机器之心编辑部最近,市面上的 “龙虾”(Claw 系列智能体)多到离谱。从本地到云端,从插件到独立系统,形态各异。但繁荣背后,一个尴尬的现状正在蔓延:龙虾越来越强,却越来越难 “下锅”有的只认 Ma

热心网友
03.10

最新APP

你说我猜
你说我猜
休闲益智 03-31
史莱姆农场
史莱姆农场
休闲益智 03-31
凡人传说
凡人传说
角色扮演 03-30
恶魔秘境
恶魔秘境
角色扮演 03-29
猫和老鼠华为
猫和老鼠华为
休闲益智 03-29

热门推荐

追涨做合约为何最致命_如何避免 Web3 情绪下单
web3.0
追涨做合约为何最致命_如何避免 Web3 情绪下单

追涨合约的五步风控机制 很多人觉得追涨合约是“富贵险中求”,但现实往往是“险中求”占了绝大多数。真正可持续的做法,不是靠运气,而是靠一套能抵御情绪干扰的硬性流程。这套流程的核心,可以概括为五个环环相扣的步骤:识别链上失真特征、启用价格行为过滤器、执行跨平台验证、绑定延迟机制,以及启动亏损隔离。缺了任

热心网友
03.31
苹果趣味宣传:维斯塔潘现身 Apple Park,库克的高尔夫球车享受 F1 级换胎
业界动态
苹果趣味宣传:维斯塔潘现身 Apple Park,库克的高尔夫球车享受 F1 级换胎

苹果趣味宣传:维斯塔潘现身 Apple Park,库克的高尔夫球车享受 F1 级换胎 科技圈和赛车圈的交集,最近又有了新玩法。根据9to5Mac在3月10日的报道,苹果公司首席执行官蒂姆·库克亲自上阵,为Apple TV引入F1赛事转播造势,发布了一段颇为有趣的宣传视频。 先来看看这段视频到底拍了什

热心网友
03.31
【203篇系列】047 基于openclaw的一些使用情况
AI
【203篇系列】047 基于openclaw的一些使用情况

版本升级:一次“惊心动魄”的体验与背后的思考 OpenClaw的版本迭代速度,用“日新月异”来形容毫不为过。功能快速上线是好事,但随之而来的升级会引发什么,恐怕是每个用户都绕不开的“心跳时刻”。 就拿最近一次来说,Dashboard上明晃晃地挂着一个升级提醒:当前版本2026 3 1,可升级至202

热心网友
03.31
【203篇系列】047 基于openclaw的一些使用情况
AI
【203篇系列】047 基于openclaw的一些使用情况

版本升级:一次“惊心动魄”的体验与背后的思考 OpenClaw的版本迭代速度,用“日新月异”来形容毫不为过。功能快速上线是好事,但随之而来的升级会引发什么,恐怕是每个用户都绕不开的“心跳时刻”。 就拿最近一次来说,Dashboard上明晃晃地挂着一个升级提醒:当前版本2026 3 1,可升级至202

热心网友
03.31
汽水音乐上线鸿蒙独有功能:像抓一把糖一样,把音乐“递”给朋友
业界动态
汽水音乐上线鸿蒙独有功能:像抓一把糖一样,把音乐“递”给朋友

你有没有过这样的时刻? 和朋友们待在一块,耳机里正好播到一首应景的音乐,那份想立刻分享的心情瞬间满溢。可接下来的操作,往往让人手忙脚乱:你得赶紧喊“快打开!一起听!”,然后切换应用、复制链接、找到好友、发送、等待对方点击、跳转……一通折腾下来,刚才那份恰到好处的气氛,早就消失得无影无踪了。 说实话,

热心网友
03.31