核心内容摘要
探索心灵的隐秘花园:成人游戏的无限可能
说实话我曾经害怕阅读研究论文。
密集的数学、符号繁重的证明、假设你已经了解另外三篇论文才能理解这篇论文。
作为ML工程师我知道这些论文包含了可以在工作中应用的见解但实际提取这些价值感觉就像一件苦差事。
我的学习风格与传统学术写作不太契合。
我通过小例子和可以运行和修改的代码学习效果最好。
先给我看一个3×3矩阵的例子然后再讲一般的n×n情况。
让我先在玩具数据上看算法工作然后再向我抛出定理。
多年来这造成了一个障碍。
研究论文感觉像是为博士们写的而不是为从业者写的。
你要么有高深的数学背景来理解它们要么等几个月让某人写一篇博客文章用通俗易懂的语言解释它。
这已经改变了。
有了AI助手包括本地和基于云的LLM我现在可以与论文对话。
我可以问这个符号是什么意思“或用一个简单的Python示例向我展示这个概念”并获得针对我当前理解水平校准的答案。
论文适应我而不是反过来。
这篇文章将逐步介绍我使用AI阅读技术论文的工作流程这样你就可以应用相同的方法来提升你自己的学习。
到本文结束时你将能够设置本地LLM使用Ollama或连接到云API来阅读论文将PDF转换为LLM可以实际处理的markdown设计系统提示将LLM变成耐心的导师而不是讲座机器人建立一个交互式问答工作流程你控制节奏和深度将此方法应用于论文、文档或任何密集的技术内容图核心工作流程。
图片来源NotebookLM
先决条件和设置在深入了解之前让我们准备好环境。
你需要两样东西在你的机器上运行的本地LLM以及几个Python库将所有内容连接起来。
安装OllamaOllama使在本地运行LLM变得非常简单。
前往ollama.com并下载适合你操作系统的安装程序。
在Mac上这是一个标准的.dmg安装。
在Linux上一行命令curl -fsSL https://ollama.com/install.sh | sh安装完成后验证它是否工作ollama --version选择和拉取模型浏览Ollama模型库查看可用的模型。
对于阅读带有图表和方程的论文我推荐qwen3-vl:8b这是一个可以处理文本和图像的视觉语言模型。
你可以根据你的机器规格使用其他模型。
拉取它ollama pull qwen3-vl:8b这会下载模型权重大约5GB。
去喝杯咖啡吧。
要开始服务OLLAMA_CONTEXT_LENGTH64000 ollama serve保持此终端运行。
Ollama现在在localhost:11434暴露了一个与OpenAI兼容的API。
注意Ollama中的默认上下文长度是4096个token这对我们的用例来说太小了所以我们将其提升到64K。
Python库我们需要三个包pymupdf4llm将PDF页面转换为LLM可以解析的干净markdownlisettelitellm的轻量级包装器它简化了多轮对话并通过一个接口提供统一API来与100 LLM提供商本地或云对话安装它们pip install pymupdf4llm lisette有了Ollama运行和这些库安装好了你就可以开始与论文对话了。
核心工作流程从PDF到对话工作流程有两部分将论文转换为LLM可以处理的格式然后设置对话使AI成为有用的导师而不是通用的聊天机器人。
将PDF转换为Markdown第一步是将pdf转换为文本。
pymupdf4llm通过提取文本同时保留结构来处理这个问题。
这是一个例子读取这篇论文import pymupdf4llm # Convert PDF to txt paper_txt pymupdf4llm.to_markdown(./paper/1_2018_DPP_YT.pdf) # Save paper as Markdown with open(./paper/1_2018_DPP_YT.md, w) as f: f.write(paper_txt)让我们看看第一段。
print(paper_txt[:500])图上面代码的代码输出就是这样。
你现在有了带有标题、代码块和合理表格格式的干净markdown。
对于布局复杂的论文结果并不完美但对于LLM理解内容来说已经足够好了。
如果你想要更准确的PDF到markdown转换器你也可以看看Datalab Marker。
设计你的系统提示这是魔法发生的地方。
一个普通的你是一个有用的助手提示给你维基百科风格的解释。
一个精心制作的系统提示给你一个耐心地满足你水平的导师。
这是一个在论文阅读会话中效果很好的提示system_prompt f You are helping a someone understand an academic paper. Here is the paper \n paper {paper_txt} /paper CRITICAL RULES:
NEVER explain everything at once. Take ONE small step, then STOP and wait.
ALWAYS start by asking what the learner already knows about the topic.
After each explanation, ask a question to check understanding OR ask what they want to explore next.
Keep responses SHORT (
paragraphs max). End with a question.
Use concrete examples and analogies before math.
Build foundations with code - Teach unfamiliar mathematical concepts through small numpy experiments rather than pure theory. Let the learner run code and observe patterns.
If they ask explain X, first ask what parts of X they already understand.
Use string format like this for formula display L_ij q_i × q_j × exp(-α × D_ij^γ). TEACHING FLOW: - Assess background → Build intuition with examples → Connect to math → Let learner guide direction BAD (dont do this): Heres everything about DPPs: [wall of text with all equations] 教学提示深入探究提示设计不是随意的。
每条规则针对我在使用LLM学习时看到的一个特定失败模式论文存在于系统提示中。
这使得完整的上下文对你问的每个问题都可用。
你不需要重新粘贴部分或提醒AI你正在讨论哪篇论文。
数学之前的直觉符合从业者的学习方式。
我们大多数人通过示例和类比比通过定理陈述更快地掌握概念。
如果你的学习风格不同可以在这里换成你自己的偏好。
小例子优先对抗LLM的默认行为。
没有这个模型倾向于抽象、通用的解释。
强制具体的例子3×3矩阵、玩具数据集使概念更易记住。
检查我是否想深入防止文字墙。
LLM喜欢一次解释所有东西。
这条规则让你控制节奏。
你决定何时放大细节与何时移动到下一个主题。
BAD示例显示要避免什么。
负面示例帮助模型理解边界。
没有它你会得到全面但压倒性的回应。
把它们放在一起有了这两个部分你就可以开始对话了。
下一节展示如何用lisette连接它以获得流畅的多轮聊天体验。
用Lisette连接对话lisette处理多轮对话的样板代码跟踪消息历史、为不同的LLM提供商格式化请求和管理上下文窗口。
这是最小设置from lisette import Chat, contents from IPython.display import HTML, Markdown, display chat Chat( modelollama/qwen3-vl:8b, sp # Insert prompt here )就是这样。
model字符串遵循litellm的提供商/模型约定。
对于Ollama前缀为ollama/。
对于云提供商你会使用anthropic/claude-sonnet-
或openai/gpt-4o。
发送消息并获取响应chat(Hi! I am Aayush)图上面代码的代码输出正如我们在上面看到的启动与在本地机器上运行的ollama的对话非常容易。
Chat类设计为持久的这意味着它记住以前的对话。
chat(Whats my name?)图上面代码的代码输出正如你可以看到的模型从以前的对话中记住了我的名字。
每次调用chat()都会将你的消息和AI的响应附加到对话历史中。
下次调用它时模型会看到到目前为止的完整交换。
让我们看看当前的历史记录chat.hist图上面代码的代码输出
实时示例阅读DPP论文这是我在处理关于行列式点过程的论文时的真实对话。
为了在博客文章中易于阅读让我们创建一个类可以用终端风格渲染AI输出以便于阅读。
def ask(chat, question, **kwargs): r chat(question, **kwargs) text contents(r).content display(HTML(f div stylebackground-color: #1e1e1e; color: #00ff00; padding: 12px; border-radius: 5px; font-family: monospace; white-space: pre-wrap; span stylecolor: #00aaff;You:/span {question} span stylecolor: #ffcc00;Tutor:/span {text} /div )) chat Chat( modelollama/qwen3-vl:8b, spsystem_prompt )注意这次我们实际上传递了我们在前几节创建的提示其中包含论文文本和我们的指令。
q I want to learn about this paper. Help me. ask(chat, q, thinkTrue)图上面代码的代码输出q I know about recommendation systems and work on a large recommender system which serves video content. I am familiar with recommendation algorithms. I am interested in understanding how DPP works. ask(chat, q, thinkTrue)图上面代码的代码输出q Yes I dont understand what determinant are, can you help me understand basic intuition and use code examples? I am fairly familiar with numpy. ask(chat, q)图上面代码的代码输出注意Chat类的渲染是markdown风格这更具可读性。
上面的示例被包装以便于博客文本和代码输出之间的分离。
管理聊天历史检查点和上下文控制这种方法相对于通用聊天界面的一个优势是你可以完全访问对话历史。
当会话变长或当AI走错了方向而你想回放时这很重要。
1 访问历史记录Chat对象将消息存储在一个你可以检查和修改的列表中# See current conversation print(chat.hist) # Returns list of message dicts # Check how many turns youve had print(len(chat.hist))图上面代码的代码输出
2 创建检查点在探索分支之前保存你的当前状态# Save checkpoint before a risky question checkpoint len(chat.hist) # Ask something that might derail the conversation ask(chat, Actually, can you explain all the math in one go?)图上面代码的代码输出# That response was overwhelming. Rewind. chat.hist chat.hist[:checkpoint] print(chat.hist[len(chat.hist)-1])图上面代码的代码输出
3 为什么这很重要这解决了两个问题上下文膨胀。
长对话会吃掉你的上下文窗口。
如果你在一个你现在理解的部分花了10轮修剪这些交换并为主题重新获得token。
-上下文污染。
如果AI误解了某事而你纠正了它错误的解释仍然存在于历史中可能会混淆后面的回应。
删除它给你一个干净的状态。
进一步付费LLM选项本地模型非常适合隐私和成本但有时你需要更强的火力。
更长的论文、更密集的数学或多步推理任务可以从更大的模型如Claude或GPT-4o中受益。
好消息是lisette在底层使用litellm所以切换提供商是一行更改。
对于云提供商你需要API密钥。
将它们设置为环境变量或使用.env文件import os from dotenv import load_dotenv load_dotenv() # Claude (Anthropic) chat Chat(modelanthropic/claude-haiku-
, spsystem_prompt) ask(chat, Help me understand paper)图上面代码的代码输出正如你可以看到的工作流程保持相同。
你的系统提示、对话历史和教学流程都跨提供商转移。
关键要点阅读技术论文曾经是一种孤独的苦差事。
你要么有背景来解析符号要么没有。
AI改变了这个等式。
这是我希望你带走的东西技术内容的障碍已经下降。
对这篇论文有效的工作流程对教科书、API文档、密集的博客文章或任何需要概念在你水平上解释的内容都有效。
AI适应你。
你控制节奏和深度。
与假设固定受众的课程或教程不同这种方法让你跳过你知道的东西停留在让你困惑的东西上。
你的学习路径而不是别人的课程。
本地LLM使这几乎免费。
Ollama加上一个有能力开源模型意味着你可以整天阅读论文而无需API成本。
你可以尝试使用相同方法阅读书籍、YT转录稿、头脑风暴。
一个工具多种用途。
系统提示是杠杆。
通用提示给出通用结果。
我们构建的导师提示迫使AI进入真正有帮助的教学模式。
偷走它调整它使其成为你自己的。
从你真正关心的论文开始。
不要在无聊的东西上练习。
选择与你的工作相关的论文或你一直想理解的概念。
动机带你通过设置摩擦。
工具存在。
成本是最小的。
唯一的问题是你将先读哪篇论文。
原文链接构建一个论文学习AI助手 - 汇智网