赞
踩
目录
1、使用每个文档一行的 CSV 数据加载 CSVLoader
3、指定用于 标识文档来源的 列(source_column
1、加载 html (UnstructuredHTMLLoader
3、提取元数据 (Extracting metadata)通常,我们希望将 JSON 文件中的元数据包含到从内容创建的文档中。
(六)、Markdown ( UnstructuredMarkdownLoader
(1) 上传文档:用户上传包含知识的文档,支持 txt、pdf、docx 等格式,LangChain Chatchat 会将文档转换为 Markdown 格式
(2) 文本切割:为了便于分析和处理,将长文本切割为小块(chunk)
(3) 文本向量化:将切割的 chunk 通过 embedding 技术,转换为算法可以处理的向量,存入向量数据库
(4) 问句向量化:用户提问后,同样将用户的问句向量化
(5) 语义检索匹配:将用户的问句与向量数据库中的 chunk 匹配,匹配出与问句向量最相似的 top k 个
(6) 提交 prompt 至 LLM:将匹配出的文本和问句,一起添加到配置好的 prompt 模板中,提交给 LLM
(7) 生成回答:LLM 生成回答,返回给用户
LangChain封装了一系列类型的文档加载模块,例如PDF、CSV、HTML、JSON、Markdown、File Directory等。下面以PDF文件夹在为例看一下用法,其它类型的文档加载的用法都类似。
LangChain加载PDF文件使用的是pypdf,先安装:
pip install pypdf
- from langchain_community.document_loaders import PyPDFLoader
-
- loader = PyPDFLoader("知识问答.pdf")
- pages = loader.load_and_split()
-
- print(f"第0页:\n{pages[0]}") ## 也可通过 pages[0].page_content只获取本页内容
加载在线PDF文件
在开始之前,你可能需要安装以下的Python包:
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple unstructured
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pdf2image
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple unstructured-inference
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pikepdf
除了Python包,还需要下载 nltk_data,这东西非常大,下载起来非常慢。所以们可以事先下好,放到固定的位置。
下载地址:https://github.com/nltk/nltk_data/tree/gh-pages
下载完后,将其中的packages文件夹内的全部内容拷贝到固定位置,例如上面的
原文链接:https://blog.csdn.net/Attitude93/article/details/135996698
- from langchain_community.document_loaders import OnlinePDFLoader
-
- loader = OnlinePDFLoader("https://arxiv.org/pdf/2302.03803.pdf")
- data = loader.load()
- print(data)
逗号分隔值(CSV) 文件是一种使用逗号分隔值的定界文本文件。
文件的每一行是一个数据记录;每个记录由一个或多个字段组成,字段之间用逗号分隔。
- from langchain.document_loaders.csv_loader import CSVLoader
-
- loader = CSVLoader(file_path='./example_data/mlb_teams_2012.csv')
- data = loader.load()
参见 csv 模块 文档,了解支持的 csv 参数的更多信息。
- loader = CSVLoader(file_path='./mlb_teams_2012.csv',
- csv_args={
- 'delimiter': ',',
- 'quotechar': '"',
- 'fieldnames': ['MLB Team', 'Payroll in millions', 'Wins']
- })
-
- data = loader.load()
使用 source_column
参数指定从每一行创建的文档的来源。
否则,file_path
将作为从 CSV 文件创建的所有文档的来源。
在使用基于来源回答问题的链时,这非常有用。
- loader = CSVLoader(file_path='./example_data/mlb_teams_2012.csv',
- source_column="Team")
-
- data = loader.load()
这里介绍了如何加载目录中的所有文档。
在底层,默认情况下使用 UnstructuredLoader
我们可以使用 glob
参数来控制要加载的文件。
请注意,这里不加载 .rst
文件或 .html
文件。
- from langchain.document_loaders import DirectoryLoader
- loader = DirectoryLoader('../', glob="**/*.md")
- docs = loader.load()
- len(docs) # -> 1
默认情况下,不会显示进度条。
要显示进度条,请安装 tqdm
库(如 pip install tqdm
),并将 show_progress
参数设置为 True
。
- loader = DirectoryLoader('../',
- glob="**/*.md",
- show_progress=True)
- docs = loader.load()
默认情况下,加载操作在 一个线程 中进行。
为了利用多个线程,将 use_multithreading
标志设置为 True。
- loader = DirectoryLoader('../',
- glob="**/*.md",
- use_multithreading=True)
- docs = loader.load()
默认情况下使用 UnstructuredLoader
类。但是,您可以相当容易地 更改加载器的类型。
- from langchain.document_loaders import TextLoader
-
- loader = DirectoryLoader('../',
- glob="**/*.md",
- loader_cls=TextLoader)
-
- docs = loader.load()
- len(docs)
- # -> 1
超文本标记语言或 HTML 是用于在 Web 浏览器中显示的文档的标准标记语言。
这部分介绍如何将 HTML
文档加载到 我们可以在下游使用的文档格式中。
- from langchain.document_loaders import UnstructuredHTMLLoader
- loader = UnstructuredHTMLLoader("example_data/fake-content.html")
- data = loader.load()
- from langchain.document_loaders import BSHTMLLoader
- loader = BSHTMLLoader("example_data/fake-content.html")
- data = loader.load()
JSON (JavaScript Object Notation) 是一种开放标准的文件格式和数据交换格式,存储和传输方便,且可读。
JSON 对象由属性 key - 值 value 对和数组(或其他可序列化值)组成的数据对象。
- import json
- from pathlib import Path
- from pprint import pprint
-
- from langchain.document_loaders import JSONLoader
-
- file_path='./facebook_chat.json'
- data = json.loads(Path(file_path).read_text())
JSONLoader
使用指定的 jq schema 来解析 JSON 文件。
它使用 jq
python 包。 查看这个 手册 来详细了解 jq
语法。
- pip install jq
-
-
- loader = JSONLoader(
- file_path='./facebook_chat.json',
- jq_schema='.messages[].content')
-
- data = loader.load()
-
下面演示了如何使用 JSONLoader 提取元数据。
需要注意一些关键的更改。在前一个示例中,我们没有收集元数据,在模式中直接指定了 page_content 的值的提取位置。
Markdown 是一种轻量级标记语言,用于使用纯文本编辑器创建格式化文本。
这部分内容介绍了如何将 Markdown
文档 加载到我们可以在应用程序中 要使用的文档格式中。
! pip install unstructured > /dev/null
- from langchain.document_loaders import UnstructuredMarkdownLoader
- markdown_path = "../../../../../README.md"
- loader = UnstructuredMarkdownLoader(markdown_path)
- data = loader.load()
在底层,Unstructured 为不同的文本块创建不同的“元素”。
默认情况下,我们将它们组合在一起,但通过指定 mode="elements"
可以轻松保留该分离。
- loader = UnstructuredMarkdownLoader(markdown_path,
- mode="elements")
- data = loader.load()
更多方法可以阅读此篇文章 LangChain - 文档加载_langchain自带页面来源文档展示部分-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。