文章目录
RAG 技术教程:RAG文本加载
在 RAG(检索增强生成)系统中,文本加载是构建知识库的 “第一步”,也是整个流程的基础。它的核心作用是将分散在各种格式(如 TXT、PDF、CSV、HTML 等)中的原始文本数据 “接入” RAG 系统,为后续的检索和生成提供可处理的 “原材料”。没有文本加载,RAG 系统就无法获取外部知识,“检索增强” 也就无从谈起。
RAG的文本加载器
langchain提供了一些文本加载器,使用文档加载器可以从源加载数据转换为Document。
Document包含两个属性page_content(文本)和metadata=(元数据,即来源、标题等等)
导入依赖:
pip install pypdf==5.1.0
pip install unstructured==0.16.6 markdown==3.7
pip install jq==1.8.0 python-magic-bin==0.4.14
加载 TXT 文件
该代码用于加载 TXT 格式的文本文件。初始化加载器时指定目标 TXT 文件路径(如 “test.txt”)和编码格式(UTF-8),调用load()方法后可将文件内容加载为文档对象。
from langchain_community.document_loaders import TextLoader
txt_loader = TextLoader("test.txt", encoding="UTF-8")
txt_data = txt_loader.load()
print(txt_data)
加载 CSV 文件
此代码针对 CSV 格式文件进行加载处理。导入CSVLoader类后,通过file_path参数指定 CSV 文件路径(如 “test.csv”)并设置编码为 UTF-8 创建加载器实例。调用load()方法加载数据后,csv_data会包含 CSV 文件中的结构化数据,以文档对象形式呈现。打印结果可查看加载的表格数据内容,便于后续从结构化数据中提取知识片段。
from langchain_community.document_loaders import CSVLoader
csv_loader = CSVLoader(file_path="test.csv", encoding="UTF-8")
csv_data = csv_loader.load()
print(csv_data)
加载 PDF 文件
该代码实现 PDF 文件的加载与分割功能。使用PyPDFLoader类初始化加载器并指定 PDF 文件路径(如 “test.pdf”),调用load_and_split()方法可将 PDF 按页面分割为多个文档对象。pages变量存储分割后的每页内容,打印后能看到每页的文本内容及页码等元数据。这种按页分割的方式适合处理多页 PDF,为后续文档分片提供基础。
from langchain_community.document_loaders import PyPDFLoader
loader = PyPDFLoader("test.pdf")
pages = loader.load_and_split() # 按页面分割 PDF
print(pages)
加载 Markdown 文件
此代码用于加载 Markdown 格式文档。通过UnstructuredMarkdownLoader类创建加载器,指定 MD 文件路径(如 “test.md”)并设置mode="elements"模式,该模式会保留 Markdown 中的元素结构(如标题、列表等)。load()方法加载后的数据包含结构化的文档内容,打印结果可查看提取的文本及元素类型信息,便于保留原始文档的格式逻辑。
from langchain_community.document_loaders import UnstructuredMarkdownLoader
loader = UnstructuredMarkdownLoader(file_path="test.md", mode="elements")
data = loader.load()
print(data)
加载 JSON 文件
该代码针对 JSON 文件实现特定字段的加载。使用JSONLoader类时,需通过file_path指定 JSON 文件路径(如 “test.json”),并通过jq_schema=".skills"参数定义 JSON 数据的提取规则(此处提取 “skills” 字段下的内容)。加载后的数据聚焦于指定字段的内容,打印结果可查看提取的目标信息,适用于从 JSON 结构中精准获取所需知识。
from langchain_community.document_loaders import JSONLoader
loader = JSONLoader(file_path="test.json", jq_schema=".skills")
data = loader.load()
print(data)
加载 HTML 文件
方法一:使用 UnstructuredHTMLLoader
通过UnstructuredHTMLLoader类加载 HTML 文件(如 “test.html”),该加载器会对 HTML 内容进行非结构化处理,提取其中的文本信息。load()方法返回处理后的文档对象,打印结果可查看 HTML 中的纯文本内容,适合快速获取网页文本信息。
# 使用UnstructuredHTMLLoader加载HTML文件
from langchain_community.document_loaders import UnstructuredHTMLLoader
loader = UnstructuredHTMLLoader("test.html")
data = loader.load()
print(data)
方法二:使用 BSHTMLLoader
BSHTMLLoader类加载 HTML 文件时会利用 BeautifulSoup 解析器,除提取文本外还能保留页面结构信息(如标题等)。加载后的数据data1包含解析后的结构化内容,打印结果可看到页面标题及正文文本,适合需要保留 HTML 文档结构特征的场景。
# 使用BSHTMLLoader加载HTML,提取页面标题
from langchain_community.document_loaders import BSHTMLLoader
loader1 = BSHTMLLoader("test.html")
data1 = loader1.load()
print(data1)
此时我们就拿到了我们想要的文本数据,下一节我将讲解一下如何去进行文本的分割。