下午好🌅🌅🌅
本答案参考通义千问
你遇到的错误信息是:
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 错误。
✅ 问题原因分析
-
模型未正确加载或路径错误
bge-small-zh-v1.5 模型可能没有被正确下载或存储在预期的位置。- 模型文件缺失或路径配置错误。
-
依赖库版本不兼容
- LangChain 或相关依赖(如
transformers, sentence-transformers)版本不匹配。
-
模型类型不支持
bge-small-zh-v1.5 是百度的模型,可能需要特定的加载方式(如使用 AutoModel 和 AutoTokenizer)。
-
环境变量或配置错误
🔧 解决方案
1. 确认模型是否已正确下载
2. 修改配置文件中的模型名称
-
打开配置文件(如 config.yaml 或 settings.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 的 AutoModel 和 AutoTokenizer 加载。
✅ 修改代码示例(适用于 LangChain-Chatchat)
找到模型加载部分(如 server/utils.py 或 model_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 的模型,请确保模型名称正确,并且模型已下载到本地。
如有更多具体配置或代码片段,欢迎提供,我可以帮你进一步排查。