Windows系统下Chroma生成Embeddings时locale无效错误求助
问题:Windows下Chroma生成嵌入时的Locale错误
我正在跟着《用开源本地LLM从零构建Corrective RAG》教程及对应源码搭建Corrective RAG,执行索引步骤时遇到错误:RuntimeError: Failed to generate embeddings: locale::facet::_S_create_c_locale name not valid
已排查情况:怀疑是Windows系统与Chroma包的兼容性问题,用Python Locale包检查系统区域设置,Python环境显示正常但Chroma无法识别,求解决建议。
执行的代码如下:
# Load url = "https://lilianweng.github.io/posts/2023-06-23-agent/" loader = WebBaseLoader(url) docs = loader.load() # Split text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder( chunk_size=500, chunk_overlap=100 ) all_splits = text_splitter.split_documents(docs) # Embed and index if run_local == "Yes": embedding = GPT4AllEmbeddings() else: embedding = MistralAIEmbeddings(mistral_api_key=mistral_api_key) # Index vectorstore = Chroma.from_documents( documents=all_splits, collection_name="rag-chroma", embedding=embedding, ) retriever = vectorstore.as_retriever()
解决建议
强制设置Python全局Locale:在代码最开头添加以下代码,指定兼容的Locale值(优先尝试英语美国区域,若无效替换为Windows本地Locale名称如
English_US或zh_CN.UTF-8):import locale locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')升级依赖包:执行命令更新Chroma及相关组件,修复已知兼容性bug:
pip install --upgrade chromadb langchain langchain-community gpt4all替换嵌入模型测试:暂时切换到SentenceTransformer类嵌入模型,排查是否为GPT4AllEmbeddings与Chroma的组合问题:
from langchain.embeddings import SentenceTransformerEmbeddings embedding = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")通过系统环境变量设置Locale:在运行Python脚本前,先在命令行执行以下指令:
set LC_ALL=en_US.UTF-8 set LANG=en_US.UTF-8再启动你的代码脚本。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

