一个主打“本地化大容量”与“绝对逻辑严密”的学术论文精读/检索工具。
无视网页限制:几十上百篇 PDF 扔进本地硬盘,静默构建长期高维记忆。
拒绝学术脑补:强制锁定大模型发散思维,找不到原文直接回答“未提及”。
精确页码溯源:每一句推断都带 [PAGE X] 标记,写 Paper 敢直接引用。
这是一个专门用来精读和检索 AI4S(AI for Science)硬核学术论文的本地 RAG 系统。
很多人看到这个项目可能第一反应是:现在 ChatGPT、Kimi 还有 DeepSeek 的网页版都能直接传 PDF 了,我干嘛还要自己费劲在本地部署这么个东西?
如果只是平时总结个新闻、看看研报,网页版确实够了。但最近在处理大量包含复杂张量公式、底层网络架构的顶会论文时,我发现直接用网页版大模型有几个极其头疼的问题。这也是我从零写这个项目的原因。
- 网页版太喜欢“脑补”了
当你向网页版提出一些跨领域的复杂假设(比如把 A 论文的视觉机制强行塞进 B 论文的路由里),它为了“高情商”地回应你,经常会顺着你的话往下编,一本正经地胡说八道。 在这套系统里,我在代码层把大模型的 Temperature 几乎锁死。剥夺了它的“创造力”,强制它只能看着检索出来的原文片段回答。如果在本地库里找不到证据,它必须老老实实回答“文献未提及”,绝不瞎编。
2. 经常弄丢上下文和关键公式
几十篇 PDF 塞进网页端,模型很容易“看了后面忘前面”,尤其是跨页的数学公式经常会发生逻辑断裂。 为了解决这个,我用了“父子文档”切分策略。搜的时候用 300 token 的小切片保证查得准,但喂给大模型的时候,会自动向上回溯提取 1500 token 的完整段落,保证大模型看到的是完整的逻辑链。
3. 没有页码,没法溯源
网页端给你总结了一大段看似很牛的推论,但你写 Paper 的时候敢直接引用吗?你连它是从哪篇论文的第几页看来的都不知道。 所以在这个项目里(特别是 Step 2 的精读模式),我强制要求大模型生成的每一句推论都必须带上 [PAGE X]这样的页码标签。是根据哪一页推导出来的,一目了然,方便随时去原文对证。
4. 未公开数据的隐私问题
实验室还没发表的 Paper 肯定不敢随便往公有云上扔。这个项目所有的 PDF 原文件和庞大的 Chroma 向量库全部物理隔离在你自己的硬盘里。只有在你提问时,系统才会把切出来的几个相关纯文本片段发给 API 推理,隐私性好很多。
5. 网页端传不了海量 PDF,且无法沉淀为长期记忆
现在各种大模型的网页版,就算宣称支持超长上下文,一般也就让你同时传几个、十几个文件,文件稍微多一点浏览器就容易卡死。最要命的是,关掉网页下次再想查点东西,又得全部重新传一遍,极度折腾。 这套系统的核心优势就在于海量文献的本地重型部署。你可以直接把几十上百篇、甚至你整个研究方向的所有 PDF 论文,一股脑全扔进项目文件夹里。跑一遍清洗和向量化脚本(Step 1-3),它就会在你本地硬盘上静默生成一个永久的 Chroma 向量数据库。 只要建好一次,这些文献就彻底成了你本地的“长期记忆”。不管什么时候打开终端,都能瞬间跨越这几百篇文献进行全局对比和检索。你扔进来的文献越多,这个本地“大脑”就越厚实,完全不受网页版的上传数量和存活时间限制。
简单来说:
这不是一个简单的“套壳 API” 对话框。它是把检索(Embedding 专门用了 BGE-M3 解决多语言问题)和推理(接入 DeepSeek-V3.2 专攻逻辑)彻底解耦的本地化工具。它没有那么多花哨的功能,就干一件事:帮你防幻觉、带页码地死磕学术论文。
操作系统:Linux / macOS / Windows(我是以windows来做的)
Python 版本:Python 3.7 或更高版本
硬件要求:推荐使用至少 8GB RAM 和 1个 GPU(如 NVIDIA 进行计算加速)来提高处理速度和性能。
克隆项目仓库:
进入你希望存放该项目的文件夹,在命令行中执行以下命令来克隆仓库:
git clone https://github.com/your-username/SciArchitect-Agent.git
cd SciArchitect-Agent安装 Python 依赖:
确保你已经安装了 Python 3.7+,并且安装了 pip 包管理工具。如果没有安装,可以参考 Python 官方网站 进行安装。
为了让系统顺利运行,你需要提供 API 密钥。在项目根目录下创建一个 .env 文件,并填入你的 API 密钥:
在项目根目录创建 .env 文件(如果没有的话),并填入:
SILICONFLOW_API_KEY=sk-你的API密钥
请确保 API 密钥是有效的。如果你没有密钥,可能需要注册并获取一个。
这个 API 密钥将用于访问 硅基流动 (SiliconFlow) API。(我用的是硅基流动的deepseekv3.2模型)
确保 .env 文件被列在 .gitignore 文件中,以免将敏感信息上传到 GitHub。
接下来,你需要安装项目所需的所有依赖包。在项目根目录下执行以下命令:
pip install -r requirements.txt
requirements.txt 文件中列出了所有必要的 Python 库,确保在安装时下载并安装这些库。
这些依赖包括:
LangChain:用于实现文献检索和推理。
Chroma:用于存储和检索文献向量数据。
OpenAI:用于调用 OpenAI 的 GPT 模型。
PyPDF:用于从 PDF 中提取文本。
python-dotenv:用于加载 .env 文件中的环境变量。
将你需要分析的 PDF 文献 文件放置在项目根目录下。这些文献将被自动扫描并用于后续的处理和分析。
系统分为多个阶段,每个阶段负责不同的任务。请按照以下顺序执行每个阶段:
python step1_librarian.py
功能:扫描项目根目录下的 PDF 文件,提取文本内容并生成初步的元数据。
输出:生成 library.json 文件,其中包含每篇论文的元数据。
python step2_professor.py
在把所有文献全部丢进向量库之前,Step 2 提供了一个高交互性的“单篇论文精读”环境。它的核心目的是带你把单篇核心文献吃透,并利用严格的工程手段压制大模型的幻觉。
主要交互与功能实现 文献选取与智能采样
运行后,系统会列出 Step 1 扫出来的所有本地论文清单供你点播。
选中目标论文(如 DeepSeek_V3.pdf)后,系统不会盲目吞噬全文,而是自动抽取关键页码(如核心机制页、实验数据页等)进行采样。
处理完成后,会在本地自动生成一份该论文专属的 Markdown 精读研报。
系统会根据采样内容,自动提取出论文的潜在弱点或核心讨论点,生成“审计建议”。
比如,它会自动建议你提问“DualPipe算法在非MoE模型上的通用性如何?”,并标明这个质疑是由原论文的哪一页(如对应 P12)引发的。
模式 A(深度对线,严格证据):强制大模型只基于当前采样的那几页 PDF 回答问题。系统做了一个非常实用的防幻觉设计:如果原文没写,它会明确警告“
模式 B(跨文检索):如果单篇论文的信息不够,支持无缝切换到 Step 4 的向量库模式,进行跨论文的全局追问。
python step3_update_chat_db.py
如果说前两步是在整理书架,那 Step 3 就是把书彻底“嚼碎”并装进系统的长期记忆里。这是整个 RAG 架构中最耗时、但也最核心的底层数据处理模块,负责把纯文本转化为大模型能看懂的高维向量,并存入本地数据库。
这是为了解决学术长文本“切碎了丢逻辑,不切搜不到”的经典痛点。
底层逻辑:代码里配置了两套切分尺度。搜索时,系统用细粒度的“子切片”(如 300 Tokens)去精准匹配用户的问题,以保证查准率;但在命中后,系统会向上回溯,把完整的“父切片”(如 1500 Tokens)提出来喂给大模型。这样既保证了检索的精度,又保全了复杂的数学公式和长下文的逻辑连贯性。
放弃了传统的本地小模型,直接通过 SiliconFlow API 调用 BAAI/bge-m3 模型进行 Embedding。它完美支持跨语言检索,能实现“用中文提问,精准命中全英文顶会 PDF 底层机制”,有效避免了语义断层。
处理学术文献时,极易因一次性塞入几十万 Token 触发 API 的 429 (并发超限) 或 413 (负载过大) 报错。
工程兜底:脚本在向量化循环中加入了动态分批(Batching)与平滑延时机制。把海量文本切分后,按安全批次排队请求 API,确保几十篇 PDF 的数据能一次性平稳落盘,程序绝不中途崩溃。
生成的所有向量特征与元数据(Metadata)都会被写入本地物理目录 brain_db 中。只要跑过一次,后续的提问全部基于本地向量库进行秒级检索,不再重复消耗 Embedding 算力。
这是整个 AI4S 系统的大脑和最终的交互入口。它负责将 Step 3 建好的本地知识库与云端的推理大模型桥接起来,把一个通用的聊天机器人,改造成一个只认文献证据的赛博学术博导。
python step4_chat_assistant.py
逻辑:当用户在终端输入硬核学术问题后,系统会先调用 BGE-M3 模型将问题向量化,然后去本地的 brain_db 向量库 中执行高维相似度检索。
实现:提取出最相关的文献切片(包含对应的 Metadata)后,将这些纯净的学术上下文拼接进 Prompt,再一并打包发送给大模型。
逻辑:学术推演不需要大模型有创造力,而是需要极强的逻辑链与指令遵循能力。
实现:底层默认挂载了 SiliconFlow 平台上的 Pro/deepseek-ai/DeepSeek-V3.2 模型。通过在代码中将 Temperature(温度值)锁死在极低水平(如 0.1 或 0),剥夺模型的发散性思维,强制它进入冷酷的“物理数学推演模式”。
逻辑:防止大模型在找不到答案时强行“脑补”或缝合概念。
实现:通过 System Prompt 施加严苛的规则,强制要求回答必须 100% 锚定在检索到的 PDF 切片上。如果本地库中没有相关技术细节,模型会被要求直接回复“文献中未提及”,从而切断学术幻觉的源头。
逻辑:学术探讨往往需要连续追问(比如“继续解释上一条中的公式”)。
实现:脚本在本地维护了一个会话缓存文件 assistant_cache.json,用于记录历史问答上下文。这使得大模型能够理解代词和连贯的学术逻辑,而不需要你每次提问都重复背景。
python step5_review_writer.py
功能:根据 Step 4 中的问答结果,生成全局主题维度的文献综述报告。
输出:生成一份包含关键论点、实验对比数据与结论的 Markdown 格式报告。
运行效果截图:
API 密钥管理:请务必使用 .env 文件管理 API 密钥,避免将密钥硬编码到代码中。
仓库数据隔离:生成的 brain_db 和 docstore_data 会占用大量磁盘空间,且包含敏感文献数据,请确保 .gitignore 忽略这些文件。
网络与模型选用:本系统依赖于特定的模型(BAAI/bge-m3),确保使用正确的模型进行文献分析。
引入 GraphRAG (知识图谱检索)
跨模态文档解析 (Vision-Language Parsing)
多代理协作 (Multi-Agent System)
工程化前端部署 (Web GUI)
本项目采用 MIT License,你可以自由使用、修改和分发代码,但请保留原始作者的版权声明和许可证。
SciArchitect-Agent 旨在为学术研究人员提供一个智能、高效的文献分析工具。通过本项目,你可以轻松地从海量文献中提取关键信息,并获得深入的学术分析,助力科研创新。
这套系统目前强依赖提供的 API 服务。视神经(向量化)用的是 BAAI/bge-m3,脑皮层(推理)接入的是 Pro/deepseek-ai/DeepSeek-V3.2。如果你要跑起来,记得去弄个他们家的 Key 填进 .env 里。
前前后后大概爆肝折腾了十来天,踩了无数网络穿透、API 并发限流、上下文断裂的深坑。
我自己其实也就是个刚接触科研、天天被各种硬核 Paper 按在地上摩擦的学术小白。因为实在受不了现有网页版大模型的那些痛点(特别是胡说八道和找不到页码),才凭着一腔热血和兴趣手搓了这么个本地系统。
在折腾各种底层逻辑和重构的时候,我有些借助了 AI 助手来帮我 debug 和结对编程。所以大家扒源码的时候,可能会发现有些变量命名、注释风格或者代码结构带着一股熟悉的AI 味,甚至可能混杂了一些不太符合老手最佳实践的“野路子”写法。
作为一个个人造的轮子,代码肯定还有很多粗糙的地方,甚至可能暗藏玄机(Bug),大家多担待。如果你在使用过程中遇到了什么奇葩报错,或者有更好玩的架构改造思路(比如接个知识图谱啥的),非常欢迎开 Issue 交流,或者提 PR 帮我修修 Bug!
祝大家的 Paper 都能顺利被接收!





