Document loaders和Text splitters
Document loaders(文档加载器)
Document loaders(文档加载器) 这些类加载文档对象。LangChain与各种数据源有数百个集成,可以从中加载数据:Slack、Notion、Google Drive等。 每个文档加载器都有自己特定的参数,但它们可以通过相同的方式使用.load
方法调用。 以下是一个示例用法:
from langchain_community.document_loaders.csv_loader import CSVLoader
loader = CSVLoader(
... # <-- 在这里添加特定于集成的参数
)
data = loader.load()
如何加载 CSV 文件
逗号分隔值(CSV)文件是一种使用逗号分隔值的定界文本文件。文件的每一行是一个数据记录。每个记录由一个或多个字段组成,字段之间用逗号分隔。
LangChain 实现了一个 CSV 加载器,可以将 CSV 文件加载为一系列 Document 对象。CSV 文件的每一行都会被翻译为一个文档。
#示例:csv_loader.py
from langchain_community.document_loaders.csv_loader import CSVLoader
file_path = (
"../../resource/doc_search.csv"
)
loader = CSVLoader(file_path=file_path,encoding="UTF-8")
data = loader.load()
for record in data[:2]:
print(record)
输出的结果
自定义 CSV 解析和加载
CSVLoader
接受一个 csv_args
关键字参数,用于自定义传递给 Python 的 csv.DictReader
的参数。有关支持的 csv 参数的更多信息,请参阅 csv 模块 文档。
#示例:csv_custom.py
from langchain_community.document_loaders.csv_loader import CSVLoader
file_path = (
"../../resource/doc_search.csv"
)
loader = CSVLoader(
file_path=file_path,
encoding="UTF-8",
csv_args={
"delimiter": ",",
"quotechar": '"',
"fieldnames": ["Name", "Species", "Age", "Habitat"],
},
)
data = loader.load()
for record in data[:2]:
print(record)
如何加载 HTML
超文本标记语言(HTML)是用于在Web浏览器中显示的文档的标准标记语言。
这里介绍了如何将HTML文档加载到LangChain的Document对象中,以便我们可以在下游使用。
解析HTML文件通常需要专门的工具。在这里,我们演示了如何通过Unstructured和BeautifulSoup4进行解析,可以通过pip安装。
使用Unstructured加载HTML
%pip install "unstructured[html]"
#示例:html_loader.py
from langchain_community.document_loaders import UnstructuredHTMLLoader
file_path = "../../resource/content.html"
loader = UnstructuredHTMLLoader(file_path, encodings="UTF-8")
data = loader.load()
print(data)
使用BeautifulSoup4加载HTML
我们还可以使用BeautifulSoup4使用BSHTMLLoader
加载HTML文档。这将将HTML中的文本提取到page_content
中,并将页面标题提取到metadata
的title
中。
#示例:html_bs4.py
from langchain_community.document_loaders import BSHTMLLoader
file_path = "../../resource/content.html"
loader = BSHTMLLoader(file_path, open_encoding="UTF-8")
data = loader.load()
print(data)
如何加载 PDF文件
便携式文档格式(PDF)是由Adobe于1992年开发的一种文件格式,标准化为ISO 32000。它以一种与应用软件、硬件和操作系统无关的方式呈现文档,包括文本格式和图像。
本指南介绍了如何将PDF文档加载到我们在下游使用的LangChain Document格式中。
LangChain集成了许多PDF解析器。有些解析器简单且相对低级,而其他解析器支持OCR和图像处理,或进行高级文档布局分析。选择合适的解析器将取决于您的应用程序。下面我们列举了一些可能的选择。
使用PyPDF
这里我们使用pypdf
将PDF加载为文档数组,其中每个文档包含页面内容和带有page
编号的元数据。
#示例:pdf_loader.py
from langchain_community.document_loaders import PyPDFLoader
file_path = ("../../resource/pytorch.pdf")
loader = PyPDFLoader(file_path)
pages = loader.load_and_split()
print(pages[0])
这种方法的优点是可以通过页码检索文档。
对PDF进行向量搜索
一旦我们将PDF加载到LangChain的Document
对象中,我们可以像通常一样对它们进行索引(例如,RAG应用程序)
#示例:pdf_search.py
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
faiss_index = FAISS.from_documents(pages, OpenAIEmbeddings())
docs = faiss_index.similarity_search("What is PyTorch?", k=2)
for doc in docs:
print(str(doc.metadata["page"]) + ":", doc.page_content[:300])
从图像中提取文本一些 PDF 包含文本图像,例如扫描文档或图表。使用 `rapidocr-onnxruntime` 软件包,我们也可以将图像提取为文本:
#示例:pdf_image_text.py
#pip install rapidocr-onnxruntime
file_path = ("../../resource/pytorch.pdf")
loader = PyPDFLoader(file_path, extract_images=True)
pages = loader.load()
#识别第9页图片文字
print(pages[8].page_content)
下一篇日记。为大家分享文本分类器如何分类。