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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:07:13