CSVLoader的使用

2025/6/15 文档加载

# CSVLoader的使用——加载CSV文件为Document对象

在RAG(检索增强生成)应用中,第一步就是将外部数据加载到系统中。CSV是最常见的数据格式之一,广泛用于存储表格数据。LangChain提供了CSVLoader,能够将CSV文件的每一行转换为独立的Document对象,方便后续的文本分割和向量化处理。本文将介绍CSVLoader的使用方法和配置选项。

# 核心概念

CSVLoader:LangChain提供的文档加载器之一,专门用于读取CSV格式文件。它将CSV文件的每一行数据转换为一个Document对象,Documentpage_content包含该行的所有字段内容,metadata包含来源信息等元数据。

csv_args参数:用于自定义CSV解析行为,支持Python标准库csv.DictReader的所有参数:

  • delimiter:字段分隔符,默认为逗号,
  • quotechar:引用字符,默认为双引号"
  • fieldnames:自定义列名列表,当CSV文件没有表头时特别有用

加载方式

  • load():一次性加载所有文档到内存,返回List[Document]
  • lazy_load():惰性加载,返回迭代器,适合处理大文件时节省内存

Document结构:每个Document包含page_content(文本内容)和metadata(元数据,如source文件路径、row行号等)。

# 代码示例

from langchain_community.document_loaders import CSVLoader

loader = CSVLoader(
    file_path="./data/stu.csv",
    csv_args={
        "delimiter": ",",
        "quotechar": '"',
        "fieldnames": ['name', 'age', 'gender', '爱好']
    },
    encoding="utf-8"
)

for document in loader.lazy_load():
    print(document)

# 代码解析

  1. 创建CSVLoader实例

    • file_path:指定CSV文件路径
    • csv_args:配置CSV解析参数
      • delimiter: ",":指定逗号为字段分隔符
      • quotechar: '"':指定双引号为引用字符
      • fieldnames:自定义列名列表,当CSV文件没有表头或需要覆盖表头时使用
    • encoding:指定文件编码为UTF-8,避免中文乱码
  2. 惰性加载:使用lazy_load()逐行加载文档,每次只处理一行数据。相比load()一次性加载所有数据,惰性加载更节省内存,特别适合处理大型CSV文件。

  3. 输出结果:每个Document对象的page_content包含该行所有字段的键值对文本,metadata包含source(文件路径)和row(行号)等信息。

# 关键要点

  • CSVLoader将CSV文件的每一行转换为一个Document对象
  • csv_args支持自定义分隔符、引用字符和列名等CSV解析参数
  • fieldnames参数可用于指定列名,适用于无表头或需要覆盖表头的场景
  • load()一次性加载所有文档,lazy_load()惰性加载节省内存
  • 每个Documentmetadata包含source(文件路径)和row(行号)信息

# 小结

CSVLoader是RAG数据加载环节的基础工具,它将结构化的CSV数据转换为LangChain标准的Document对象,为后续的文本分割、向量化存储和检索奠定基础。通过灵活的csv_args配置,我们可以适应各种CSV格式变体。在实际项目中,建议优先使用lazy_load()处理大文件,以避免内存溢出问题。

Last Updated: 2026/6/4 16:02:48