站点图标 高效码农

★如何让AI在教育场景中真正“懂你”:用实体链接(Entity Linking)治好RAG的“选择困难症”★

你有没有遇到过这种情况:
问一个专业问题,比如“亚当·斯密在《国富论》中是怎么定义分工的?”,普通的RAG系统却给你检索出一堆提到“Smith”的无关内容——可能是经济学家,也可能是完全同名的其他人,甚至是某个公司的名字。
这不是模型不聪明,而是它只懂“文字长得像”,不懂“这个词到底指谁”。

这就是为什么在大学课程、医学教材、法律条文这些专业场景里,单纯靠语义相似度(semantic similarity)做检索经常翻车。
我们最近发表的一篇论文(arXiv 2512.05967)专门解决这个问题:给RAG系统加一个“实体链接”大脑,让它先搞清楚“你说的到底是哪个Smith”,再去检索。这样一来,答案的准确率和可信度直接起飞。

下面我用最通俗的方式,把整篇论文的精华讲透,顺便告诉你这个方法为什么在教育场景里特别好用。

什么是ELERAG?一句话版本

ELERAG = 传统RAG + Wikidata实体链接 + 聪明地融合两种信号
我们把它叫做Entity Linking Enhanced RAG(实体链接增强的检索生成系统),专门为意大利语大学课程设计,但思路完全可以复制到任何语言、任何专业领域。

核心思想就一句话:
别只比文字相似度,先把人名、概念、专有名词全部对齐到知识图谱的唯一ID,再比。

为什么普通RAG在专业场景会“翻车”?

先来看一个真实例子(来自我们自己的课程数据):

学生问:“斯密是怎么论述分工的?”
普通RAG会把查询编码成向量,去找最相似的文本块。结果呢?
它可能找到:

  • 🍄
    亚当·斯密《国富论》里的原文(正确)
  • 🍄
    某个现代经济学家姓Smith的论文(错)
  • 🍄
    一个叫Smith的公司案例(更错)

因为“Smith”这个词在嵌入空间里长得太像了,模型分不清。
我们统计了一下,在大学课程材料里,这种同名、同义、跨章节指代不清的情况比比皆是。光靠语义相似度,顶不住。

ELERAG是怎么解决的?整个流程图解

graph TD
    A[用户提问] --> B(同时走两条路)
    B --> C[语义检索路:multilingual-e5-large → FAISS 取Top-30]
    B --> D[实体链接路:用spaCy抽出实体 → Wikidata查ID → 计算实体重合度]
    C --> E[两条排名各自打分]
    D --> E
    E --> F[用RRF(互助倒排融合)把两条排名合并]
    F --> G[把Top-3~5个最靠谱的段落塞给GPT-4o]
    G --> H[生成带引用来源的最终答案]

最关键的不是加了实体链接,而是怎么把实体信号和语义信号聪明地融合起来

我们一共试了三种融合方式,最后发现最牛的那种竟然也是最简单的——RRF(Reciprocal Rank Fusion,互助倒排融合)。

三种融合方式横评(真实数据)

方法 思路 在大学课程数据表现 计算成本
Weighted-Score(加权求和) 语义分 + β×实体分(β=0.5) 还可以,但容易调参翻车
RRF(我们最终用的) 不调权重,直接把两个排名互助倒排融合 最准!EM提升8%+ 极低
RRF + Cross-Encoder(SOTA) 先RRF,再让交叉编码器重新打分 居然不如RRF! 高 5-10倍

最意外的是:在我们自己的大学课程数据上,RRF居然把最贵的Cross-Encoder干翻了。

真实数据对比:大学课程 vs 通用维基(SQuAD-it)

数据集 最佳方案 Exact Match(把正文排到第一位) MRR 谁赢了?
意大利大学课程 ELERAG(RRF) 56.5% 0.779 我们赢了
SQuAD-it(维基) Cross-Encoder 77.7% 0.836 Cross赢了

这说明什么?这说明没有万能的检索方法,只有最匹配的检索方法

Cross-Encoder在维基上无敌,是因为它在海量英文网页上预训练过,天然懂维基的语言风格。
但一到大学课堂实录(口语化、长句、跨章节指代),它就抓瞎了。而我们的实体链接方法不依赖预训练数据分布,只要Wikidata里有这个实体,就稳。

这就是我们提出的“Domain Mismatch”(领域失配)现象:
再强的通用模型,遇到专业小众语料也会水土不服。

实体链接模块具体怎么实现的?(可直接抄作业)

  1. 识别实体
    用spaCy意大利语大模型(it_core_news_lg)抽出所有命名实体。

  2. 查Wikidata
    对每个实体,用Wikidata公开API搜索候选列表。

  3. 选对那个实体(消歧)
    打分公式(我们自己调的):

    HybridScore = 0.9 × 语义相似度(e5-large算mention和label+description)
                + 0.1 × 流行度(1/(rank+1))
    

    选分数最高的那个Wikidata ID。

  4. 预处理所有文档
    把课程所有文本块提前做好实体链接,存成JSON,后面实时只查查询的实体就行。

整个过程零训练,纯规则+轻量嵌入,成本极低。

实际效果有多大提升?(重点数据)

在真实大学课程69道题上:

指标 普通RAG ELERAG(RRF) 提升幅度
Exact Match(金段落排第一) 52.2% 56.5% +8.2%
Precision@1 65.2% 69.6% +6.8%
MRR(金段落平均排名倒数) 0.652 0.779 +19.5%
GPT-4o打分(10分制)完整性 5.99 6.10 +1.8%
GPT-4o打分(10分制)相关性 5.45 5.57 +2.2%

别小看这几个点,在教育场景里,能把最正确的原文排到第一位,学生体验是质的飞跃。

FAQ:最常被问到的问题

Q1:这个方法只能用意大利语吗?
完全不是。我们用的是Wikidata(全球最大的多语言知识图谱),中文、英文、日文全都有实体ID。只要换对应的NER模型(比如中文用bert-base-chinese + 中文知识库),思路100%可迁移。

Q2:实体链接会不会很慢?
我们实测:在2核CPU小服务器上,整个查询到出答案全流程平均1.8秒,比普通RAG只多了0.4秒左右。因为实体链接只在查询端实时做一次,文档端是提前预处理的。

Q3:如果Wikidata里没有这个实体怎么办?
那就退化成普通RAG。实际上大学课程90%以上的专有名词(人名、书名、概念名)Wikidata全有,缺失的往往是老师自己发明的缩写词,这种反而不需要消歧。

Q4:能不能把Cross-Encoder也加上去?
可以,但收益很低。我们试过先RRF再Cross-Encoder,反而把准确率拉下去了。因为Cross-Encoder太“自信”,会把一些实体正确的但文字风格稍远的段落给干掉。

Q5:代码开源了吗?
开源了!GitHub地址:https://github.com/Granataaa/educational-rag-el
可以直接跑我们提供的demo,换自己的课程数据就行。

总结:什么时候应该上实体链接?

如果你正在做以下任何一种系统,强烈建议加上实体链接:

  • 🍄
    企业内部知识库问答(人名、产品名、项目名极易重名)
  • 🍄
    在线教育平台(课件、教材、老师讲义)
  • 🍄
    法律、医学、金融等高精度领域
  • 🍄
    多语言、非英语为主的项目

一句话结论:
在通用场景,Cross-Encoder是王者;在专业小众场景,实体链接+RRF才是真正的降维打击。

我们用真实大学课程证明了这一点,也把完整代码和思路都开源了。
如果你也在被RAG的“选择困难症”折磨,欢迎试试ELERAG——它可能就是你家知识库的“实体大脑”。

喜欢这篇文章的话,欢迎分享给你做教育AI、企培系统、知识管理系统的朋友。
我们下一篇文章会讲:如何在中文大学课程上复现这个系统(已经跑通了,效果更夸张,敬请期待)。

(全文完)
参考论文:https://arxiv.org/abs/2512.05967
代码仓库:https://github.com/Granataaa/educational-rag-el

退出移动版