weixin_44984098 2025-09-22 17:46 采纳率: 0%
浏览 12

LangChain-chatchat的向量模型加载失败

LangChain-chatchat的向量模型加载失败
ERROR | chatchat.server.utils:get_Embeddings:341 - failed to create Embeddings for model: bge-small-zh-v1.5.
ERROR | chatchat.server.utils:check_embed_model:355 - failed to access embed model 'bge-small-zh-v1.5': 'NoneType' object has no attribute 'embed_query'
ERROR | chatchat.server.chat.kb_chat:knowledge_base_chat_iterator:221 - error in knowledge chat: failed to access embed model 'bge-small-zh-v1.5': 'NoneType' object has no attribute 'embed_query'

img

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-09-22 17:49
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你遇到的错误信息是:

    ERROR | chatchat.server.utils:get_Embeddings:341 - failed to create Embeddings for model: bge-small-zh-v1.5.
    ERROR | chatchat.server.utils:check_embed_model:355 - failed to access embed model 'bge-small-zh-v1.5': 'NoneType' object has no attribute 'embed_query'
    

    这个错误表明 LangChain-Chatchat 在加载 bge-small-zh-v1.5 向量模型时失败,导致 embed_query 方法无法调用,最终引发 NoneType 错误。


    ✅ 问题原因分析

    1. 模型未正确加载或路径错误

      • bge-small-zh-v1.5 模型可能没有被正确下载或存储在预期的位置。
      • 模型文件缺失或路径配置错误。
    2. 依赖库版本不兼容

      • LangChain 或相关依赖(如 transformers, sentence-transformers)版本不匹配。
    3. 模型类型不支持

      • bge-small-zh-v1.5 是百度的模型,可能需要特定的加载方式(如使用 AutoModelAutoTokenizer)。
    4. 环境变量或配置错误

      • 配置文件中指定的模型名称与实际模型名称不一致。

    🔧 解决方案

    1. 确认模型是否已正确下载

    • 检查模型文件是否存在

      • 通常模型会保存在 ~/.cache/huggingface/hub/ 目录下。
      • 查看是否有 bge-small-zh-v1.5 文件夹或 .bin.json 文件。
    • 手动下载模型(如果未自动下载):

      pip install sentence-transformers
      

      或者使用 Hugging Face 下载器:

      from sentence_transformers import SentenceTransformer
      model = SentenceTransformer('bert-base-chinese')  # 示例,根据你的模型调整
      

    2. 修改配置文件中的模型名称

    • 打开配置文件(如 config.yamlsettings.py),检查模型名称是否为:

      embeddings:
        model_name: "bge-small-zh-v1.5"
      
    • 如果模型名称有误,请更正为正确的模型名,例如:

      embeddings:
        model_name: "bert-base-chinese"  # 示例,根据实际模型修改
      

    3. 使用正确的模型加载方式

    如果你使用的是 BGE 模型(如 bge-small-zh-v1.5),它不是标准的 sentence-transformers 模型,需使用 Hugging Face 的 AutoModelAutoTokenizer 加载。

    ✅ 修改代码示例(适用于 LangChain-Chatchat)

    找到模型加载部分(如 server/utils.pymodel_loader.py),将如下代码:

    from langchain.embeddings import HuggingFaceEmbeddings
    embeddings = HuggingFaceEmbeddings(model_name="bge-small-zh-v1.5")
    

    替换为:

    from transformers import AutoTokenizer, AutoModel
    import torch
    
    # 加载 tokenizer 和 model
    tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")  # 替换为你的模型
    model = AutoModel.from_pretrained("bert-base-chinese")
    
    # 定义嵌入函数
    def embed_query(text):
        inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
        outputs = model(**inputs)
        return outputs.last_hidden_state.mean(dim=1).detach().numpy()
    

    ⚠️ 注意:bge-small-zh-v1.5 可能不在 Hugging Face 上,你需要确认其来源并适配加载方式。


    4. 安装依赖库并升级版本

    确保安装了以下依赖:

    pip install langchain transformers sentence-transformers
    

    如果已安装,尝试升级:

    pip install --upgrade langchain transformers sentence-transformers
    

    5. 检查日志和调试输出

    在启动服务时,开启调试模式查看详细错误信息:

    export LOG_LEVEL=DEBUG
    python run.py
    

    查看日志中关于模型加载的具体错误,有助于定位问题。


    🛠️ 总结

    | 步骤 | 内容 | |------|------| | 1 | 确认模型是否已下载,检查路径和文件完整性 | | 2 | 修改配置文件,确保模型名称正确 | | 3 | 使用正确的加载方式,尤其是 BGE 模型 | | 4 | 安装和升级依赖库,避免版本冲突 | | 5 | 开启调试日志,获取更详细的错误信息 |


    💡 补充建议

    • 如果你使用的是 百度的 BGE 模型,可以参考官方文档或 GitHub 项目(如 Baidu/bge)来加载模型。
    • 如果你使用的是 Hugging Face 的模型,请确保模型名称正确,并且模型已下载到本地。

    如有更多具体配置或代码片段,欢迎提供,我可以帮你进一步排查。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月22日