|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 什么是文档加载器,有什么用?
文档加载器提供了一套标准接口,用于将不同来源(如CSV、PDF 或JSON等)的数据读取为LangChain的文档格式。
这确保了无论数据来源如何,都能对其进行一致性处理。
注:
- 文档加载器均继承于BaseLoader类
- 返回Document类型的对象
2. 常见的文件类型加载实战
①CSV Loader
- # 方式1: 一次性批量加载
- from langchain_community.document_loaders import CSVLoader
- loader = CSVLoader(
- file_path="E:/data/stu.csv", # 按实际情况修改文件地址
- csv_args={
- "delimiter": ",", # 指定分隔符
- "quotechar": '"', # 指定带有分隔符文本的引号包围是单引号还是双引号
- # 如果数据原本有表头,就不要下面的代码,如果没有可以使用
- "fieldnames": ['name', 'age', 'gender', '爱好']
- },
- encoding="utf-8" # 指定编码为UTF-8
- )
- # 批量加载 .load() -> [Document, Document, ...]
- documents = loader.load()
- #print(documents)
- for document in documents:
- print(type(document), document)
- # 方式2: 懒加载,延迟流式传输文档,对大型数据集很有用,避免内存溢出。
- from langchain_community.document_loaders import CSVLoader
- loader = CSVLoader(
- file_path="E:/P3_LangChainRAG开发/data/stu.csv", #按实际情况修改文件地址
- csv_args={
- "delimiter": ",", # 指定分隔符
- "quotechar": '"', # 指定带有分隔符文本的引号包围是单引号还是双引号
- # 如果数据原本有表头,就不要下面的代码,如果没有可以使用
- "fieldnames": ['name', 'age', 'gender', '爱好']
- },
- encoding="utf-8" # 指定编码为UTF-8
- )
- #懒加载 .lazy_load() 迭代器[Document]
- for document in loader.lazy_load():
- print(document)
复制代码
②Json Loader
- from langchain_community.document_loaders import JSONLoader
- loader = JSONLoader(
- file_path="E:/data/stu_json_lines.json",
- jq_schema=".name",
- text_content=False, # 告知JSONLoader 我抽取的内容不是字符串
- json_lines=True # 告知JSONLoader 这是一个JSONLines文件(每一行都是一个独立的标准JSON)
- )
- document = loader.load()
- print(document)
复制代码
③text Loader
- from langchain_community.document_loaders import TextLoader
- from langchain_text_splitters import RecursiveCharacterTextSplitter
- # pip install langchain_text_splitters
- loader = TextLoader("E:/data/Python基础语法.txt", encoding="utf-8")
- docs = loader.load() # [Document]
- splitter = RecursiveCharacterTextSplitter(
- chunk_size=500, # 分段的最大字符数
- chunk_overlap=50, # 分段之间允许重叠字符数
- # 文本自然段落分隔的依据符号
- separators=["\n\n", "\n", "。", "!", "?", ".", "!", "?", " ", ""],
- length_function=len, # 统计字符的依据函数
- )
- split_docs = splitter.split_documents(docs)
- print(len(split_docs))
- for doc in split_docs:
- print("="*20)
- print(doc)
- print("="*20)
复制代码
④PyPDFLoader
- from langchain_community.document_loaders import PyPDFLoader
- loader = PyPDFLoader(
- file_path="E:/data/pdf2.pdf",
- #mode="single", # 默认是page模式,每个页面形成一个Document文档对象,
- # single模式,不管有多少页,只返回1个Document对象
- password="itheima"
- )
- i = 0
- for doc in loader.lazy_load():
- i += 1
- print(doc)
- print("="*20, i)
复制代码
|
|