Loader - local file

基本介绍

local file 文件加载器是 Document Loader 接口的一个实现,用于从本地文件系统中加载文档内容。该组件实现了 Eino: Document Loader 使用说明

特性介绍

本地文件加载器具有以下特点:

  • 支持通过文件路径直接加载文档
  • 自动识别文件类型并选择合适的解析器 (需设置 ExtParser)
  • 保留文件的元数据信息
  • 支持将文件名作为文档 ID

使用方式

组件初始化

本地文件加载器通过 NewFileLoader 函数进行初始化,主要配置参数如下:

loader, err := NewFileLoader(ctx, &FileLoaderConfig{
    UseNameAsID: true,                // 是否使用文件名作为文档ID
    Parser:      &parser.TextParser{}, // 可选:指定自定义解析器
})

配置参数说明:

  • UseNameAsID:是否将文件名用作文档 ID
  • Parser:文档解析器,如果不指定则使用默认的扩展名解析器(ExtParser,当前仅实现了 TextParser)

加载文档

文档加载通过 Load 方法实现:

docs, err := loader.Load(ctx, document.Source{
    URI: "./path/to/document.txt",
})

文档加载后会自动添加以下元数据:

  • _file_name:文件名
  • _extension:文件扩展名
  • _source:文件的完整路径

注意事项:

  • 路径必须指向一个文件,不能是目录
  • 文件必须可读
  • 如果 UseNameAsID 为 true,单文件时使用文件名作为 ID,多文档时使用 文件名_序号 作为 ID

完整使用示例

单独使用

package main

import (
    "context"
    
    fileloader "github.com/cloudwego/eino-ext/components/document/loader/file"
    "github.com/cloudwego/eino/components/document"
)

func main() {
    ctx := context.Background()
    
    // 初始化加载器
    loader, err := fileloader.NewFileLoader(ctx, &fileloader.FileLoaderConfig{
        UseNameAsID: true,
    })
    if err != nil {
        panic(err)
    }
    
    // 加载文档
    docs, err := loader.Load(ctx, document.Source{
        URI: "./documents/sample.txt",
    })
    if err != nil {
        panic(err)
    }
    
    // 使用文档内容
    for _, doc := range docs {
        println(doc.Content)
        // 访问元数据
        fileName := doc.MetaData[fileloader.MetaKeyFileName]
        extension := doc.MetaData[fileloader.MetaKeyExtension]
        source := doc.MetaData[fileloader.MetaKeySource]
    }
}

相关文档


最后修改 January 9, 2025 : feat: add eino cn docs (#1182) (ad75444)