要从磁盘加载文件到LangChain的Document对象。LangChain提供了一个叫DirectoryLoader
的工具,用于从文件系统读取不同类型的文件。我来详细总结一下我的具体步骤。
基础加载
首先,我们来看看最基本的加载方法。这时候,我们使用DirectoryLoader
来读取markdown文件:
from langchain_community.document_loaders import DirectoryLoader
# 使用glob参数指定文件类型
loader = DirectoryLoader("../", glob="**/*.md")
docs = loader.load()
print(f"总共加载了 {len(docs)} 个文档")
# 打印第一个文档的前100个字符
print(docs[0].page_content[:100])
显示进度条
有时候,文件加载过程可能比较慢,显示一个进度条能让我们更直观地了解进度。这时候只需要安装tqdm
库并设置show_progress
参数:
# 确保已经安装 tqdm: pip install tqdm
loader = DirectoryLoader("../", glob="**/*.md", show_progress=True)
docs = loader.load()
多线程加载
当文件数量非常多时,单线程读取文件可能效率不高。我们可以启用多线程以提升速度:
loader = DirectoryLoader("../", glob="**/*.md", use_multithreading=True)
docs = loader.load()
自定义加载器类
默认情况下,DirectoryLoader
使用UnstructuredLoader
,它能够处理多种文件类型。但有时候我们需要自定义加载方式,比如只加载纯文本文件,可以这样做:
from langchain_community.document_loaders import TextLoader
loader = DirectoryLoader("../", glob="**/*.md", loader_cls=TextLoader)
docs = loader.load()
print(docs[0].page_content[:100])
注意:TextLoader
不会像UnstructuredLoader
那样解析Markdown标题。
加载Python源代码
如果你的目的是解析Python代码文件,这里有专门的PythonLoader
:
from langchain_community.document_loaders import PythonLoader
loader = DirectoryLoader("../../../../../", glob="**/*.py", loader_cls=PythonLoader)
docs = loader.load()
处理文件编码问题
文件编码不同可能造成读取错误。DirectoryLoader
可以帮助解决这些问题,通过使用TextLoader
来处理文件编码:
# 处理非UTF8编码文件
path = "../../../../libs/langchain/tests/unit_tests/examples/"
loader = DirectoryLoader(path, glob="**/*.txt", loader_cls=TextLoader)
docs = loader.load()
使用上述这些方法,就能轻松地从不同来源、不同类型的文件中提取出所需的文档,并且能够根据具体需求进行定制。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。