利用私人大语言模型撰写本科历史论文的心得体会 [译]

简而言之

我使用了私有和公开的大语言模型 (LLM) 来回答一个我在大约 30 年前花费了一个星期时间研究的本科论文问题。目的是探究在这些年里,使用这些工具是否会改变我的学习体验。我设定了两个原则:

  • 不去翻看我当年的原始论文,
  • 除了寻找参考文献,不阅读任何推荐的资料。

结果发现,这次借助 AI 的体验在某些方面与以往大相径庭,而在其他方面则有所相似。

如果你不太关心我的个人经历和繁琐的细节,可以直接跳到文章末尾,看看我有哪些收获

背景

虽然我目前从事软件开发,但曾有段时间我梦想成为记者。为此,我在牛津大学攻读历史学位。1994 年我步入学术殿堂,那是一个移动电话尚未普及、互联网还处于萌芽阶段的时代。那时,“计算机室”还在与图书馆旁的斯诺克桌争夺空间(遗憾的是,几年后斯诺克桌被移除了)。我们宿舍里甚至没有电话,与同学交流要么亲自见面,要么通过学校内部的“鸽子邮”(一种校内信件传递系统)。

我的大学生活与 1964 年的历史系学生颇为相似:每周五的辅导课上,我会收到下周论文的题目和阅读材料清单:

这是 1996 年的一份典型历史论文阅读清单。我在清单顶部的注释是关于图书馆参考信息的,而底部那些即使现在我也难以辨认的笔记,可能是我在导师讲解我应该如何撰写论文时所做的记录。
这是 1996 年的一份典型历史论文阅读清单。我在清单顶部的注释是关于图书馆参考信息的,而底部那些即使现在我也难以辨认的笔记,可能是我在导师讲解我应该如何撰写论文时所做的记录。

那天下午,我会走访几家图书馆,希望其他修读同一模块的学生尚未借走清单上的书籍。接下来的一周里,我会尽量抽出时间在繁忙的生活中(包括品尝廉价难喝的红酒、感受抑郁情绪、以及忍受牛津这个建在沼泽地上的城市带来的持续感冒)阅读和做笔记。

论文通常会在交付前一天匆忙完成,这个过程包括了大量的拖延行为(我记得在我的康柏笔记本电脑上玩着纸牌游戏和扫雷),以及从我的笔记中提炼思想的艰难过程。

我不参加讲座,因为它们下午开始的时间对我来说太早了,让我难以从床上爬起来。

1996 年的论文,2023 年重写,这次搭载更多晶体管

我选择回答的论文题目来自一个涵盖 19 至 20 世纪的通用英国历史课程:

新自由主义相比于旧自由主义有何重大变革?

ChatGPT 3

我首先使用了 ChatGPT(3 版,免费版 - 因为我是个穷学生)来对这个主题进行初步了解:

此时,我对该主题已有了基本的认识,知道了撰写一篇合格论文所需涉及的大致内容。ChatGPT 非常擅长进行这类概述和总结,但要指望它写出一篇符合本科水平的论文则略显力不从心。它能写出一篇勉强合格的论文,但显然能看出是由大语言模型 (LLM) 写成的,可能最高也只能获得及格或稍高一点的成绩,因为其论述过于泛泛且缺乏深度和说服力。

接下来几分钟,我与 ChatGPT 进行了更多的交流:

通过这些交流,我已经准备好搜集撰写论文所需的信息了。

收集资料

首先我需要搜集资料。我耗费了几小时时间,通过各种途径寻找所有必要的文本,并将它们转换为纯文本(plain text)格式。遗憾的是,我无法获取到一些期刊文章,因为它们被学术付费墙所限制。这些期刊文章通常能够帮助理解这个问题背后的学术讨论,所以它们的缺失确实令人遗憾。

总共收集到的数据约为 10M:

756K high_and_low_politics_in_modern_britain_bentley.txt
1.3M lancashire_and_the_new_liberalism.txt
904K liberalism_and_sociology_collini.txt
1012K liberals_and_social_democrats.txt
812K liberals_radicals_and_social_politics_emy.txt
684K new_liberalism_allett.txt
1.5M our_partnership__beatrice_webb.txt
556K the_age_of_lloyd_george_kenneth_o_morgan.txt
708K the_new_liberalism_freeden.txt
540K the_new_liberalism_weiler.txt
148K the_origins_of_the_liberal_welfare_reforms_hay.txt
1.1M unemployment_a_problem_of_industry_beveridge.txt

如果将来我再写论文,这个搜集过程的时间可以显著缩短。因为我已经摸清了获取这些资料的途径,并且安装了提取纯文本的软件。所以,现在我预计获取大部分文本只需一个小时,而不是像 30 年前那样,在实体图书馆中花费大量时间只为寻找少数几篇文献。

PrivateGPT

ChatGPT 的一个显著限制在于,它无法告诉你生成回答时参考了哪些相关资料。

我发现这个 repo 能够快速地让大语言模型 (LLM) 结合一系列文档,于是我在一台配备 24 核心和 128G RAM 的老式戴尔 Xeon 桌面电脑上进行了安装。这台电脑我两年前花了约 600 英镑购买,至今依然运行良好(最初购买目的是搭建 Kubernetes 集群)。它没有配备图形卡,不过对于这种工作,仅用普通的 CPU 也能够胜任,只要不期望瞬时响应。

$ python3 ingest.py
Appending to existing vectorstore at db
Using embedded DuckDB with persistence: data will be stored in: db
Loading documents from source_documents
Loading new documents: 100%|███████████████████| 12/12 [00:00<00:00, 274.84it/s]
Loaded 12 new documents from source_documents
Split into 38046 chunks of text (max. 350 tokens each)
Creating embeddings. May take some minutes…
Ingestion complete! You can now run privateGPT.py to query your documents

整合这 1000 万份文献资料大约用了五分钟。我进行了几次询问,以下是一个典型的回答示例:

问题: 新自由主义与旧自由主义中国家角色的变化是什么

回答(耗时 169.94 秒): 新旧自由主义的主要区别在于它们对政府在社会中的角色认识上的不同。传统或‘旧’自由主义者认为减少国家干预能带来更繁荣的经济,而‘新’自由主义者则认为国家行动和社会改革是应对工业贫困的必要措施。简而言之,新自由主义代表了自由主义者在接受政府在通过干预政策促进社会福祉方面的责任上的思想转变。

source_documents/the_age_of_lloyd_george_kenneth_o_morgan.txt: 因此,是旧自由主义帮助了党的复苏 - 对于非国教徒和工业自由贸易的坚持,这是自由党半个世纪以来的核心信念。然而,能够对中央政府持更积极态度的‘新自由主义’在哪里呢?众多人对此进行了探讨。

source_documents/the_new_liberalism_weiler.txt: 新自由主义(New Liberalism)这个术语在最广泛的意义上,既指 1906 年至 1914 年行政时期的福利立法,也指自由主义在社会和政治理论上的演变。不过,在当时,这个术语最初指的是先于自由党政府立法成就的理论变革。

source_documents/the_new_liberalism_weiler.txt: 那么,新自由主义(New Liberalism)究竟是什么?如本文所定义,它是自由主义意识形态从中维多利亚时代的非干预理念,转变为基于国家行动和社会改革来解决工业贫困问题的哲学。这一转变是由自由主义记者和理论家们通过不懈努力实现的。

source_documents/the_new_liberalism_weiler.txt: 这一转变体现在国家的发展上,代表了新自由主义(New Liberalism)理念的成熟。

新自由主义 J.A. 霍布森的政治经济学

多伦多大学出版社 Toronto Buffalo London

Toronto Buffalo London 加拿大印刷 ISBN 0-8020-5558-3

source_documents/the_new_liberalism_weiler.txt: 对新自由主义(New Liberalism)现象本身的深入理解。

source_documents/the_new_liberalism_freeden.txt: 新自由主义(New Liberalism)的社会政策

你可以看到,输出的质量参差不齐(我使用的模型相对较小,详见下方的 Ollama 部分),但它确实指引我找到了相关的引用来源和我可能稍后使用的文本片段。我又花费了大约一个小时在这些文本中寻找和收集可能稍后使用的片段。请注意响应时间(大约三分钟是典型的)。由于对响应时间与质量的不满,我开始寻找其他技术手段。

Ollama (和 Llama2:70b)

这个技术组合令我大为震撼,彻底改变了这一领域的工作方式。Ollama 是一个专门设计用来在本地快速启动大语言模型(Large Language Model)的项目,它借鉴了 Docker 的一些概念,比如 Modelfile(类似于 Dockerfile)和 ollama get/pull/list 等命令。

相较于 ChatGPT 的输出,拥有 70b 参数的 Llama2 模型(Llama2:70b)帮我自动完成了撰写论文的大部分工作,把写论文的时间从几天缩短到不到一天。

我下载了我能找到的最大模型 Llama2:70b,并向它提出了一个非常宽泛的问题。它给出的论文计划远胜于 ChatGPT:

这时,我开始写论文的主体(通常把引言和结论放在最后),每个段落都围绕着上面的编号点展开。在写作的过程中,我查阅了特定文献来寻找引用,并向大语言模型提问,这时出现了一个意外:我开始深入了解这场辩论的各种细节(主要是通过研究我 90 年代找不到的 Collini 的书籍)。

我不禁被吸引去实际阅读这些文献,然而我得提醒自己,按照我此次“游戏”的规则,这是不允许的。

这种对于哪些文献重要以及我应该写些什么的认识比起互联网出现之前要来得更迅速。我真的很好奇,如今的学生们是如何做到这一点的(如果你知道,请告诉我!)。

虚构回答

大语言模型 (LLMs) 最著名的局限之一是它们倾向于创造“幻觉”,或者说是虚构一个表面上合理的答案。我确实遇到过这种情况,它让我浪费了不少时间。Llama2 给出的这个引人注目的引用就让我起了疑心,因为它看起来太完美,以至于我感觉不太可能是真的:

证据:在韦伯的著作《工业民主》(1902) 中,他认为解决延续贫困和不公的系统性问题,必要条件就是对生产手段拥有集体所有权和控制权。他写到,"确保工业民主的唯一途径便是通过集体拥有和控制生产手段。"

但我在书中怎么也找不到这个引用。Llama2 完全是凭空想象的。

我的收获

在完成我那篇AI 辅助的论文之后,我重温了我 1996 年的原始论文。出乎意料的是,这篇老论文的长度远超过我记忆中的普通论文长度(约 2500 字,而 AI 辅助的论文只有 1300 字),而且质量,在我看来,也明显胜过 AI 辅助的那篇。 这可能是因为它是我大学最后一年撰写的,那时我的论文写作技巧达到了顶峰。

撰写 AI 辅助论文大约花费了我六个小时(分散在四天内)。而原来的论文让我投入了整整一个星期,如果计算实际进行研究和写作的时间,至少也有 20 小时,最多可达 30 小时。

我认为,即便是把我的论文长度增加一倍以与旧作相媲美,内容质量也不会受到影响。但如果不亲自阅读那些资料,我认为我的提升将会有限。

我从中学到了几点:

  • 努力学习是无可替代的。 我自设的规则是不直接阅读原文,这限制了论文质量的提升,AI 是无法完全弥补这一点的。
  • 现在的历史专业学生利用 AI 应该能比我当年更高效! 我好奇如今的论文是否普遍比过去更长。
  • 专用的大语言模型(我用的是 llama2:70b)在这类工作上可能比 ChatGPT3.5 更有优势,它不仅在生成回答的质量上更胜一筹,还在于识别相关文本段落的能力。
  • 如果我进一步整合 llama2:70b 模型和我已有的引用生成代码,可能会大大缩短所需时间。 这方面还需要更多的研究。

希望你喜欢这次我对往昔的回顾。我已不再从事人文学科研究,但我相信,大语言模型(LLMs)正如互联网一样,对这一领域产生了根本性的影响。如果你现在正在这个领域内,并且愿意分享你如何利用 AI 的经验,请与我取得联系。

关于这篇论文以及与大语言模型(LLMs)的多种互动,你可以在这个 git 仓库找到:这里