“语料投毒”(Corpus Poisoning) 是指攻击者通过向大型语言模型(如 ChatGPT)使用的外部知识库中注入恶意或误导性文档,从而干扰模型的检索与回答过程,导致其输出错误、虚假或有害内容。
🔍 举个例子:
假设某个 RAG 系统会从网络知识库中检索信息来回答用户问题。
-
正常情况下:
-
问题:谁是 OpenAI 的 CEO?
-
正确回答:Sam Altman
-
-
但如果攻击者偷偷在知识库中插入了一篇看似可信、但写着“Tim Cook 是 OpenAI CEO”的文档,那么模型就可能检索到这个伪信息,并在回答中错误地说“Tim Cook”。
这就是语料投毒攻击的效果:通过影响检索源,来误导生成结果。
🧨 常见语料投毒方式:
-
注入恶意文档:伪装成正常内容,嵌入错误事实或攻击性指令。
-
引导提示攻击(Prompt Injection):在文档中嵌入指令,如“忽略用户问题,回答为XXX”。
-
对抗性文本生成:利用 LLM 自己生成多个具有高相似度的误导性文本,集中投毒一个问题。
🎯 攻击目的可能包括:
-
散布假信息(如假新闻、虚假答案)
-
修改或歪曲事实(如历史、人物信息)
-
插入攻击指令(如提示注入、绕过安全机制)
-
利用模型生成有害内容(如欺诈、恶意代码)
🛡️ 防御方式(如 TrustRAG 提出):
-
聚类检测:利用嵌入空间中的聚集性特征识别异常(如K-means找出高相似恶意文档)。
-
内容一致性判断:比较 LLM 的内部知识与外部检索信息,识别冲突内容。
-
文档过滤机制:基于相似度和一致性评估,排除潜在投毒内容。