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

如何通过LangChain的DirectoryLoader将文件日期加入文档元数据?

实现LangChain DirectoryLoader加载文件时添加创建/修改日期至元数据

完全可行,你可以通过自定义元数据函数或加载后统一处理的方式实现,以下是具体方案:

方案一:通过加载器的metadata_func参数(推荐,针对单类型文件)

这种方式直接利用LangChain加载器的内置扩展能力,针对docx文件可以这样做:

  1. 导入所需模块并定义元数据处理函数
    该函数接收文件路径,返回包含创建/修改时间的元数据字典:
import os
import datetime
from langchain.document_loaders import DirectoryLoader, Docx2txtLoader

def add_file_time_metadata(file_path):
    file_stats = os.stat(file_path)
    # 将时间戳转换为易读的字符串格式
    create_time = datetime.datetime.fromtimestamp(file_stats.st_ctime).strftime("%Y-%m-%d %H:%M:%S")
    modify_time = datetime.datetime.fromtimestamp(file_stats.st_mtime).strftime("%Y-%m-%d %H:%M:%S")
    return {
        "file_create_time": create_time,
        "file_modify_time": modify_time
    }
  1. 修改DirectoryLoader初始化代码
    指定docx对应的加载器Docx2txtLoader,并通过loader_kwargs传入自定义元数据函数:
loader = DirectoryLoader(
    dir,
    glob="**/*.docx",
    show_progress=True,
    silent_errors=True,
    loader_cls=Docx2txtLoader,
    loader_kwargs={
        "metadata_func": add_file_time_metadata
    }
)
docs = loader.load()
  1. 验证结果
    加载后每个文档的元数据会包含新增的时间字段:
for doc in docs:
    print(f"文件路径: {doc.metadata['source']}")
    print(f"创建时间: {doc.metadata['file_create_time']}")
    print(f"修改时间: {doc.metadata['file_modify_time']}\n")

方案二:加载后统一处理(通用型,适配未来扩展多类型文件)

如果未来要扩展到其他文档类型(如PDF、TXT等),部分加载器可能不支持metadata_func参数,这种情况下可以在加载完成后遍历文档手动添加元数据:

import os
import datetime
from langchain.document_loaders import DirectoryLoader

# 原加载代码
loader = DirectoryLoader(dir, glob="**/*.docx", show_progress=True, silent_errors=True)
docs = loader.load()

# 遍历添加时间元数据
for doc in docs:
    file_path = doc.metadata["source"]
    file_stats = os.stat(file_path)
    doc.metadata["file_create_time"] = datetime.datetime.fromtimestamp(file_stats.st_ctime).strftime("%Y-%m-%d %H:%M:%S")
    doc.metadata["file_modify_time"] = datetime.datetime.fromtimestamp(file_stats.st_mtime).strftime("%Y-%m-%d %H:%M:%S")

这种方式无需关注具体加载器的特性,所有类型文件加载后都能统一处理,适合未来扩展需求。

内容的提问来源于stack exchange,提问作者Primoz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:25:09