背景描述
LangChain 提供了多种文档加载器,包括但不限于以下几种:
TextLoader:用于从各种来源加载文本数据。
CSVLoader:用于加载 CSV 文件并将其转换为 LangChain 可以处理的文档格式。
UnstructuredFileLoader:能够自动检测并处理不同格式的文件。
DirectoryLoader:用于加载指定文件夹中的文件。
UnstructuredHTMLLoader:用于从 HTML 文件中提取有意义的内容。
JSONLoader:用于加载和处理 JSON 文件。
PyPDFLoader:用于加载 PDF 文件。
ArxivLoader:专门用于加载来自 Arxiv 的文档。
安装依赖
pip install -qU langchain-core langchain-openai
加载Text
编写代码
from langchain_community.document_loaders import TextLoader loader = TextLoader("./index.md") data = loader.load() print(data)
运行结果
➜ python3 test20.py [Document(page_content='# hello world!\nthis is a markdown!\n', metadata={'source': '
加载CSV
编写代码
from langchain_community.document_loaders.csv_loader import CSVLoader loader = CSVLoader(file_path='./example_data/mlb_teams_2012.csv') data = loader.load() print(data)
运行结果
loader = CSVLoader(file_path='./example_data/mlb_teams_2012.csv', csv_args={ 'delimiter': ',', 'quotechar': '"', 'fieldnames': ['MLB Team', 'Payroll in millions', 'Wins'] }) data = loader.load() print(data)
加载目录
编写代码
from langchain_community.document_loaders import DirectoryLoader loader = DirectoryLoader('../', glob="**/*.md") docs = loader.load() print(docs) # 显示一个 进度条 loader = DirectoryLoader('../', glob="**/*.md", show_progress=True) # 多线程加载 loader = DirectoryLoader('../', glob="**/*.md", use_multithreading=True) # 自动检测编码 text_loader_kwargs={'autodetect_encoding': True} loader = DirectoryLoader(path, glob="**/*.txt", loader_cls=TextLoader, loader_kwargs=text_loader_kwargs)
加载HTML
编写代码
from langchain_community.document_loaders import UnstructuredHTMLLoader from langchain_community.document_loaders import BSHTMLLoader loader = UnstructuredHTMLLoader("example_data/fake-content.html") data = loader.load() print(data) # 如果你会用 BeautifulSoup4 的话,可以用它解析 loader = BSHTMLLoader("example_data/fake-content.html") data = loader.load() print(data)
加载JSON
编写代码
from langchain_community.document_loaders import JSONLoader import json from pathlib import Path from pprint import pprint # 普通的加载 json.loads file_path='./example_data/facebook_chat.json' data = json.loads(Path(file_path).read_text()) pprint(data) # 使用 JSONLoader loader = JSONLoader( file_path='./example_data/facebook_chat.json', jq_schema='.messages[].content', text_content=False) data = loader.load() pprint(data)
加载JSON LINES
编写代码
from langchain_community.document_loaders import JSONLoader import json from pathlib import Path from pprint import pprint file_path = './example_data/facebook_chat_messages.jsonl' pprint(Path(file_path).read_text()) loader = JSONLoader( file_path='./example_data/facebook_chat_messages.jsonl', jq_schema='.content', text_content=False, json_lines=True) data = loader.load() pprint(data)
加载Markdown
编写代码
from langchain_community.document_loaders import UnstructuredMarkdownLoader markdown_path = "../../../../../README.md" loader = UnstructuredMarkdownLoader(markdown_path) data = loader.load()
加载PDF
安装依赖
pip install pypdf pip install rapidocr-onnxruntime
编写代码
from langchain_community.document_loaders import PyPDFLoader # 加载方式很多,不止这一个PDF的Loader loader = PyPDFLoader("example_data/layout-parser-paper.pdf") pages = loader.load_and_split() print(pages[0]) # 可以将图片转化为文字 loader = PyPDFLoader("https://arxiv.org/pdf/2103.15348.pdf", extract_images=True) pages = loader.load() pages[4].page_content
向量化数据(简单例子 详细可看该系列的其他文章)
编写代码
from langchain_community.vectorstores import FAISS from langchain_openai import OpenAIEmbeddings faiss_index = FAISS.from_documents(pages, OpenAIEmbeddings()) docs = faiss_index.similarity_search("How will the community be engaged?", k=2) for doc in docs: print(str(doc.metadata["page"]) + ":", doc.page_content[:300])