同名异义是 RAG 幻觉高发区。本文讲实体消歧流水线,让检索精准命中正确实体。
一、为什么需要消歧
"苹果"可能是水果也可能是公司,"模型"可能是 AI 模型也可能是实物模型。不消歧,检索块串味,生成答非所问。
二、消歧链路
flowchart LR
A[文本] --> B[实体识别]
B --> C[上下文消歧]
C --> D[绑定规范实体]
D --> E[精准检索]
三、示意消歧
```python
示意:基于上下文的实体消歧(通用实现)
def disambiguate(entity: str, context: str) -> str:
# llm_resolve 返回规范实体 ID 与类型
return llm_resolve(entity, context, candidates=KB[entity])
规范实体写入带类型的索引,检索时按类型过滤。
四、工程实践要点
- 规范实体表:维护"别名→规范实体"映射,覆盖高频歧义。
- 上下文窗口:消歧看实体周边句子,而非孤立词。
- 类型过滤:检索时按实体类型约束,减少串味。
五、常见误区
- 只做实体识别不做消歧,同名混库。
- 上下文窗口太窄,消歧错误。
- 规范表不维护,新歧义持续漏。
六、FAQ
Q1:消歧一定要 LLM 吗?
A:小范围可用规则+词典;歧义复杂再上 LLM 解析上下文。
Q2:和知识图谱什么关系?
A:图谱提供规范实体与类型,是消歧的底层支撑(呼应文章三)。
Q3:消歧错了会怎样?
A:检索块错位,生成可能张冠李戴;需抽检与回流修正。
Q4:多语言怎么消歧?
A:建跨语言规范实体映射,同一概念不同语种绑同一 ID。
Q5:性能开销大吗?
A:识别+轻量消歧在毫秒级;仅疑难实体走重消歧。