先这样答
Embedding 维度一般先跟随基座模型的输出维度,再结合召回效果和成本曲线选择拐点。维度高,向量能表达更多语义信息,表达力更强。但维度升高后,存储和计算都会增加。维度过高还会带来维度诅咒,让距离的区分度下降,也会增加过拟合风险。
维度低的好处是节省存储和计算资源。问题是语义信息更容易挤在一起,向量之间的差别可能不够清楚。这样会影响召回效果,所以不能只看资源消耗,也不能只追求高维。
如果业务有成本要求,可以在业务侧做降维。常见方式包括 PCA,或者使用 Matryoshka 的嵌套维度。实际选择时,可以比较不同维度下的召回效果和成本,再找出曲线上的拐点。这个点要同时满足业务对效果和资源的要求。
面试官会怎么追问
-
「为什么不能直接选更高的维度?」 高维不只会增加表达力,也会增加存储和计算。维度过高时,距离区分度会下降,还会增加过拟合风险。因此,高维不等于召回效果一定更好。
-
「业务需要降低向量维度时,你会怎么做?」 可以在业务侧做降维。方法可以选 PCA,也可以使用 Matryoshka 的嵌套维度。然后比较降维后的召回效果和成本,确认是否满足业务要求。
-
「你会用什么标准确定最终维度?」 我会看不同维度下的召回效果和成本曲线。维度增加后,如果效果收益开始变小,就重点观察这个位置。最终选择曲线上的拐点,而不是单独看维度大小。
回答的坑
-
只说高维表达力强,却不提存储、计算、维度诅咒和过拟合风险。
-
只按资源成本选低维,却忽略低维可能让语义挤在一起并影响召回效果。
同系列的题
这家公司的面经实录
相关深度笔记
—— 本题完 ——