为何Langchain中HuggingFaceEmbeddings模型维度与HuggingFace标注不符?
问题原因解析
- 模型存在两种输出维度模式:dunzhang/stella_en_1.5B_v5本身支持两种输出维度——原始的8192维隐藏层输出,以及经过内置降维处理后的1024维压缩输出。MTEB排行榜测试时采用的是未降维的原始输出,所以标注的维度为8192。
- Langchain默认沿用模型降维配置:该模型在
sentence_transformers框架下默认会启用自带的降维逻辑(比如PCA降维),而Langchain的HuggingFaceEmbeddings封装时直接继承了这个默认行为,因此你调用embed_query得到的是降维后的1024维结果。 - 获取8192维输出的方法:如果需要原始维度的embedding,只需在初始化HuggingFaceEmbeddings时指定禁用降维参数,代码示例:
from langchain.embeddings import HuggingFaceEmbeddings embed_model = HuggingFaceEmbeddings( model_name="dunzhang/stella_en_1.5B_v5", encode_kwargs={"reduce_dimension": False} ) print(len(embed_model.embed_query("hey you"))) # 此时输出为8192
内容的提问来源于stack exchange,提问作者Nicolas REY
相关产品推荐
相关产品推荐

