多语言

每种语言,同样的准确率。

无论您的用户使用日语、中文、西班牙语还是英语,召回质量都完全相同。我们把存储语言与查询语言交叉成 70 组的网格来测量,并公开这个数字:recall@5 95.2%。

多语言混存的库,正是检索质量在无人察觉时下滑的地方:同一个问题,会因为那条记忆用哪种语言写成而得到不同的分数。我们把它当作缺陷而不是局限,并以语言配对的完整网格来测量。

一个存储库,同时容纳三种语言

您无需为存储库指定语言 - 可以自由混用。下例中,同一位用户的记忆同时包含日语、英语和西班牙语,而无论提问用什么语言,每个问题都能找到正确的记忆。这是对线上 API 的一次真实交互:

# one user, three languages stored together
mem.add("彼女はコーヒーより紅茶が好き", user_id="alice")                      # Japanese
mem.add("she works at a design studio in Brooklyn", user_id="alice")       # English
mem.add("A ella le encanta hacer senderismo los sábados", user_id="alice")  # Spanish
真实结果 - 每个问题都跨到了另一种语言
"¿Qué bebe ella?"               -> 彼女はコーヒーより紅茶が好き
"what does she do on weekends?" -> A ella le encanta hacer senderismo los sábados
"彼女の仕事は?"                  -> she works at a design studio in Brooklyn

没有翻译步骤,没有语言检测,没有按语言的配置。记忆与问题按语义而非语言归位 - 只要语义匹配,语言无关紧要。

这里只展示三种语言,纯粹是版面所限 - 并不存在什么“支持语言列表”。同一项在线测试同样通过了中文、Русский 和 العربية 记忆的验证,全部针对生产环境 API 完成。

为什么不能让一种语言胜过另一种

有一条规则凌驾于其他所有调优决定之上:召回质量不得取决于记忆是用哪种语言写的。我们在 70 个语言配对上测量,并在代码评审中强制执行。任何以牺牲一种语言来抬高另一种语言的做法,都不会发布。

LongMemEval 只包含英语,因此无法衡量多语言召回。上面的演示就是您直接对线上 API 验证这一点的方式。