跳至主要內容

增强LLM的方法

周子力大约 12 分钟教学文档认知智能知识构建知识图谱大语言模型

增强LLM的方法

  1. 让 LLM 自己“想得更好” —— 思维链、思维树、思维图、Self-Consistency、ReAct 等。
  2. 给 LLM “外挂知识” —— 知识图谱、RAG、GraphRAG、知识库 + LLM 等。

如果给学生讲,我建议不要一上来讲复杂公式,而是把 LLM 想成一个**“很聪明但有时候会一本正经胡说的学生”**。增强 LLM,本质上就是想办法让这个学生:

想得更清楚、查得更准、记得更多、做事更可靠。


一、先建立一个最简单的认识

假设我们问 LLM:

“小明有10元钱,买了一本3元的书,又买了2支2元的笔,他还剩多少钱?”

普通 LLM 可能直接回答:

10 - 3 - 2 × 2 = 3元。

这个题很简单。

但是如果问题变成:

“某公司今年营收增长20%,利润下降10%,员工数量增加30%,问公司的经营状况怎么样?”

这时候就不能简单地“看到问题就回答”,而需要:

问题 → 分解 → 分析 → 比较 → 得出结论

所以就出现了各种“增强 LLM 推理能力”的方法。


二、思维链 Chain-of-Thought,CoT

1. 什么是思维链?

思维链就是让 LLM 一步一步地想。

可以把它理解成:

不要直接给答案,先把解题步骤走一遍。

例如问:

小王有20元,买了一个8元的本子,又买了3支2元的笔,还剩多少钱?

普通回答:

6元。

思维链式回答:

第一步:20 - 8 = 12元 第二步:3支笔需要 3 × 2 = 6元 第三步:12 - 6 = 6元 所以还剩6元。


2. 为什么思维链有效?

因为很多复杂问题不是“一步”能够解决的。

例如:

“孔子为什么强调‘仁’?这种思想对今天的教育有什么启示?”

LLM如果直接回答,可能想到什么说什么。

如果让它分步骤:

第一步:解释“仁”的含义
        ↓
第二步:分析孔子为什么强调“仁”
        ↓
第三步:结合《论语》中的相关思想
        ↓
第四步:联系现代教育
        ↓
第五步:总结启示

回答通常就会更加完整。

一句话理解

思维链 = 一条路走到底。


三、思维树 Tree of Thoughts,ToT

思维链虽然很好,但是有一个问题:

如果第一步就走错了,后面可能全部错。

这时候可以让 LLM:

不要只走一条路,而是同时想几条路。

这就是思维树


1. 举个非常简单的例子

比如问:

“大学生应该如何提高自己的就业竞争力?”

思维链可能这样:

就业竞争力
   ↓
学习专业知识
   ↓
参加项目
   ↓
参加实习
   ↓
提高就业能力

但是思维树会这样:

                 就业竞争力
                /    |     \
               /     |      \
          专业能力  实践能力  综合能力
           /  \      /  \      /  \
         编程  算法  项目 实习  沟通 英语

LLM可以对不同方案进行评价:

方案A:只学习理论
评分:★★★

方案B:理论 + 项目
评分:★★★★★

方案C:理论 + 项目 + 实习
评分:★★★★★

最后选择最好的路径。


2. 思维树和思维链的区别

非常简单:

方法通俗理解
思维链 CoT一条路走到底
思维树 ToT同时想几条路,再选一条
思维图 GoT不仅可以分叉,还可以互相连接

所以:

CoT = 线ToT = 树GoT = 图

这个比喻特别适合给学生讲。


四、思维图 Graph of Thoughts,GoT

思维树再往前一步。

现实中的问题往往不是简单的:

A → B → C → D

而可能是:

A ───→ B ───→ D
│      ↓      ↑
│      C ─────┘
↓
E ───→ F

不同思路之间可以:

  • 合并
  • 交叉
  • 相互引用
  • 互相验证
  • 重新组合

这就是思维图


举个例子:写一篇论文

比如让 LLM:

“设计一个知识图谱 + 大模型的研究方案。”

思维图可能是:

                     研究方案
                  /     |      \
                 /      |       \
              数据     模型      实验
              ↓         ↓        ↓
           知识图谱   LLM       指标
              ↓         ↓        ↓
             RAG ←── GraphRAG ──→ 对比实验
                \       ↑        /
                 \______|_______/

这里的特点是:

数据、模型、实验不是独立的,它们之间会相互影响。

所以思维图比单纯的思维树更加灵活。


五、Self-Consistency:让 LLM “多想几遍”

还有一种非常直观的方法:

同一道题,让 LLM 做很多遍,然后投票。

例如问:

“一个班有多少种排队方式?”

让模型产生5个推理结果:

答案1:120
答案2:120
答案3:240
答案4:120
答案5:120

最终:

120出现次数最多。

因此选择120。

这叫:

Self-Consistency(自洽性/一致性)

可以把它理解为:

不是问一个学生,而是让5个“平行世界里的学生”分别做题,然后投票。


六、ReAct:让 LLM 不只是“想”,还可以“做”

这是另外一个非常重要的方向。

传统 LLM:

问题
 ↓
思考
 ↓
答案

ReAct:

问题
 ↓
思考
 ↓
行动
 ↓
观察结果
 ↓
继续思考
 ↓
继续行动
 ↓
最终答案

例如问:

“今天北京天气怎么样?”

LLM自己可能不知道。

于是:

思考:
我需要最新天气信息

 ↓

调用天气工具

 ↓

得到:
北京今天25℃,小雨

 ↓

思考:
根据最新数据组织答案

 ↓

回答用户

所以:

ReAct = Reasoning + Acting

即:

推理 + 行动


七、到这里,可以总结第一类方法

这些方法主要解决的是:

如何让 LLM 更会“思考”。

方法通俗理解主要作用
CoT一步一步想提高复杂问题推理能力
ToT想几条路再选多方案搜索
GoT思路之间互相连接复杂推理
Self-Consistency多做几遍然后投票降低偶然错误
ReAct一边想一边做调用工具、搜索、执行任务

八、第二大类:知识图谱 + LLM

前面解决的是:

“怎么想得更好?”

但是还有一个非常大的问题:

“你知道得够不够?”

LLM有一个天然问题:

它的知识主要来自训练数据,而且存在:

  • 知识过时
  • 专业知识不足
  • 企业内部知识不知道
  • 容易产生幻觉
  • 很难保证事实准确

怎么办?

一个非常重要的思路就是:

给 LLM 接一个“外部知识库”。


九、知识图谱是什么?

可以把知识图谱理解成:

把知识整理成一张“关系网”。

例如:

孔子
 │
 ├──出生于→ 鲁国
 │
 ├──弟子→ 颜回
 │
 ├──弟子→ 子贡
 │
 └──思想→ 仁

再复杂一点:

孔子
 ↓
提出
 ↓
仁
 ↓
强调
 ↓
人与人之间的关系
 ↓
影响
 ↓
儒家思想

知识图谱最重要的东西其实就是:

实体 + 关系 + 属性

例如:

孔子 ——弟子→ 颜回

孔子 ——思想→ 仁

孔子 ——出生地→ 鲁国

十、知识图谱 + LLM,第一种:KG-RAG

这是现在非常值得讲的一个方向。

传统 RAG:

用户问题
   ↓
搜索知识库
   ↓
找到几个相关文本
   ↓
交给 LLM
   ↓
回答

例如:

“孔子有哪些主要弟子?”

系统去知识库找:

孔子
├── 颜回
├── 子贡
├── 子路
├── 曾子
└── 冉有

然后把这些信息交给 LLM。


十一、为什么知识图谱 RAG 比普通文本 RAG有优势?

普通文本 RAG更像:

从书架上找几页书。

知识图谱 RAG更像:

直接把“人物关系网”拿出来。

例如问:

“颜回和孔子是什么关系?”

普通 RAG可能找到:

《论语》中出现颜回的几个段落。

知识图谱可以直接得到:

孔子
 ↓
弟子
 ↓
颜回

然后 LLM负责把它说成人话:

颜回是孔子最重要的弟子之一,也是孔子非常推崇的学生。


十二、第二种:知识图谱作为 LLM 的“外挂记忆”

可以把 LLM 想象成:

一个非常聪明的大脑。

知识图谱:

一个结构化的外部记忆。

两者结合:

             用户问题
                 ↓
        ┌───────────────┐
        │      LLM      │
        │    大脑       │
        └───────┬───────┘
                ↓
          查询知识图谱
                ↓
       ┌────────────────┐
       │   Knowledge   │
       │     Graph     │
       └───────┬────────┘
               ↓
           返回事实
               ↓
              LLM
               ↓
             答案

这样就变成:

LLM负责理解和推理,知识图谱负责提供事实。

这是一个非常好的分工。


十三、第三种:GraphRAG

如果知识图谱进一步和 RAG 深度结合,就出现:

GraphRAG

简单理解:

传统 RAG:

问题
 ↓
找相关文本
 ↓
LLM

GraphRAG:

问题
 ↓
理解问题
 ↓
找到相关实体
 ↓
沿着关系扩展
 ↓
构建相关子图
 ↓
结合文本
 ↓
LLM推理
 ↓
答案

十四、举一个非常适合你研究方向的例子

假设用户问:

“狄仁杰和武则天是什么关系?狄仁杰为什么能够得到武则天的信任?”

普通 LLM可能直接回答。

但知识图谱可以建立:

狄仁杰
 │
 ├──官职→ 大理寺丞
 │
 ├──时期→ 武周
 │
 ├──效忠→ 武则天
 │
 ├──任职→ 宰相
 │
 └──参与→ 平反案件

再加入:

武则天
 │
 ├──身份→ 皇帝
 │
 ├──任用→ 狄仁杰
 │
 └──信任→ 狄仁杰

然后系统沿着图谱进行查询。

最终 LLM可以组织:

狄仁杰是武则天时期的重要官员,后来成为宰相。武则天之所以重用他,与其处理政务能力、敢于直谏以及处理案件时表现出的公正性有关。

这里:

知识图谱负责“事实关系”。

LLM负责“理解和表达”。


十五、第四种:让 LLM 帮助构建知识图谱

其实关系是双向的。

不是只有:

知识图谱 → LLM

还可以:

LLM → 知识图谱

例如给 LLM一段文本:

“孔子名丘,字仲尼,春秋时期鲁国人,是儒家学派创始人。”

LLM可以自动抽取:

实体:
孔子
丘
仲尼
鲁国
儒家

关系:
孔子 ——名→ 丘
孔子 ——字→ 仲尼
孔子 ——籍贯→ 鲁国
孔子 ——创始→ 儒家

然后写入知识图谱。

所以:

LLM 可以成为知识图谱构建的“自动化工人”。


十六、第五种:让知识图谱帮助 LLM “纠错”

这是一个非常重要的方向。

例如 LLM回答:

“孔子是秦朝人。”

知识图谱里面有:

孔子
出生时间:公元前551年
死亡时间:公元前479年
时期:春秋时期

系统发现:

LLM回答:秦朝 ❌

知识图谱:春秋时期 ✅

于是可以进行:

LLM生成
    ↓
知识图谱验证
    ↓
发现冲突
    ↓
重新推理
    ↓
修正答案

这可以理解成:

给 LLM 配一个“事实检查员”。


十七、知识图谱 + LLM 的几种主要组合

可以把它整理成这张非常重要的表:

组合方式谁负责什么?通俗理解
KG → LLMKG提供知识给LLM外挂知识库
LLM → KGLLM抽取知识LLM帮忙建知识图谱
KG + RAG + LLMKG帮助检索不仅找文字,还找关系
KG + LLM推理KG提供结构关系给LLM一张“关系地图”
KG验证LLMKG负责事实检查给LLM配一个“裁判”
LLM更新KGLLM发现新知识自动维护知识图谱
GraphRAG图谱+文本+LLM综合利用结构化和非结构化知识

十八、把所有方法放到一张“大地图”里

如果给学生讲,我特别推荐画成这样:

                       大语言模型 LLM
                             │
              ┌──────────────┴──────────────┐
              │                             │
         如何想得更好?                  如何知道更多?
              │                             │
       ┌──────┼──────┐                ┌─────┼─────┐
       │      │      │                │     │     │
      CoT    ToT    GoT              RAG   KG   GraphRAG
       │      │      │                │     │     │
     思维链  思维树  思维图             文本  关系  图+文本
       │      │      │                │     │     │
       └──────┼──────┘                └─────┼─────┘
              │                             │
              ↓                             ↓
          推理增强                       知识增强
              │                             │
              └──────────────┬──────────────┘
                             ↓
                     更可靠的 LLM

十九、再往前一步:推理增强 + 知识增强

真正有意思的系统,其实不是只用一种方法。

而是:

让 LLM 一边查知识,一边推理。

例如:

问题:

“为什么某历史人物能够成为某位皇帝信任的大臣?”

系统可以这样工作:

① LLM理解问题
        ↓
② 找到人物A、人物B
        ↓
③ 查询知识图谱
        ↓
④ 找到人物之间的关系
        ↓
⑤ 检索相关历史文本
        ↓
⑥ 构建证据子图
        ↓
⑦ LLM进行思维链推理
        ↓
⑧ 多路径验证
        ↓
⑨ 生成最终答案

这就已经不是简单的:

“LLM + 知识图谱”

而是:

LLM + KG + RAG + Agent + 推理


二十、如果进一步加入 Agent

这就进入现在比较热门的:

Agent + LLM + Knowledge Graph

例如让一个智能体回答:

“帮我分析孔子思想对现代教育的影响。”

Agent可以自己决定:

            用户问题
                ↓
              Agent
                ↓
       ┌────────┼────────┐
       ↓        ↓        ↓
   查询知识图谱  搜索文献   阅读资料
       ↓        ↓        ↓
       └────────┼────────┘
                ↓
             LLM推理
                ↓
             形成结论
                ↓
             事实验证
                ↓
             最终报告

所以 Agent 本质上又增加了一层:

“让 LLM 自己决定下一步该做什么。”


二十一、最终可以形成一个非常清晰的知识体系

如果从研究角度来看,我建议把“增强 LLM”分成 5个方向

① Prompt / Reasoning Enhancement

解决:

怎么让 LLM 想得更好?

包括:

  • CoT 思维链
  • ToT 思维树
  • GoT 思维图
  • Self-Consistency
  • ReAct

② Knowledge Enhancement

解决:

怎么让 LLM 知道更多、更准确?

包括:

  • RAG
  • Knowledge Base
  • Knowledge Graph
  • GraphRAG
  • KG-RAG

③ Tool Enhancement

解决:

让 LLM 不只是说,还能做。

例如:

  • 搜索
  • Python
  • 数据库
  • API
  • 计算器
  • 外部系统

④ Agent Enhancement

解决:

让 LLM 自己规划任务。

例如:

目标
 ↓
任务分解
 ↓
选择工具
 ↓
执行
 ↓
观察
 ↓
重新规划
 ↓
完成任务

⑤ Verification / Safety Enhancement

解决:

怎么让 LLM 少犯错?

例如:

  • 知识图谱验证
  • 多模型交叉验证
  • Self-Consistency
  • Citation / Evidence
  • Rule-based checking
  • Fact checking

二十二、一句话把整个体系讲明白

如果你是给计算机专业的大二、大三学生讲,我建议最后用下面这段话收尾:

增强大语言模型,本质上就是给一个“聪明的大脑”增加几种能力:

思维链让它学会一步一步思考; 思维树让它能够同时考虑多种方案; 思维图让不同思路能够相互连接; RAG让它能够随时查资料; 知识图谱让它掌握清晰的实体和关系; GraphRAG让它既能查文字,又能利用知识之间的关系; Agent让它能够自己规划和执行任务; 验证机制则像一个老师,检查它有没有答错。

最终形成的就不再是一个单纯的“聊天机器人”,而是一个:

“会思考、会查知识、会调用工具、会执行任务、还能自己检查”的智能系统。

如果把它画成一句最直观的话,就是:

              LLM
               │
       ┌───────┼────────┐
       ↓       ↓        ↓
    会思考   有知识    会行动
       │       │        │
   CoT/ToT   KG/RAG    Agent
   GoT       GraphRAG  Tools
       │       │        │
       └───────┼────────┘
               ↓
          智能应用系统
               ↓
        更强、更准、更可靠

这套框架其实也很适合进一步整理成一张**“LLM增强技术全景图”**,把 CoT → ToT → GoT → RAG → KG → GraphRAG → Agent → LLM+KG+Agent 的演进关系画出来,用来做课程 PPT 会非常直观。

上次编辑于:
贡献者: zilizhou