很多论文阅读和文献问答工具,用起来像在跟一个已经读完整片领域的助手聊天。你抛出一个问题,它用完整的句子回答,有时还标出出处。很容易让人产生一种印象:整个文献库都装在这个模型脑子里。
通常并不是这么回事。真正起作用的是一个叫检索增强生成(RAG)的模式,由刘易斯(Lewis)和同事在2020年提出。核心思路很简单:先找出可能相关的段落,再让模型基于这些段落写答案。
把它想成开卷考试,而不是闭卷背诵。闭卷时,模型只能沿着训练中见过的模式往下续写。一旦细节变得具体,或者论文比训练截止时间更新,它就开始编——包括编出看起来很像官方、实际并不存在的引用。开卷时,系统先从书架上抽出几页,再让模型看着这几页写。句子仍然是模型生成的,但原材料来自检索,而不是只靠记忆。
文献工具尤其需要这套机制。语料库巨大,新论文每天都在出现,任何训练截止时间都追不上。把每篇全文都塞进一个上下文窗口,也不现实。
一条典型的流水线
常见的文献RAG路径是这样的:用户提问,把问题转成检索请求(关键词、向量,或两者兼用),从论文集合中取回若干段落,可选地重排并丢掉明显不相关的,再把段落和问题一起送给模型,生成带出处的答案。
实际操作中,论文会先被切成块。一整篇文章太长,既没法作为一个单位做嵌入,也没法每次都塞进提示词。团队通常按段落或固定长度切分,并留一点重叠,免得一句话被拦腰截断。科学论文还有自己的结构:引言、方法、结果、讨论分布在不同章节。如果只按字符数切,方法的设定和与之对应的数字可能被分到不同的块里,检索就只找到一半意思,漏掉另一半。
切块之后,嵌入模型把每个段落变成向量,存进向量数据库。也可以同时保留关键词索引,比如BM25。两种方法抓到的东西不一样。关键词搜索擅长专有名词、基因符号和方法缩写;向量搜索在同一个意思被换种说法时更好用。有人问“怎么稳定微调”,论文里写的是“用更小的学习率训练”,字面不匹配,意思可能匹配。很多生产系统把两者混合,再用更重的模型做可选重排。“语义相似”不等于“这就是你需要的证据”。
用户提问时,问题同样被嵌入,系统取回最近的块,再把这些块打包进提示词,大意是:只根据下面的段落回答,标注出处,不要编造段落里没有的内容。
下面这段伪代码走的是“先检索再生成”的路径,而不是“让模型凭记忆回答”:
RAG不保证什么
看清这条路径,边界也就好找了。RAG降低的是模型凭记忆编造的概率,它不保证答案正确。块切得不好,检索可能只返回想法的一个碎片。系统如果取回一段关系不大的评论、却漏掉真正的实验细节,模型照样能就错误的材料写出流畅的答案。就算段落是对的,模型也可能漏掉一句话、把两篇论文混在一起,或者把某个数字说错。图表、公式和补充材料往往比正文更难建索引。索引一旦陈旧,工具就无法“知道”最后一次更新之后发表的成果。提示词里能放的段落数量有限,排在窗口之外一点的证据,等于不存在。
所以评估这类工具时,别从“它读过所有论文吗”开始。问更工程化的问题:它取回的段落,是不是你真正想读的那几段?答案里的每个说法能不能追溯到出处?打开那个出处,它真的这么说了吗?如果你自己在搭类似的东西,评估也要拆开:检索有没有找对段落,和最终答案听起来漂不漂亮,是两个问题。只给流畅度打分,一次失败的检索可能看起来像一次成功的生成。
拿这三个问题去查,你就是在按开卷考试的方式检查系统,而不是把它当成一台不会出错的文献引擎。
热门跟贴