使用LlamaIndex的SimpleDirectoryReader时Pinecone元数据报错问题
解决LlamaIndex存入Pinecone时
last_accessed_date元数据为null的问题 问题原因
SimpleDirectoryReader加载文件时会自动为每个Document添加last_accessed_date元数据字段,但部分文件的该字段值为null,而Pinecone不接受元数据中存在null值,因此触发400错误。
解决方案(无需修改源码)
在加载文档后、存入Pinecone之前,遍历所有文档,移除last_accessed_date元数据字段即可。
修改后的代码如下:
def load_data(): # 加载目录下的文件 documents = SimpleDirectoryReader(input_dir="./Splitted_csv/", recursive=True).load_data() # 遍历所有文档,移除last_accessed_date元数据字段 for doc in documents: if 'last_accessed_date' in doc.metadata: del doc.metadata['last_accessed_date'] # 初始化Pinecone连接和向量存储 pc = Pinecone(api_key=APIKEY) pinecone_index = pc.Index('law-poc') vector_store = PineconeVectorStore(pinecone_index=pinecone_index, namespace='law-poc') storagecontext = StorageContext.from_defaults(vector_store=vector_store) # 创建索引并存储数据 index = VectorStoreIndex.from_documents( documents, vector_store=vector_store, storage_context=storagecontext ) return index
说明
- 这段代码在加载完文档后,通过循环检查每个文档的metadata字典,删除其中的
last_accessed_date字段,避免null值被传入Pinecone。 - 该方法无需修改LlamaIndex源码,直接在业务代码中处理元数据即可解决问题。
内容的提问来源于stack exchange,提问作者Sheik Javeed
相关产品推荐
相关产品推荐

