想象一位知识渊博却偶尔记混细节的学霸要参加一场开卷考试。他面前摆着一本厚厚的教材,里面是运营手册、产品文档、历史工单——但他并不盲目抄书,而是先快速翻找与题目相关的章节,然后用自己漂亮的文笔,把查到的素材组织成一段通顺、精确的答案。这个“先翻书、再写答案”的过程,就是生成式问答系统(Generative QA)的核心灵魂。大模型就像那位学霸,知识库像教材,检索环节像翻书,而答案的每个字,都是模型基于查到的资料“现场写出来”的。这种让大模型先查证再作答的技术,叫检索增强生成(RAG),它让AI助手既能答得流畅,又能答得有据可依、不会凭空编造。本文将带你从零搭建这套系统,理解它的每个零件是怎么协同工作的。

岗位关联

掌握生成式QA与RAG是构建企业级智能助手、知识库问答系统的核心技能,是NLP工程师从“调API”走向“做系统”的关键一跃。

目录
  1. 可视化演示
  2. 生成式问答基础
  3. 检索增强原理
  4. 提示词工程
  5. 答案生成
  6. 事实控制
  7. 评估优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过RAG问答架构、答案生成流程和事实性控制机制三个维度,动态展示检索增强生成的完整管线、上下文融合生成过程与答案可信度保障策略。

本节配有交互动效(进入视口后自动加载,约 3KB)。

RAG检索增强生成架构 查询→检索→增强→生成 知识库+LLM双驱动 Query→Retrieve→Augment→Generate

生成式问答基础

把大模型想象成一位知识渊博的学霸。传统检索式问答系统像一个只会翻目录的学生——他从题库里找到最相似的现成答案,原封不动地抄给你。而生成式问答则是开卷作文考试:学霸读懂题目后,结合翻到的资料,用自己的话组织出一段全新的文字。“生成”这个词的精髓就在于此——答案是写出来的,不是抄出来的。

这位“学霸”之所以能写,靠的是对语言的概率建模。大模型在训练时读过海量文本,学会了下意识预测“下一个词最可能是什么”。你说“今天天气”,他心里会盘算“很好”“不错”“晴朗”等候选词各有多大概率。生成式问答的本质,就是不断预测下一个词,再一个词一个词地拼接出完整答案。

在数学上,模型会把所有候选词的概率算出来,挑选一个输出;然后接着预测下一个词。整段答案出现的概率,等于每个词在给定前文条件下出现概率的乘积。这就是自回归语言模型的核心思想。

回到学霸身上,他每写一个词,都会回看已经写出的句子,盘算“接下来怎么接最通顺”。因为开卷考试允许翻书,他还可以随时确认自己没记错。把“组织语言”交给大模型的同时,把“查阅资料”这件容易出错的事,交给接下来要讲的检索环节——这就是RAG登场的理由。

P(w1,…,wn)=∏i=1nP(wi∣w1,…,wi−1)\displaystyle P(w_1,\dots,w_n)=\prod_{i=1}^{n}P(w_i|w_1,\dots,w_{i-1})
整句话的生成概率,等于每个词按顺序出现概率的连乘。每个词都只依赖它前面已经写出的词。
  1. 序列表示$w_1$ 到 $w_n$ 表示答案中的 n 个词,按顺序排列。
    w1,…,wnw_1,\dots,w_n
  2. 条件概率$P(w_i|w_1,\dots,w_{i-1})$ 表示已知前面所有词时,下一个词出现的概率。
    P(wi∣w1,…,wi−1)P(w_i|w_1,\dots,w_{i-1})
  3. 连乘算子$\prod$ 把每个位置的预测概率相乘,句子越长,总概率越小。
    ∏i=1n\prod_{i=1}^{n}

检索增强原理

学霸开卷考试不是瞎翻书。他会先看目录,锁定与题目相关的章节,快速翻到那一页,把关键段落折个角,然后才开始作答。检索增强生成(RAG)把这套动作搬进了AI系统:大模型在回答前,先从外部知识库检索与问题相关的文档片段,把片段拼进提示词,再让模型基于“查到的内容”生成答案。

为什么非要检索?大模型的“记忆”有截止日期,还可能记错。企业内部的规章制度、产品文档,模型根本没读过。RAG相当于给模型配了一本永不遗忘、随时更新的“活教材”:知识库独立维护,每次答题前实时查证,既让新知识可用,又大大降低了凭空编造的风险。

RAG的完整链路分三步:离线建索引、在线检索、生成。离线预处理时,长文档被切成小块并向量化;在线检索时,用户问题同样向量化,然后与所有文档块计算相似度,取出最相关的TopK块;最后把这些块注入提示词。判断两个文本“像不像”(即语义相近程度)要用到向量间的夹角关系,也就是余弦相似度公式。

学霸在考场上的“翻书”动作被RAG拆解得明明白白:查目录对应“向量化索引”,翻页对应“相似度排序”,折角标记对应“截取TopK片段”。这套流程让AI的回答不再是凭空想象,而是有出处、可溯源的。

cos⁡(q,d)=q⋅d∥q∥ ∥d∥\displaystyle \cos(\mathbf{q},\mathbf{d})=\frac{\mathbf{q}\cdot\mathbf{d}}{\|\mathbf{q}\|\,\|\mathbf{d}\|}
余弦相似度衡量两个文本向量方向上的接近程度,数值越接近1,说明语义越相似;为0则毫不相关。它的好处是不受文本长度影响,只关注“方向”是否一致。
  1. 文本向量$\mathbf{q}$ 是用户问题的向量表示,$\mathbf{d}$ 是文档片段的向量表示。
    q,d\mathbf{q},\mathbf{d}
  2. 点积分子 $\mathbf{q}\cdot\mathbf{d}$ 把两个向量对应维度相乘后求和,衡量各维度上的同向程度。
    q⋅d\mathbf{q}\cdot\mathbf{d}
  3. 模长归一化分母 $\|\mathbf{q}\|\,\|\mathbf{d}\|$ 是两个向量长度的乘积,消除文本长短对分数的影响。
    ∥q∥ ∥d∥\|\mathbf{q}\|\,\|\mathbf{d}\|
  4. 余弦值结果落在 $[-1,1]$,越接近1表示两个文本语义越接近。
    cos⁡(q,d)∈[−1,1]\cos(\mathbf{q},\mathbf{d})\in[-1,1]

提示词工程

同一个学霸,你用不同方式问,得到的答案质量天差地别。你问“这个系统怎么用”,他可能泛泛而谈;但你说“请根据以下操作手册,用三步说明新人如何开通账号”,他立刻给出精准的步骤。提示词工程,就是研究如何正确向大模型提问和下达指令。

在RAG场景里,提示词扮演着“答卷要求”的角色。一份合格的提示词会明确规定:只能依据提供的参考资料回答、不知道就直说不要编造、答案控制在规定字数内、必要时列出引用来源。模型收到的上下文越清晰,生成的内容就越可控。

从技术底层看,提示词中的每个字都会影响模型对“下一个词”概率分布的判断。模型内部先给每个候选词打出原始分数(logits),再通过softmax把分数转换成概率。其中有一个关键旋钮——温度T,它控制概率分布的“陡峭”程度:T越大,分布越平缓,随机性越强;T越小,分布越尖锐,输出越确定。

如果说知识库是学霸的教材,提示词就是考卷上的“答题要求”。把要求写清楚、把裁判规则亮出来,模型才有章可循。提示词工程看似只是“会说话”,实则是人机协作的第一道闸门,直接决定了模型写出的答案质量上限。

P(wi)=exp⁡(zi/T)∑j=1Vexp⁡(zj/T)\displaystyle P(w_i)=\frac{\exp(z_i/T)}{\sum_{j=1}^{V}\exp(z_j/T)}
softmax把模型的原始打分转换成“哪个词更可能被选中”的概率。温度T则是这个转换里的“性格调节器”——低温让高分词更突出,高温让所有词机会更均等。
  1. 原始得分$z_i$ 是模型给第 $i$ 个候选词的原始分数(logit),分数越高,词越受“青睐”。
    ziz_i
  2. 指数与温度$\exp(z_i/T)$ 将分数放大或压缩;T越大,指数差距越小,分布越平缓。
    exp⁡(zi/T)\exp(z_i/T)
  3. 归一化分母$\sum_{j=1}^{V}\exp(z_j/T)$ 对所有候选词求和,把分子变成 0 到 1 之间的概率。
    ∑j=1Vexp⁡(zj/T)\sum_{j=1}^{V}\exp(z_j/T)
  4. 概率值$P(w_i)$ 是模型选择第 $i$ 个词的概率,直接决定最终输出时每个词的被选权重。
    P(wi)P(w_i)

答案生成

学霸提笔作答时,面对的是一连串选择题:每写一个词,都要从无数候选词里挑一个。AI的“写作过程”同样如此。模型每步算出所有候选词的概率分布,然后按某种“决策策略”选词。这个决策策略,就是解码策略。

最简单的策略是贪婪解码:每次都选概率最大的词,缺点是容易啰嗦重复、缺少惊喜。更聪明的是束搜索(Beam Search):每一步同时保留概率最高的K条候选序列,等走到句尾,再挑总得分最高的一条。还有采样解码:按概率分布随机选词,让生成内容更丰富多变。问答场景通常偏好确定性,所以常用束搜索或低温度采样。

束搜索的得分计算方式是:对序列中每个词的对数概率取平均,用长度归一化避免模型一味偏好短句。工程实践中,多数问答系统默认把温度设在 0.1~0.3 之间,保证答案稳定可靠。

学霸写完一段话会习惯通读一遍;束搜索就像“多路草稿PK”——同时写K个版本,最后选最通顺连贯的那个。温度则是学霸的“灵感系数”:灵感泛滥(T高)时天马行空,灵感收束(T低)时严谨保守。问答系统需要稳定可靠,所以一般让学霸收敛一些,只在创意写作时才放松温度。

S(w)=1n∑i=1nlog⁡P(wi∣w1,…,wi−1)\displaystyle S(\mathbf{w})=\frac{1}{n}\sum_{i=1}^{n}\log P(w_i|w_1,\dots,w_{i-1})
一条候选答案的得分,是它每个词对数概率的平均值。对数把小于1的概率变成负数,所以得分越高,说明这句话整体越“像人话”。
  1. 平均得分$S(\mathbf{w})$ 是整条序列 $\mathbf{w}$ 的综合得分,用于候选答案互相比拼。
    S(w)S(\mathbf{w})
  2. 对数概率$\log P(w_i|\dots)$ 将概率取对数,概率越小数值越负,从而放大“意外词”的惩罚。
    log⁡P(wi∣w1,…,wi−1)\log P(w_i|w_1,\dots,w_{i-1})
  3. 长度归一化$\frac{1}{n}\sum_{i=1}^{n}$ 对 n 个词取平均,消除句子长度影响,让长短不一的候选公平比较。
    1n∑i=1n\frac{1}{n}\sum_{i=1}^{n}

事实控制

学霸最可怕的地方,不是不会做题,而是不会做的题也能一本正经地胡写。大模型同样如此——它可能用非常流畅、自信的语气,讲出完全不存在的事情。这在业界被称为幻觉(hallucination)。事实控制的目标,就是给模型的“自信”装上刹车。

为什么模型会幻觉?因为它本质上是个“续写机器”,只学会了“读起来像真的”,并不真正区分事实与虚构。当训练数据不足、问题超出知识边界、或检索到的上下文不充分时,模型就会放飞自我,用最高概率的“套路话”补齐答案——就像学霸遇到不会的题,硬着头皮也要把卷子写满。

实践中控制幻觉有三种常用手段。首先是RAG本身——把“答案材料”直接摆到模型眼前,并要求“只依据材料回答”;其次是提示词约束——明确写“如果材料中没有,请在答案中说明你不知道”;再次是置信度评估——用困惑度(perplexity)衡量模型对生成内容的确定程度,困惑度过高时系统可自动转人工或拒绝回答。

困惑度就像学霸答题时的“犹豫程度”——真的会做的题下笔如飞(低困惑),不会硬编的题笔尖悬在空中半天(高困惑)。系统通过监控这种“犹豫信号”,能提前觉察模型正在编造,及时启用兜底策略:回答“我无法确认这个信息”,而不是让幻觉溜出去误导用户。

PPL=exp⁡(−1N∑i=1Nlog⁡P(wi∣w<i))\displaystyle PPL=\exp\left(-\frac{1}{N}\sum_{i=1}^{N}\log P(w_i|w_{<i})\right)
困惑度衡量模型对整个句子“有多意外”。模型越确定,PPL越低;越不确定(可能编造),PPL越高。它是幻觉检测的一座重要哨塔。
  1. 负对数似然$-\log P(w_i|w_{<i})$ 反映每个词被预测到的“意外程度”,越意外值越大。
    −log⁡P(wi∣w<i)-\log P(w_i|w_{<i})
  2. 平均运算$\frac{1}{N}\sum_{i=1}^{N}$ 对整句 N 个词的意外程度取平均,得到每个词的“平均意外”。
    1N∑i=1N\frac{1}{N}\sum_{i=1}^{N}
  3. 指数还原外层 $\exp(\cdot)$ 把负数平均值映射回正数,得到直观的困惑度值。
    exp⁡(−1N∑i=1Nlog⁡P(wi∣w<i))\exp\left(-\frac{1}{N}\sum_{i=1}^{N}\log P(w_i|w_{<i})\right)

评估优化

老师阅卷时,不会只看字好不好看,还会看内容对不对、有没有答到点子上。评估一个生成式QA系统也要多维度打分:答案通顺吗?事实准确吗?忠实于知识库吗?响应快不快?其中忠实度是RAG系统最特别的考核项——答案好不好,不能脱离“依据”孤立地看。

评估通常两条腿走路:客观指标自动算,主观质量靠人评。客观指标里,BLEU、ROUGE通过比对生成答案与参考答案的字面重叠衡量相似度;但开放生成场景下,字面重叠不等于语义正确。所以业界更强调“事实性指标”和人工评估:检查答案中的每条断言,能否在检索到的文档里找到出处。

查准率和查全率构成F1分数,可以衡量答案对标准答案的“覆盖程度”与“精确程度”。在RAG评估中,把答案切分成若干信息点,与标准答案比对:模型答中了多少(查全率),答出的信息里有多少是对的(查准率),两者综合成一个分数。

学霸每次模考后都要复盘错题;评估也是系统优化的起点。跑一轮全量测试、统计各维度得分、定位是检索没找到好材料、还是生成时没用好材料,再针对性调参。这套“考—评—改”循环,让RAG系统在一次次的迭代中越答越好。

Precision=TPTP+FP,Recall=TPTP+FN,F1=2⋅P⋅RP+R\displaystyle \text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN},\qquad F1=\frac{2\cdot P\cdot R}{P+R}
查准率看“答出的里面有多少是对的”,查全率看“该答的有多少答出来了”。F1是二者的调和平均,避免偏科。
  1. 真正例$TP$ 是答案中正确且被标准答案支持的信息点数量。
    TPTP
  2. 查准率$Precision=\frac{TP}{TP+FP}$ 衡量回答中“对的”占所有答出内容的比例。
    TPTP+FP\frac{TP}{TP+FP}
  3. 查全率$Recall=\frac{TP}{TP+FN}$ 衡量标准答案中的信息点被“答中”了多少。
    TPTP+FN\frac{TP}{TP+FN}
  4. F1调和平均$F1=\frac{2PR}{P+R}$ 综合两个指标,防止只看一个而偏科。
    2⋅P⋅RP+R\frac{2\cdot P\cdot R}{P+R}

AI 应用场景

企业智能客服:员工手册问答

阶段:在线推理问答

解决的问题:新员工询问人事制度时,传统搜索只能返回文档链接,找不到精确答案。RAG把数千页制度文档切块索引,用户提问后直接检索相关条款,生成带引用来源的精准回答。

具体案例:某互联网公司把2000页《员工手册》和《休假管理办法》录入知识库。员工提问“工作满一年年假几天”,系统检索到《休假管理办法》第四条,生成答案并附注条款编号,准确率从搜索式的62%提升到91%。

学术文献问答助手:论文知识库检索

阶段:知识库构建与在线检索

解决的问题:研究员要在上千篇论文中查找“对比学习温度参数如何设置”,传统手工翻阅极耗时间。RAG按语义检索相关段落,并生成带引用的要点综述。

具体案例:某科研团队将50篇对比学习论文PDF向量化,提问“SimCLR的温度参数如何影响效果”,系统检索到3篇关键论文的对应段落,生成了一段150字的要点总结,并标注了出处论文标题。

运维故障排查助手

阶段:故障问答闭环

解决的问题:一线运维遇到报错要翻工单、查手册,平均耗时20分钟。RAG对接历史工单和排障手册,提供即时、可追溯的排查建议。

具体案例:某云厂商将过去一年的故障工单和网络排障手册索引起来。报错“连接超时”出现时,系统检索到“网络超时处理”章节,给出“检查防火墙→验证端口→查看负载”三步方案,并附上历史相似工单链接,平均解决耗时降至5分钟。

Python 演示

python60 行
import mathimport refrom collections import Counter class SimpleRAG:    def __init__(self, docs):        self.docs = docs        self.vocab = self._build_vocab(docs)        self.tfidf = [self._tfidf(d) for d in docs]     def _build_vocab(self, docs):        vocab = set()        for d in docs:            vocab.update(self._tokenize(d))        return sorted(vocab)     def _tokenize(self, text):        return re.findall(r'[\u4e00-\u9fa5a-zA-Z]+', text.lower())     def _tfidf(self, text):        tokens = self._tokenize(text)        cnt = Counter(tokens)        vec = []        for w in self.vocab:            tf = cnt.get(w, 0) / max(len(tokens), 1)            df = sum(1 for d in self.docs if w in self._tokenize(d))            idf = math.log(len(self.docs) / (1 + df))            vec.append(tf * idf)        return vec     def _cosine(self, a, b):        dot = sum(x * y for x, y in zip(a, b))        na = math.sqrt(sum(x * x for x in a))        nb = math.sqrt(sum(y * y for y in b))        return dot / (na * nb + 1e-9)     def retrieve(self, query, k=2):        qvec = self._tfidf(query)        scores = [(i, self._cosine(qvec, v)) for i, v in enumerate(self.tfidf)]        scores.sort(key=lambda x: -x[1])        return [(self.docs[i], s) for i, s in scores[:k]]     def generate(self, query, k=2):        hits = self.retrieve(query, k)        if not hits:            return "抱歉,知识库中没有相关内容。"        context = "\n".join(doc for doc, _ in hits)        answer = f"根据知识库,回答「{query}」:\n{context[:120]}"        return answer if __name__ == "__main__":    docs = [        "生成式问答系统基于大语言模型生成自然语言答案",        "RAG检索增强生成在回答前先从知识库检索相关文档",        "幻觉是指模型生成了知识库中不存在的内容",        "提示词工程通过设计上下文引导模型输出",    ]    rag = SimpleRAG(docs)    q = "什么是RAG?"    print(rag.generate(q))
目的:演示RAG最小闭环——文档向量化、余弦检索、上下文注入三个核心步骤,不依赖外部大模型API即可运行。
  1. self.tfidf = [self._tfidf(d) for d in docs]离线阶段:把每个文档转成TF-IDF向量,构建可检索的知识库索引。
  2. def _cosine(self, a, b):实现余弦相似度,返回两个向量的方向接近程度。
  3. scores = [(i, self._cosine(qvec, v)) for i, v in enumerate(self.tfidf)]在线阶段:把用户问题向量与所有文档向量逐对算相似度。
  4. scores.sort(key=lambda x: -x[1])按相似度降序排列,选出最相关的文档排在前面。
  5. return [(self.docs[i], s) for i, s in scores[:k]]返回TopK个文档,这就是RAG中的“检索”输出。
  6. context = "\n".join(doc for doc, _ in hits)把检索结果拼成一段上下文,准备注入提示词。
  7. f"根据知识库,回答「{query}」:\n{context[:120]}"模板生成最终答案,实际生产中用大模型替代这里的模板拼接。

常见误区

误区我直接写一个很长的提示词,把所有文档都塞进去问模型,这不就是RAG吗?为什么还要切分、向量化、排序那么麻烦?

正解RAG的核心是“只取最相关的TopK片段”。把几百页文档无差别塞进提示词,模型会被海量无关信息淹没,注意力分散,答案准确率反而下降,推理成本还飙升。真正的RAG先做相关性检索,只把最相关的几段材料交给模型。

为何常见:在ChatGPT网页版手动复制粘贴文档很好用,让人觉得生产系统也可以“全塞进去”,忽略了上下文窗口和注意力机制的物理限制。

误区模型胡说八道是因为太“飘”,把温度调到0,每次都选最确定的词,应该就不会编造了吧?

正解温度控制的是概率分布的采样宽度,不是内容真实度。当模型根本不知道正确答案时,T=0反而会让它非常自信地输出“概率最高但仍错误”的内容。消除幻觉要靠RAG提供事实依据、提示词明确“不知道就说不知道”、以及困惑度阈值检测。

为何常见:直观上“更确定=更正确”,但模型的自信来自语言通顺度,与事实正确性是两回事。

误区我把身份、规则、几十条约束、五个示例全都写进提示词,模型总能面面俱到了吧?

正解上下文过长会稀释关键指令,模型注意力被无关细节分散,还可能“迷失在中间”。高效提示词应聚焦四要素:身份、规则、检索材料、输出格式。少而精的指令,远胜于冗长的说教。

为何常见:大模型支持长上下文,人们容易误以为“能装下”就“效果好”,忽略了注意力的有限分配。

误区ChatGPT连冷门知识都能答出来,训练数据里什么都有,为什么还要建知识库检索?

正解训练知识有截止时间、有噪声、有遗忘,企业内部资料模型更是从未见过。RAG的价值恰恰在于给模型接上实时、私域、可追溯的知识源,让答案“有据可查”,这是单纯靠模型记忆无法做到的。

为何常见:日常对话中模型表现博学,让人高估了它“记忆”的覆盖范围和可靠程度。

误区生成的答案读起来很流畅、很专业,这个系统肯定做得不错。

正解通顺只说明语言模型学得好,不代表事实正确。RAG系统必须同时评估检索命中率、答案忠实度、引用准确率。流畅是及格线,不是满分线;一个满嘴漂亮话却张冠李戴的系统,在生产环境是灾难。

为何常见:人天然被流畅的表达说服,“看着像回事”容易掩盖内容上的错误。

面试题

Q1. 生成式问答与传统检索式问答的核心区别是什么?

单选题 · easy

  • A.生成式从知识库检索结果
  • B.生成式直接复制库中答案
  • C.生成式用大模型组织语言← 正确答案
  • D.生成式不依赖任何知识库

答案:C。生成式的核心是“生成”——大模型逐词写出全新答案;检索式则从已有答案中选取最相似的复制。A描述的是检索式流程,B是检索式特点,D过于绝对,生成式仍可能依赖知识库(RAG)。

Q2. RAG的全称是什么?

单选题 · easy

  • A.检索增强生成技术← 正确答案
  • B.随机生成图算法
  • C.规则自动识别系统
  • D.循环注意力网络

答案:A。RAG = Retrieval-Augmented Generation,即“检索增强生成”。它在生成前先从外部知识库检索相关资料,再让模型基于资料作答,相当于给学霸一本可以随时翻阅的教材。其他三项均为干扰项。

Q3. RAG流程中“检索”环节通常发生在哪个阶段?

单选题 · mid

  • A.模型训练阶段之前
  • B.答案生成之前查库← 正确答案
  • C.答案生成之后整理
  • D.用户提问之前预取

答案:B。RAG的正确顺序是:用户提问→问题向量化→检索TopK文档→注入提示词→模型生成。检索发生在生成之前。训练阶段不需要检索(RAG不修改模型权重);提问之前预取不知道用户会问什么。

Q4. 温度参数T调高会产生什么效果?

单选题 · mid

  • A.输出结果更加确定
  • B.输出的多样性增加← 正确答案
  • C.检索速度大幅加快
  • D.知识库容量可增大

答案:B。T越高,softmax概率分布越平缓,原本概率较低的候选词也有机会被采样,输出更丰富多样。T越低越接近贪心选择。T影响的是采样的随机程度,与检索速度、知识库容量无关。

Q5. 模型幻觉问题本质上指的是什么?

单选题 · mid

  • A.模型回答速度变慢
  • B.模型生成不实内容← 正确答案
  • C.模型内存占用过高
  • D.模型无法处理中文

答案:B。幻觉指模型生成流畅但不符合事实的内容——“一本正经地胡说八道”。它源于模型只优化语言通顺度,不区分真假。速度、内存、语言能力都不是幻觉问题。

Q6. 检索时用余弦相似度衡量两个文本的什么属性?

单选题 · mid

  • A.文本字数的差异程度
  • B.词语出现频率的差值
  • C.语义向量的接近程度← 正确答案
  • D.语法结构的复杂程度

答案:C。文本被编码成向量后,余弦相似度计算两个向量夹角的余弦值,范围在-1到1之间,越接近1表示语义越接近。它已经通过模长归一化消除了文本长度的影响,也不关心语法复杂度。

Q7. 将温度参数设为T=0并进行采样时,模型会发生什么?

单选题 · extreme

  • A.输出结果变得完全随机
  • B.总是选概率最高的词← 正确答案
  • C.输出序列长度会变为零
  • D.生成速度提高大约一倍

答案:B。当T趋近于0时,softmax中exp(z/T)的差异被指数级放大,最高分对应项的概率趋近于1,其余项趋近于0,等价于贪婪解码。完全随机对应的是T→∞,序列不会变零长度,生成速度也不受影响。

Q8. 评价生成式问答系统,下列哪些维度合理?

多选题 · easy

  • A.答案是否通顺流畅← 正确答案
  • B.答案事实是否准确← 正确答案
  • C.答案是否忠实知识库← 正确答案
  • D.响应是否速度够快

答案:ABC。通顺(语言质量)、准确(事实性)、忠实(与知识库一致)是RAG系统的三大核心质量维度。响应速度属于工程性能指标,也可以关注,但本题问的是内容层面的“评价维度”,D与前三项不在同一维度上。

Q9. 一个完整的RAG问答流程通常包含哪些环节?

多选题 · hard

  • A.文档切分并建立向量索引← 正确答案
  • B.用户问题向量化检索← 正确答案
  • C.检索结果注入提示词← 正确答案
  • D.大模型生成最终答案← 正确答案

答案:ABCD。完整RAG链路是由离线索引(切分+向量化)、在线检索(问题向量化+相似度排序)、提示词组装(注入TopK片段)、生成(大模型作答)四步构成的闭环。四个选项正好对应这条链路的四个关键环节,缺一不可。

Q10. 关于提示词工程和RAG,下列说法正确的是哪几项?

多选题 · hard

  • A.提示词可引导模型使用检索内容← 正确答案
  • B.少样本示例能提升回答格式稳定性← 正确答案
  • C.RAG替代了提示词的全部作用
  • D.温度参数影响回答的随机程度← 正确答案

答案:ABD。A正确,提示词可写入“请依据下方材料回答”来引导模型使用检索结果;B正确,few-shot示例让模型模仿规定格式;C错误,RAG负责提供材料,提示词负责下指令,二者互补而非替代;D正确,温度参数直接影响采样随机性。