paper2skills Playbook

CausalRAG - 因果图驱动的检索增强生成

Skill-CausalRAG-Knowledge-Retrieval · 08-知识图谱

causalrecommendationragknowledge_graphmulti_agentfraud_detection供应链与补货客服与VOC推荐与搜索知识图谱与RAGMAS与智能体工程风控与合规WF-A 智能补货WF-C 客服分诊WF-G Listing内容优化
年化 ROI120-200 万元
业务视角
适用角色选品负责人 / 运营负责人 · 数据分析师 · 供应链负责人
适用平台Amazon 品类体系 · 竞品 ASIN 网络分析
什么情况下用品类很多,不清楚品类间的关联,没法做系统性类目扩张规划;竞品矩阵太复杂,品牌/SKU/渠道理不清
成功是什么样的建立品类知识图谱,清晰看到哪些是入口品/引流品/利润品,指导下一步选品扩张方向
业务痛点
品类太多不知道先做哪个竞品关系理不清楚不知道用户买了奶瓶还会买什么类目扩张没有逻辑

1. 解决的问题

用户反馈"机器转了两圈突然停下并闪红灯",传统 FAQ 机器人把所有带"红灯"的内容(充电时亮红灯/故障码等)全部返回,答非所问,最终用户申请退货

2. 核心算法逻辑

传统 RAG 和 GraphRAG 的召回逻辑都基于"语义相似度",本质是在问「谁和我长得像?」而非「谁是我的根因?」。当用户问"为什么机器突然停了"时,向量检索会把所有提到"停机"的文本块全部塞给大模型,因果关系被肢解在各个文本块中,幻觉无法避免。

3. 业务应用场景

业务问题: 用户反馈"机器转了两圈突然停下并闪红灯",传统 FAQ 机器人把所有带"红灯"的内容(充电时亮红灯/故障码等)全部返回,答非所问,最终用户申请退货。每月此类高级故障人工介入客服成本超 20 万元。

数据要求: - 产品维修手册(PDF/TXT):含因果表达的故障描述文档 - 历史工单数据库:工程师标注的「故障现象 → 根因 → 解决方案」记录(格式:jsonl/csv) - 结构:`{"doc_id": "ticket_001", "content": "底盘传感器积灰导致误判悬崖,引起停机闪红灯"}`

预期产出: - 因果图谱:32+ 节点,16+ 有向因果边(覆盖常见故障模式) - 自动排障指引:根因溯源链 `[传感器积灰] → [误判悬崖] → [停止运行] → [闪红灯]`,给出「请清洁底盘传感器」的精准建议 - 排障准确率提升:相比语义检索,在归因类问题上 Answer Faithfulness 提升 30-40%

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • ACL 2025 论文实验:CausalRAG 在归因类问答上 Answer Faithfulness 提升 35%、Context Precision 提升 28%(相比 GraphRAG baseline)
  • 行业数据:售后诊断准确率提升 30% 对应退货率下降约 15-20%(3C 品类)
  • 每月 200 件高级故障退货 × 200 美元/件 × 12 个月 = 年损 48 万美元,压降 15% = 约 120 万元
  • 算法实现:中等(BFS + 正则抽取,无需 GPU,纯 Python 可运行)
  • 数据准备:重点难点,需要语料中存在因果表达句式;历史工单质量高低直接决定图谱质量
  • 集成成本:低,`CausalRAG.generate_context()` 直接输出 LLM Prompt 可用的字符串

7. 代码模板

代码块数量:3 · 路径:未检测到

"""
CausalRAG 核心使用示例
场景:扫地机器人售后排障
"""

from model import CausalRAG, build_demo_robot_vacuum_corpus

# Step 1: 准备语料(维修手册 + 历史工单)
corpus = [
    {
        "doc_id": "manual_001",
        "content": "底盘传感器积灰导致误判悬崖,从而停止运行,因此出现闪红灯报警。",
    },
    {
        "doc_id": "ticket_001",
        "content": "底盘积灰造成传感器遮挡,引起悬崖误判,从而停止运行。",
    },
    # ... 更多文档
]

# Step 2: 构建因果图(离线一次性构建)
rag = CausalRAG()
graph = rag.build_causal_graph(corpus)
stats = rag.get_graph_stats()
print(f"因果图: {stats['nodes']} 节点, {stats['edges']} 边")

# Step 3: 用户查询 → 因果路径追踪
user_query = "机器转了两圈突然停下并闪红灯"
chains = rag.retrieve(user_query, top_k=3)

for chain in chains:
    print(f"\n因果链(置信度 {chain.chain_confidence:.1%}):")
    for step in chain.chain:
        print(f"  [{step.step_type}] {step.description}")

# Step 4: 生成 LLM 上下文
context = rag.generate_context(user_query)
# 将 context 拼入 LLM Prompt,实现因果增强问答
# answer = llm.chat(f"基于以下因果分析回答问题:\n{context}\n\n问题:{user_query}")
print(context)

8. 论文来源

  • 2503.19878