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

RAG聊天bot开发报错:HuggingFace Embeddings遇AttributeError求助

问题分析与解决方法

这个错误的核心原因很明确:你传给embed_documents的不是字符串列表,而是字典(或Document对象)列表。HuggingFace Embeddings库在处理时会调用字符串的replace方法去处理换行符,但字典没有这个属性,所以触发报错。和换行符本身无关,是数据类型传错了。

具体修正步骤:

  • 先确认文本拆分后的输出类型:不管用split_text()、split_documents()还是create_documents(),最终要提取出纯文本内容,而不是直接把拆分后的对象传给嵌入函数。
    • 比如用split_documents()得到的是Document对象列表,每个对象有page_content属性,这才是需要的文本:
      # 拆分文档
      split_docs = text_splitter.split_documents(raw_docs)
      # 提取纯文本字符串列表
      texts = [doc.page_content for doc in split_docs]
      # 再传给嵌入函数
      embeddings = HuggingFaceEmbeddings(model_name="your-model-name")
      embedding_results = embeddings.embed_documents(texts)
      
    • 如果拆分后得到的是字典(比如某些自定义数据源返回的格式),则需要取出对应文本字段,比如:
      texts = [item["content"] for item in split_results]
      
  • 若确实需要处理换行符,在提取文本后手动处理即可,比如:
    texts = [doc.page_content.replace("\n", " ") for doc in split_docs]
    

额外排查点:

检查传给文本拆分函数的原始数据是否是纯字符串列表。如果原始数据是带元数据的字典,拆分函数可能会保留字典结构,导致后续嵌入环节出错。比如用create_documents()时,第一个参数必须是字符串列表,第二个参数才是可选的元数据列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:00:59