想象你去医院看病。普通医生遇到“发烧”,就翻开病历库,搜出一堆“发烧”的病历,挑最像的照本宣科开药。这是“搜索式”问诊——病历相似就照搬,至于这些病历里的病人为什么好转、有没有同时输液、有没有自然痊愈(混杂因素),医生并不深究。这正是“检索增强生成(RAG)”的做法:大模型拿到问题,先在文档库里搜“看起来像”的段落,再拼进回答里。 而一位“因果医生”会多问几步:搜到病历后,先画一张“病因链条图”——哪个因素导致了发烧?有没有一只“看不见的手”同时推动了吃药和好转?如果当初没有吃药,结局会怎样?想清楚了,才落笔开方。因果RAG检索增强,就是给AI装上这套“病因思维”:检索文档时不只看表面相似,而是依据因果知识过滤、重排、反事实推演,最终生成更可信的回答。

岗位关联

对 AI 从业者而言,掌握因果RAG意味着从“会搜索的助手”升级为“懂因果的专家”。在医疗、风控、科研等高风险场景,因果RAG能显著提升回答的可信度与可解释性,是算法工程师和数据科学家拉开竞争力的关键技能。

目录
  1. 可视化演示
  2. 1. RAG基础:搜索式医生
  3. 2. 因果思维:观察与干预的分野
  4. 3. 整体架构:结构化问诊流程
  5. 4. 知识构建:画一张疾病因果地图
  6. 5. 检索策略:绕开混杂找证据
  7. 6. 生成机制:带着反事实开药方
  8. 7. 评估优化:衡量医生的真本事
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示传统RAG与因果RAG的检索对比:因果相关性判别剔除混杂偏差,反事实检索增强与去偏重排提升检索质量。

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

因果RAG检索对比 传统RAG:按相关性排序,混杂文档混入 混杂偏差:相关但非因果的文档被检索 因果RAG:因果相关性判别剔除混杂 Score_causal = Sim(q,d) × CausalRel(q,d) 因果过滤提升检索精度

1. RAG基础:搜索式医生

普通医生看“发烧”,就翻病历库找相似病历,照搬最像几份的治疗方案。这种“搜到啥就用啥”的方式,正是RAG的日常。RAG的全称是检索增强生成,当大模型不知道答案时,它不硬编,而是先从文档库里检索相关片段,再合成回答。这套流程让AI能借助外部知识回答最新、最具体的问题,而不是只靠头脑里的旧知识。

RAG分两半:一半是“检索模块”,把用户问题变成向量,在文档库里按相似度排名;另一半是“生成模块”,把检索到的文档当作临时参考资料,交给大模型写答案。检索模块最常用的打分方式是“余弦相似度”——问题 q 和文档 d 分别被编码成向量,相似度越高,文档就越靠前。

然而,“像不像”式检索有个隐患:相似不等于病因相同。两本发烧病历,一本是病毒感染,一本是药物副作用,搜索时都可能排在最前面。普通医生若不细究,就会开错药方。这正是因果RAG登场的理由。

sim(q,d)=q⋅d∥q∥∥d∥\displaystyle \mathrm{sim}(\mathbf{q}, \mathbf{d}) = \frac{\mathbf{q} \cdot \mathbf{d}}{\|\mathbf{q}\| \|\mathbf{d}\|}
这个公式衡量“问题”和“文档”长得像不像,就像医生判断两本病历的相似程度。但它只关心字面相似,不关心病因是否相同。
  1. 向量化把问题 q 和文档 d 分别表示成 n 维数值向量,让文本可以参与数学运算
    q∈Rn,d∈Rn\mathbf{q} \in \mathbb{R}^n,\quad \mathbf{d} \in \mathbb{R}^n
  2. 点积对应位置相乘后累加,得到两个向量的“重合程度”
    q⋅d=∑i=1nqidi\mathbf{q} \cdot \mathbf{d} = \sum_{i=1}^{n} q_i d_i
  3. 模长归一化除以两个向量的长度,把相似度限制在 [-1,1] 区间,方便统一排序
    ∥q∥=∑i=1nqi2,∥d∥=∑i=1ndi2\|\mathbf{q}\| = \sqrt{\sum_{i=1}^{n} q_i^2},\quad \|\mathbf{d}\| = \sqrt{\sum_{i=1}^{n} d_i^2}

2. 因果思维:观察与干预的分野

假设一位病人说“我吃了药A,烧退了”,你能证明药A退烧吗?不一定。他可能同时喝了大量热水,可能本来就处于康复期,这些都是“看不见的手”——统计学上叫混杂因素。它们让“吃药”和“退烧”看起来相关,即使药物本身毫无效果。这就是“相关不等于因果”的经典场景。

相关性用条件概率 P(Y|X) 描述:看到 X 时 Y 的分布。因果性要用干预算子 do(X=x) 描述:如果我们主动把 X 设为 x,Y 会发生什么。二者的区别,就是“观察”与“实验”的区别。在因果图语言里,P(Y|do(X=x)) 回答的是“如果我强行让所有病人吃药,退烧率会变成多少”;P(Y|X=x) 只是“吃药的人里退烧有多少”。

资深医生会追问:这个病人是不是同时用了其他疗法?有没有自愈倾向?这就是在做“去混杂”。只有看穿相关背后的因果结构,才能给出真正有效的诊断。因果RAG要做的第一件事,就是让AI拥有这层“去混杂”的警觉。

P(Y∣do(X=x))≠P(Y∣X=x)\displaystyle P(Y \mid \mathrm{do}(X = x)) \neq P(Y \mid X = x)
这个不等式提醒我们:观察到的“相关”可能被混杂因素污染,只有主动干预后的“效应”才是可靠的因果结论。就像医生不能只凭病人“吃了药又退了烧”就认定药有效。
  1. 条件概率在观察数据中,看到 X=x 的样本里,Y 的分布情况
    P(Y∣X=x)P(Y \mid X = x)
  2. 干预分布通过 do 算子把 X 强制设为 x,并切断外部对 X 的影响后,Y 的分布
    P(Y∣do(X=x))P(Y \mid \mathrm{do}(X = x))
  3. 不等性当存在混杂因素 Z 同时影响 X 和 Y 时,两者通常不相等
    P(Y∣do(X=x))≠P(Y∣X=x)P(Y \mid \mathrm{do}(X = x)) \neq P(Y \mid X = x)

3. 整体架构:结构化问诊流程

因果医生问诊,从来不只看一张化验单。他先听主诉(查询),让护士调取相关病历(初步检索),脑中画出病因链条(因果图),最后结合链条开方(生成)。因果RAG的架构,正是一次“结构化问诊”:先召回候选文档,再抽取因果结构,最后用因果证据增强生成。

整体流程可以拆成三个环节。第一环,初步检索:用普通相似度从文档库召回候选文档,相当于护士先按症状把可能的病历都拿过来。第二环,因果推理:从查询和文档中提取因果结构,得到一张因果图 G,标记出混杂因素、干预变量和结果变量。第三环,增强生成:把因果证据拼进提示词,让大模型在因果链条的约束下生成答案。

从形式上看,因果RAG生成答案的概率不再只依赖查询和文档,而是依赖查询与因果感知检索的结果:

这一架构让每一次回答都有“病历+病因链”双重支撑。普通医生只给结论,因果医生给出病历、链条和结论——这正是“增强”二字的含义。图谱越准,问诊越稳。

Pθ(y∣q,Rc(q,G))\displaystyle P_{\theta}(\mathbf{y} \mid \mathbf{q}, R_c(\mathbf{q}, G))
这个式子表示:最终答案由大模型 θ 在给定问题 q 和“因果感知检索函数 Rc”返回的证据下生成。多出来的一个参数 G(因果图),就是“病因思维”的载体。
  1. 因果图表示G 是从文档和查询中提炼出的因果知识,节点是变量,边是因果方向
    G=(V,E)G = (V, E)
  2. 因果感知检索函数 Rc 以查询 q 和因果图 G 为条件,选出 k 个最值得参考的文档
    Rc(q,G)={d1,d2,…,dk}R_c(\mathbf{q}, G) = \{d_1, d_2, \dots, d_k\}
  3. 条件生成大模型 θ 在给定查询和因果证据的条件下,生成答案 y 的概率
    Pθ(y∣q,Rc(q,G))P_{\theta}(\mathbf{y} \mid \mathbf{q}, R_c(\mathbf{q}, G))

4. 知识构建:画一张疾病因果地图

要让医生每次都能画出病因链,医院得先有一张“疾病因果地图”。这张地图不是凭空抄来的,而是从成千上万份病历和论文中提炼出来的。在因果RAG里,这件事叫“因果图谱构建”——把散落在文本里的因果知识,整理成结构化的有向图。

构建过程主要有三步。第一步,因果发现:从非结构化文本中识别“谁导致谁”,比如“吸烟→肺癌”“熬夜→免疫力下降”,通常以三元组(原因,方向,结果)的形式抽出。第二步,图谱表示:把三元组存入有向图 G=(V,E),节点是概念或变量,边是因果方向。第三步,知识融合:把新抽取的三元组与已有图谱对齐、去重、解决矛盾,避免同一对概念出现相反方向的边。

因果发现的一个重要武器是条件独立性检验:若给定 Z 后 X 与 Y 条件独立,则 X 与 Y 之间很可能没有直接的因果边。

这张地图越完整,医生看病就越准。但也别指望一劳永逸:医学在进步,图谱也需要不断更新——这正是知识融合存在的意义。因果RAG的“知识构建”就是持续给地图添砖加瓦的过程。

X⊥ ⁣ ⁣ ⁣⊥Y∣Z\displaystyle X \perp\!\!\!\perp Y \mid Z
意思是:把 Z 这个“中间人”按住之后,X 和 Y 就不再有关系了,说明 X 对 Y 的影响是经过 Z 传递的。因果发现算法正是靠这种“按住一个变量看其余变量”的思路来识别结构。
  1. 条件独立定义给定 Z 后,X 和 Y 的联合分布可以拆成各自分布之积,说明二者不再相关
    P(X,Y∣Z)=P(X∣Z) P(Y∣Z)P(X, Y \mid Z) = P(X \mid Z)\, P(Y \mid Z)
  2. d-分离若 Z 阻断了 X 到 Y 的所有路径,则称 X 与 Y 关于 Z d-分离
    X⊥ ⁣ ⁣ ⁣⊥Y∣ZX \perp\!\!\!\perp Y \mid Z
  3. 因果发现应用如果只有 W 能使 X 和 Y 独立,则说明因果链条很可能是 X→W→Y
    X⊥ ⁣ ⁣ ⁣⊥Y∣W  ⇒  X→W→YX \perp\!\!\!\perp Y \mid W \;\Rightarrow\; X \to W \to Y

5. 检索策略:绕开混杂找证据

地图在手,医生怎么用?他不会把“症状最像”的病历排在第一位,而是先看地图:哪些病历的病因链与当前病人吻合?哪些只是恰好有相似症状?检索的顺序,要从“像不像”变成“因不因”——这正是因果感知检索的核心思想。

因果感知检索通常分三步。第一,因果过滤:删掉与因果图相矛盾的文档,比如声称“吃药一定退烧”却完全忽略混杂因素的病历。第二,后门重排:按混杂变量分层,重新估计每篇文档的因果强度。第三,反事实排序:思考“如果没有这个因素,结论还成立吗”,把经受住反事实考验的文档排在前面。

后门调整是最经典的因果效应估计方法。若混杂变量 Z 满足后门准则,则干预效用可以由观测数据计算:

这一步相当于医生对每份病历做“双盲审视”:这病人退烧,是药物的功劳,还是因为他本来就会好?绕过混杂因素排序,检索到的证据才真正可用来下结论。

P(Y∣do(X=x))=∑zP(Y∣X=x,Z=z) P(Z=z)\displaystyle P(Y \mid \mathrm{do}(X = x)) = \sum_{z} P(Y \mid X = x, Z = z)\, P(Z = z)
这个公式把“混杂”问题转化为“分层加权”问题:先按 Z 的每个取值把病人分成小组,在每个小组内比较吃药与不吃药的效果,最后按小组人数占比加权平均。就像医生先按“是否同时输液”把病人分成两组,再分别评估药效。
  1. 混杂分层把全部样本按混杂变量 Z 的取值分成若干子群,每组内部 Z 固定
    组 z:X=x,  Z=z\text{组 } z: \quad X = x,\; Z = z
  2. 组内估计在每个子群内,用条件概率估计 X 对 Y 的效应
    P(Y∣X=x,Z=z)P(Y \mid X = x, Z = z)
  3. 加权汇总用 P(Z=z) 作为权重,把所有子群的估计值加权求和
    ∑zP(Y∣X=x,Z=z) P(Z=z)\sum_{z} P(Y \mid X = x, Z = z)\, P(Z = z)

6. 生成机制:带着反事实开药方

开药方时,普通医生可能照搬旧病历,因果医生则会做一次“如果当初”的推演:如果当时没吃这个药,病人会怎样?这种反事实想象,让药方不是模板,而是针对病因的定制方案。因果RAG的生成阶段,正是带着这种“反事实思维”来写答案。

生成阶段要做三件事。第一,干预约束:生成方向必须与因果图一致,比如只能写“因为 X 所以 Y”,不能颠倒因果。第二,反事实注入:把反事实推演的结果写成提示词,让模型看到“对照世界”的信息。第三,幻觉缓解:因果约束让模型无法随便编造不存在的关系,从而减少幻觉。

从技术上看,因果RAG的生成依然是自回归语言模型,只是每一步的条件里多了一组因果证据:

反事实推演让回答多了一层“对照组”。病人问“这药管不管用”,因果医生会说“有用,而且如果不吃,预期会差30%”——这就是因果增强后的回答质量。AI不再只是复述病历,而是能站在反事实的“平行世界”里给出判断。

Pθ(yt∣y<t,q,Rc(q,G))\displaystyle P_{\theta}(y_t \mid y_{<t}, \mathbf{q}, R_c(\mathbf{q}, G))
这个式子描述的是“逐字写答案”的过程:模型每写一个字,都要参考已经写过的内容、原始问题,以及因果检索提供的证据。因果证据就像医生手边的病因链笔记,让每一个词都落在因果逻辑框架内。
  1. 逐词生成第 t 个输出词 y_t 的分布依赖已经生成的前面所有词
    Pθ(yt∣y<t)P_{\theta}(y_t \mid y_{<t})
  2. 因果上下文因果感知检索返回的文档集合,作为额外的外部证据
    Rc(q,G)={d1,d2,…,dk}R_c(\mathbf{q}, G) = \{d_1, d_2, \dots, d_k\}
  3. 完整条件概率将因果证据与问题、前文拼接,作为每一步生成的条件
    Pθ(yt∣y<t,q,Rc(q,G))P_{\theta}(y_t \mid y_{<t}, \mathbf{q}, R_c(\mathbf{q}, G))

7. 评估优化:衡量医生的真本事

怎么衡量因果医生比普通医生强?不能只看看病快不快,还要看诊断是否命中病因。比如“如果不吃这个药,病情会怎样”的预测准不准。对每个病人逐一打分再求平均,就能得到医生的整体水平——这就是因果效应评估的思路。

因果RAG的评估,至少看三方面。第一,因果一致性:生成文本中的因果方向与知识图谱是否一致,这是区别于普通RAG的核心指标。第二,鲁棒性:图谱不完整、文档有噪声标签时,系统是否还能稳定工作。第三,计算开销:因果图构建与推理的成本,能否控制在工程可接受的范围内。

在个体层面,一个病人的因果效应可以用“潜在结果之差”来表示:

评估让我们知道“这位医生是否值得晋升”。因果RAG工程化的关键是:既要疗效好(因果一致),也要效率高(低成本),在真实数据永远不完美的前提下,做出可靠判断。这才是从demo走向生产的最后一公里。

ITEi=Yi(1)−Yi(0),ATE=E[Yi(1)−Yi(0)]\displaystyle \mathrm{ITE}_i = Y_i(1) - Y_i(0), \qquad \mathrm{ATE} = \mathbb{E}[Y_i(1) - Y_i(0)]
潜在结果是指“同一人在两种平行世界下的结局”:Y(1) 是吃了药的世界,Y(0) 是没吃药的世界。两者之差就是这个人专属的因果效应;把所有病人的差值求平均,就得到群体的平均效应。
  1. 潜在结果第 i 个病人在干预与不干预两种世界下的结局,记作两个值
    Yi(1),Yi(0)Y_i(1),\quad Y_i(0)
  2. 个体因果效应同一病人两种结局之差,表示干预对他个人的净影响
    ITEi=Yi(1)−Yi(0)\mathrm{ITE}_i = Y_i(1) - Y_i(0)
  3. 平均因果效应对所有病人取期望,得到群体的平均影响
    ATE=E[Yi(1)−Yi(0)]\mathrm{ATE} = \mathbb{E}[Y_i(1) - Y_i(0)]

AI 应用场景

医疗诊断辅助问答

阶段:知识构建 + 因果感知检索

解决的问题:医生提问“药物A能否降低血压”时,普通RAG会把“药物A与血压下降相关”的观察性研究排在前面,给出倾向性结论;因果RAG会依据“混杂因素→干预→结局”图谱重排证据,优先引用随机对照实验,输出严谨结论。

具体案例:某三甲医院的AI辅助决策系统,从历史病历中提取“用药→副作用→并发疾病”因果三元组构建图谱。检索时对“相关”与“因果”证据分别打标,医生能看到证据等级和混杂因素提醒。

信贷风控反事实问答

阶段:因果感知检索 + 增强生成

解决的问题:风控分析师问“提高新客户额度会增加坏账率吗”,普通RAG找到“高额度客户坏账率高”的报告,忽略“高额度客户收入更高”这一混杂;因果RAG按收入分层重排,输出“收入相近时额度提升对坏账影响不大”的反事实结论。

具体案例:某消费金融公司的风控问答机器人,构建收入、负债、信用分数等混杂节点,用后门调整重排内部研报,回答中附“已排除混杂因素影响”的因果说明。

Python 演示

python70 行
import math  class SimpleCausalRAG:    """极简因果RAG演示:医生看病比喻"""     def __init__(self):        # 病历文献库(关键词、是否提及混杂、是否含干预证据)        self.docs = {            'd1': {                'text': '服药志愿者血压下降,同期增加了休息。',                'keywords': ['药物A', '血压', '下降'],                'confounder': True,                'intervention': False            },            'd2': {                'text': '随机对照实验中,药物A组血压显著低于安慰剂组。',                'keywords': ['药物A', '血压', '下降'],                'confounder': False,                'intervention': True            },            'd3': {                'text': '观察性数据显示血压下降与睡眠质量有关。',                'keywords': ['血压', '下降', '睡眠'],                'confounder': True,                'intervention': False            }        }     def sim(self, query, keywords):        """问题与文档的关键词重合度相似度"""        q = set(query.split())        k = set(keywords)        if not k:            return 0.0        return len(q & k) / math.sqrt(len(q) * len(k))     def retrieve(self, query, top_k=2, use_causal=True):        """检索:普通相似度 或 因果增强重排"""        scored = []        for doc_id, doc in self.docs.items():            s = self.sim(query, doc['keywords'])            if use_causal:                # 后门调整:提及混杂则扣分,包含干预证据则加分                if doc['confounder']:                    s -= 0.3                if doc['intervention']:                    s += 0.5            scored.append((s, doc_id))        scored.sort(reverse=True)        return scored[:top_k]     def answer(self, query, use_causal=True):        """生成:模板式回答 + 反事实推演"""        hits = self.retrieve(query, use_causal=use_causal)        evidence = [self.docs[did]['text'] for _, did in hits]        head = '因果RAG结论:' if use_causal else '普通RAG结论:'        if use_causal:            counter = '反事实推演:若不干预,预期血压下降幅度显著减小。'        else:            counter = '提示:证据可能受混杂因素影响。'        return head + ';'.join(evidence) + '。' + counter  if __name__ == '__main__':    rag = SimpleCausalRAG()    query = '药物A 血压'    print(rag.answer(query, use_causal=False))    print()    print(rag.answer(query, use_causal=True))
目的:演示普通RAG与因果RAG在检索重排上的差异。普通RAG只按相似度排序,因果RAG额外考虑了混杂因素扣分与干预证据加分,最终生成的回答明显更谨慎、更可信。
  1. def sim(self, query, keywords):用关键词重合度模拟向量相似度,作为检索打分的基底。
  2. if doc['confounder']: s -= 0.3文档提及混杂因素(休息、睡眠),说明结论不可靠,排序分数下调。
  3. if doc['intervention']: s += 0.5文档包含对照实验、安慰剂等干预证据,因果可信度大幅提升。
  4. scored.sort(reverse=True)按因果增强后的分数从高到低排序,让高质量证据排在最前。
  5. counter = '反事实推演:若不干预,预期血压下降幅度显著减小。'用反事实语气生成结论,让回答更接近“实验对照”的表达。

常见误区

误区很多初学者认为RAG的检索环节找到“长得像”的文档就够了,相似度最高的文档就是最可信的证据。看到“药物A与血压下降相关”就直接回答“药物A有效”。

正解相似度只反映“相关性”,不反映“因果性”。就像两本发烧病历字面相似,但病因可能完全不同。因果RAG必须检查文档是否混淆了相关与因果,并通过因果图过滤、后门重排和反事实排序来筛选证据。

为何常见:相似检索的分数直观、可解释,让人本能地觉得“分数高=对”。而因果分析需要额外步骤,初学者容易为了省事跳过。

误区有人认为把知识图谱(如“药物-疾病-症状”关系图)接入RAG就是因果RAG,两者都是“节点+边”的结构,没什么区别。

正解普通知识图谱只描述“有关系”,因果图描述的是“有方向、可干预的因果关系”。因果图支持do算子、后门调整和反事实推演,而普通知识图谱不具备这种干预语义。把知识图谱直接塞给RAG并不等于因果RAG。

为何常见:两者在可视化上都是圆形节点加箭头,外形极其相似,初学者很容易混淆语义层面的差异。

误区初学者看到后门调整公式,以为只要把变量放进 Z 集合,就万事大吉,所有混杂都能被自动消除。

正解后门调整只在 Z 满足后门准则时成立——Z 必须阻断所有非因果路径,且不能有未观测的混杂变量。随意挑选变量、遗漏重要混杂,都会导致错误的估计。就像医生只按年龄分层,却忽略了吸烟史,结论依然不可靠。

为何常见:公式本身看起来很简洁,让人误以为它是通用解法,忽略了公式背后的因果假设。

误区有人认为只要有了因果图谱和检索模块,大模型就只是“复读机”,自身的语言理解与推理能力不再重要。

正解因果知识是“增强”而非“替代”。从文档中抽取三元组、判断因果方向、生成反事实文本,都依赖大模型的语义理解。图谱提供骨架,大模型负责填充血肉。

为何常见:“检索增强生成”这个名字给人“全靠外部知识”的印象,让人低估了生成模型本身的智能。

面试题

Q1. RAG 的核心思路是?

单选题 · easy

  • A.只靠模型内部记忆回答
  • B.先从文档库检索再生成← 正确答案
  • C.用知识图谱替代语言模型
  • D.随机挑选文档拼进回答

答案:B。RAG(检索增强生成)的关键在于“先检索、再生成”。A 是纯生成模型,缺少外部知识;C 错在“替代”,图谱是辅助不是替代;D 随机挑选文档没有检索质量可言。正确答案是 B。

Q2. P(Y|X) 与 P(Y|do(X)) 的核心区别是?

单选题 · easy

  • A.前者是观察,后者是干预← 正确答案
  • B.前者是干预,后者是观察
  • C.两者含义完全一致
  • D.前者只用于时间序列分析

答案:A。P(Y|X) 是在观察数据中“看到”X 时 Y 的分布,P(Y|do(X)) 是“主动把 X 设为某个值”后系统的反应。类比医院场景,前者是病历记录里的相关性,后者是严格实验中的因果效应。

Q3. 在“发烧→吃药→好转”的例子里,如果病人同时多喝水,喝水属于?

单选题 · easy

  • A.结果变量
  • B.混杂因素← 正确答案
  • C.工具变量
  • D.无关变量

答案:B。多喝水同时影响“是否吃药”和“是否好转”,是典型的混杂因素。它让吃药与好转看起来相关,即使药物无效。忽略它,就会把相关误判成因果。

Q4. 因果 RAG 与普通 RAG 最本质的区别是?

单选题 · mid

  • A.使用更大的语言模型
  • B.检索时考虑因果知识← 正确答案
  • C.检索阶段完全删除
  • D.生成的答案会更简短

答案:B。因果RAG本质上仍走“检索+生成”框架,关键在于检索时引入因果知识(因果图、后门调整、反事实)来筛选和重排证据。A 只是模型规模变化,C 和 D 都不符合实际。

Q5. 因果感知检索策略包括?

多选题 · mid

  • A.因果过滤筛选文档← 正确答案
  • B.后门调整重新排序← 正确答案
  • C.反事实推演再排序← 正确答案
  • D.随机抽取候选文档

答案:ABC。三种策略层层递进:先过滤掉违背因果图的文档,再按混杂分层做后门重排,最后用反事实推演排序。随机抽样没有利用因果知识,不属于因果感知检索。

Q6. 后门准则公式中 Z 的作用是?

单选题 · mid

  • A.按混杂因素分层加权← 正确答案
  • B.提供检索加速索引
  • C.删除全部异常样本
  • D.直接生成最终回答

答案:A。后门调整把数据按混杂变量 Z 分组,在每个子组内估计 X→Y 的效应,再按 Z 的分布加权汇总,从而消除混杂偏差。B、C、D 都与后门调整无关。

Q7. 因果图谱构建的常见步骤有?

多选题 · mid

  • A.从文本中抽取因果三元组← 正确答案
  • B.用条件独立性发现因果← 正确答案
  • C.新旧知识融合去矛盾← 正确答案
  • D.随机游走生成文本答案

答案:ABC。因果图谱构建包括文本三元组抽取(如“吸烟→肺癌”)、条件独立性检验发现结构、以及新旧知识融合。随机游走属于图上的应用层方法,不是构建步骤。

Q8. 反事实“如果当初不干预”在因果RAG中用于?

单选题 · hard

  • A.为生成提供对照参考← 正确答案
  • B.压缩因果图谱存储
  • C.加速向量文档检索
  • D.自动生成监督标签

答案:A。反事实“如果不干预会怎样”为生成提供对照信息,让回答更接近“实验组 vs 对照组”的语气。其他选项与反事实无关。

Q9. 评估因果 RAG 时“因果一致性”指?

单选题 · hard

  • A.因果方向与图谱一致← 正确答案
  • B.回答中出现因果字样
  • C.候选文档数量最多
  • D.检索响应速度最快

答案:A。因果一致性指模型输出的因果关系方向与已有知识图谱一致,是因果RAG最重要的评估维度之一。B 是表面文字,C、D 是数量和效率指标。

Q10. 普通 RAG 的局限有?

多选题 · easy

  • A.只看相关不看因果← 正确答案
  • B.易被表面相似文档误导← 正确答案
  • C.可能回答虚假因果关系← 正确答案
  • D.完全不能生成语言文本

答案:ABC。普通RAG按相似度检索,容易把“相关”当“因果”,从而被表面相似的文档误导,输出虚假因果结论。D 说“完全不能生成文本”纯属夸张。