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

DSPy结合ChromaDB使用文本嵌入检索段落时维度不匹配报错问题

原因分析

这个报错的核心是嵌入向量维度不匹配:

  • 存入ChromaDB时,get_embedding函数生成的是384维向量
  • DSPy的ChromadbRM检索时,默认使用的嵌入模型生成的是768维向量
  • 若ChromaDB集合创建时用的是768维嵌入,后续存入384维嵌入会触发维度校验报错;移除嵌入后,检索时ChromaDB会自动调用ChromadbRM的嵌入模型生成对应维度的向量,因此能正常检索。

解决办法

  1. 统一嵌入模型:确保存入和检索阶段使用同一个嵌入模型,固定向量维度:
    • 修改get_embedding函数,使其使用和ChromadbRM一致的模型(比如384维的all-MiniLM-L6-v2或768维的all-mpnet-base-v2)
    • 初始化ChromadbRM时显式指定嵌入模型,示例代码:
      from langchain.embeddings import HuggingFaceEmbeddings
      # 指定384维的嵌入模型
      embedding_model = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
      retriever_model = ChromadbRM("contracts_collection", 'db/', k=2, embedding=embedding_model)
      
  2. 重建ChromaDB集合:如果旧集合是用768维模型创建的,直接删除旧集合,使用统一的嵌入模型重新创建并存入文本块数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:40:13