调用Chroma.from_documents()加载文档至Chroma DB时遇接口错误
ChromaDB 0.4.18加载文档报错解决方案
问题原因
ChromaDB从0.4.16版本起更新了EmbeddingFunction接口规范,要求__call__方法必须接收input参数,但你使用的LangChain SentenceTransformerEmbeddings方法签名为self, args, kwargs,两者不匹配导致报错。
解决方法
有两种可行的修复方式:
方式一:适配LangChain嵌入函数为Chroma兼容格式
使用Chroma提供的工具类,将LangChain的嵌入函数转换为符合新版接口要求的格式:
from langchain_community.embeddings import SentenceTransformerEmbeddings from chromadb.utils import embedding_functions # 创建LangChain嵌入函数 langchain_embedding = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") # 转换为Chroma兼容的嵌入函数 chroma_compatible_embedding = embedding_functions.LangChainEmbedding(langchain_embedding) # 加载文档到Chroma Chroma.from_documents(texts, chroma_compatible_embedding)
方式二:直接使用Chroma原生的SentenceTransformer嵌入函数
跳过LangChain的实现,直接使用Chroma自带的嵌入函数,完全符合新版接口规范:
from chromadb.utils import embedding_functions # 创建Chroma原生的SentenceTransformer嵌入函数 embedding_function = embedding_functions.SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2") # 加载文档到Chroma Chroma.from_documents(texts, embedding_function)
内容的提问来源于stack exchange,提问作者Jay Parmar
相关产品推荐
相关产品推荐

