首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >文献问答工具里的 RAG,到底在干什么?

文献问答工具里的 RAG,到底在干什么?

原创
作者头像
晚秋序
修改于 2026-11-10 22:21:38
修改于 2026-11-10 22:21:38
260
举报

现在不少论文阅读和文献问答工具,用起来很像在跟一个“读过很多论文的助手”聊天:你问一个问题,它给出一段解释,有时还能标出出处。这容易让人以为,大模型已经把整个文献库装进脑子里了。

真正的关键通常不是“模型全记住了”,而是一套叫 RAG 的结构。RAG 是 Retrieval-Augmented Generation 的缩写,由 Lewis 等人在 2020 年的工作中提出。它的核心就一句:先把可能相关的文本片段找出来,再让模型根据这些片段生成答案。

可以把它想成开卷考试,而不是闭卷背诵。闭卷时,模型只能靠训练时见过的统计规律往下写,年代一久、细节一具体,就容易写错,甚至编出看起来很像那么回事的出处。开卷时,系统先去书库里抽出几页,再允许模型“看着这些页写”。模型仍然在写句子,但它的材料来自检索结果,而不是只靠记忆。文献工具特别需要这套办法,因为论文数量极大、新文章每天都在增加,任何模型的训练截止时间都追不上最新文献;把所有全文塞进一次对话的上下文,也并不现实。

一套常见的文献 RAG 流程,看起来大概是这样:

代码语言:txt
复制
用户问题
↓
把问题变成检索请求(关键词,或向量)
↓
从论文库里找出若干相关片段
↓
可选:再排一次序,去掉明显不相关的
↓
把片段和问题一起交给大模型
↓
生成带出处的回答

落地时,工程上通常会先把论文切成小段,也就是分块(chunk)。一篇论文太长,既不适合一次性塞进上下文,也不适合整篇和一个短问题比相似度。常见做法是按段落或固定长度切开,相邻块之间留一点重叠,免得一句话被拦腰截断。科学论文还有自己的结构:引言、方法、结果、讨论往往分散在不同小节。如果切块只按字数一刀切,方法里的设定和结果里的数字就可能被拆开,后面检索到一半、漏掉一半。

切好之后,系统会用嵌入模型把每块变成向量,存进向量数据库;同时也可以保留关键词索引,例如经典的 BM25。两者解决的问题不一样。关键词检索擅长抓住论文里的专有名词、基因名、方法缩写;向量检索更擅长抓住换了一种说法的相近意思。比如有人问“如何稳定微调”,库里写的是“training with a smaller learning rate”,词面不一定重合,语义上却可能接近。许多实用系统会把两种结果混合,再视情况用更重的模型做一次重排序。只靠“语义相似”,并不等于“就是你要的那篇证据”。

用户提问时,问题也会被编码成向量,去库里找最相近的若干块。随后这些块被拼进提示词,大意是:请根据下面这些文献片段回答,并标出来源;如果片段里没有依据,就不要编。

下面这段伪代码,对应的就是“先检索,再生成”,而不是“直接让模型凭印象作答”:

代码语言:python
复制
# 伪代码:文献问答里的 RAG 主路径
q_vec = embed(question)
hits = index.search(q_vec, k=5)          # 先找相近片段
context = "\n\n".join(
    f"{h.text}\n(来源:{h.paper_id})" for h in hits
)
prompt = (
    "请仅根据下列文献片段回答问题;"
    "没有依据时请明确说不知道。\n\n"
    f"{context}\n\n问题:{question}"
)
answer = llm.generate(prompt)

理解了这条路径,也就能看清它的边界。RAG 降低的是“完全凭记忆编造”的机会,并不能保证答案正确。如果切块切坏了,检索就可能只拿到半截意思。如果召回的只是词面接近的评论性段落,真正相关的实验细节却没被取到,模型也只能在错的材料上写得头头是道。就算片段是对的,模型仍可能漏读、拼错,或把两篇不同论文的结论叠在一起。图表、公式、补充材料,常常不像正文那样容易被索引。库没有更新时,它更不可能“知道”最新发表的工作。还有一个很实际的限制:一次只能放进有限的片段,相关证据若排在后面,生成时等于没看见。

所以,评判这类工具,不必先问“它是不是已经读完了所有论文”,更该问三件更工程化的事:它检索到的是不是该看的那些段落?答案里的每一句,能不能回到具体出处?出处打开后,是不是真写了那句话?如果你自己做类似功能,也可以先把评估拆开:检索有没有把真正相关的段落找出来,和最终答案写得漂不漂亮,是两件事。只看回答是否流畅,很容易把一次失败的检索,误判成一次成功的生成。

把这三问问完,你才是在用开卷考试的方式检查它,而不是把它当成一台不会错的文献机器。

更多科研科普笔记:https://www.crushsci.com

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档