问题出现得很突然,日志倒是留得挺全。RAGAS 0.2 跑评测,faithfulness 和 context_precision 正常,加上 answer_correctness 后整批抛异常,提示需要 embeddings,环境里只配了 LLM 的 key。

刚开始盯着「自建 embedding 服务的 base_url 没配」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。该指标内部要算语义相似度,必须提供 embedding 模型。还有一种是传入的是字符串模型名,没有走封装层。

不容易想到的是,并发评估时共享对象被多线程复用,初始化失败。

单独跑一个指标确认缺哪个依赖

python ragas_run.py --metrics answer_correctness --verbose

显式传入 embedding 封装对象

python ragas_run.py --metrics answer_correctness --embedding bge-m3

接着配好自建 embedding 的地址

python ragas_run.py --embedding-url http://localhost:8080/v1

剩下的就是把并发降到 1 复测排除共享问题

python ragas_run.py --concurrency 1

怎么算真的好了,看的是同一批现象。四个指标都能算出数值,answer_correctness 落在 0 到 1 之间,日志里没有缺失依赖的报错。

提醒一点。RAGAS 各指标的依赖不一样,报错只提一个类名,按指标逐个跑比一次全开好定位。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189