You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Langchain HuggingFaceInstructEmbeddings时遇TypeError问题求助

问题分析与解决方案

第一个错误:TypeError: _load_sbert_model() got an unexpected keyword argument 'token'

这个错误源于依赖版本不兼容:新版本LangChain会自动向_load_sbert_model传递token参数,但旧版的sentence-transformers或InstructorEmbedding库不支持该参数。同时你的代码存在重复导入问题,可能引发隐性冲突。

修复步骤:

  • 清理重复导入:保留langchain_community下的导入(LangChain v0.1+已将社区组件迁移至此),删除旧的langchain.embeddings导入:
    # 修正后的导入语句
    from langchain_community.embeddings import HuggingFaceInstructEmbeddings, HuggingFaceEmbeddings
    from InstructorEmbedding import INSTRUCTOR
    from langchain.vectorstores import FAISS
    
  • 锁定兼容的依赖版本:在requirements.txt中指定以下版本,避免版本冲突:
    langchain==0.1.10
    langchain_community==0.0.23
    sentence-transformers==2.2.2
    InstructorEmbedding==1.0.1
    faiss-cpu==1.7.4
    
  • 实例化时显式排除token参数:若不想重新安装依赖,可在创建Embeddings对象时添加参数屏蔽token传递:
    embeddings = HuggingFaceInstructEmbeddings(model_kwargs={"token": None})
    

第二个错误:FAISS.from_documents的属性错误

这个错误通常是因为embedding实例变量名不匹配或embedding对象未正确初始化。比如你代码中创建的实例是embeddings,但调用FAISS时用了instructor_embeddings,变量名不一致会触发属性错误。

修复步骤:

  • 确保变量名一致:调用FAISS时使用正确的embedding对象:
    # 确保embeddings是已正确初始化的实例
    db = FAISS.from_documents(documents=data, embedding=embeddings)
    
  • 若使用sentence-transformers系列模型,改用HuggingFaceEmbeddings类初始化,避免与InstructorEmbeddings的API冲突:
    embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
    db = FAISS.from_documents(documents=data, embedding=embeddings)
    

内容的提问来源于stack exchange,提问作者Ivy Kutswa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:32:36