ChromaDB报错'module has no attribute config' 求解决方案
解决ChromaDB报错"module 'chromadb' has no attribute 'config'"的可行方案
核心问题分析
报错根源主要有两点:一是ChromaDB版本迭代后配置模块路径发生变更,二是代码中嵌入向量的传递方式不符合LangChain+ChromaDB的规范要求。
解决方案步骤
1. 匹配LangChain与ChromaDB的兼容版本
版本不兼容是常见诱因,先卸载现有依赖,安装经过验证的兼容版本:
pip uninstall -y chromadb langchain pip install langchain==0.1.10 chromadb==0.4.24
2. 修正嵌入向量的传递方式
你当前代码直接传入预计算的embeddings列表,但Chroma.from_documents需要的是嵌入模型对象,而非预计算向量。修改代码如下:
from langchain.vectorstores import Chroma from langchain.embeddings import SentenceTransformerEmbeddings # 初始化嵌入模型对象(Chroma会自动处理文档嵌入) embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") persist_directory = 'db' # 正确构建向量库 vectordb = Chroma.from_documents( documents=text, embedding=embedding_function, persist_directory=persist_directory ) # 手动触发持久化(可选,按需使用) vectordb.persist()
3. 修正Settings的导入路径
新版ChromaDB(0.4.x+)中,Settings已从chromadb.config迁移到chromadb.settings,正确的版本适配代码:
import chromadb from packaging import version from langchain.vectorstores import Chroma from langchain.embeddings import SentenceTransformerEmbeddings persist_directory = 'db' embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") # 版本判断并导入正确的Settings if version.parse(chromadb.__version__) >= version.parse("0.4.0"): from chromadb.settings import Settings _client_settings = Settings( persist_directory=persist_directory # 新版默认使用duckdb+parquet,无需指定chroma_db_impl ) else: from chromadb.config import Settings _client_settings = Settings( chroma_db_impl="duckdb+parquet", persist_directory=persist_directory ) # 使用自定义客户端设置构建向量库 vectordb = Chroma.from_documents( documents=text, embedding=embedding_function, persist_directory=persist_directory, client_settings=_client_settings )
4. 排查虚拟环境冲突
确保当前运行环境为目标虚拟环境,避免全局依赖与虚拟环境依赖混淆。激活虚拟环境后重新执行依赖安装命令,再运行代码。
内容的提问来源于stack exchange,提问作者Fahad Ali Yousaf
相关产品推荐
相关产品推荐

