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

使用ChromaDB创建向量数据库时遇维度不匹配异常求助

解决ChromaDB的InvalidDimensionException错误

问题原因

你遇到的InvalidDimensionException是因为当前使用的嵌入模型输出维度为384,但创建的ChromaDB集合预设维度是1536,二者不匹配导致的。常见触发场景:

  • 初始用输出1536维度的模型(比如text-embedding-ada-002)创建了集合,后续换成输出384维度的模型(比如all-MiniLM-L6-v2)
  • 创建集合时手动指定dimension=1536,但实际生成的嵌入向量是384维度

解决方法

方法1:重新创建匹配维度的集合

若无需保留原集合数据,直接删除旧集合,用对应维度重建:

import chromadb
client = chromadb.Client()

# 删除旧集合(若存在)
try:
    client.delete_collection(name="your_collection_name")
except:
    pass

# 创建匹配384维度的新集合,也可省略dimension参数让Chroma自动检测
collection = client.create_collection(
    name="your_collection_name",
    dimension=384
)

方法2:更换匹配维度的嵌入模型

若要保留原集合,就换成输出1536维度的嵌入模型,比如OpenAI的text-embedding-ada-002:

from openai import OpenAI
client_openai = OpenAI(api_key="your_api_key")

def get_embedding(text):
    response = client_openai.embeddings.create(
        input=text,
        model="text-embedding-ada-002"
    )
    return response.data[0].embedding  # 输出维度为1536

方法3:修改现有集合维度(不推荐)

ChromaDB不支持直接修改已创建集合的维度,强行修改底层数据极易导致数据损坏,优先选用前两种方法。

注意事项

  • 创建集合时如果不指定dimension参数,Chroma会自动根据第一条插入的嵌入向量检测维度,这种方式更稳妥
  • 确保所有插入集合的嵌入向量维度一致,包括后续新增数据

内容的提问来源于stack exchange,提问作者Amin Tuni Gure

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:27:36