RAG(Retrieval-Augmented Generation)时,对非结构化文档进行解析是至关重要的步骤,因为有多种优势。 此图是整体的RAG流程,供参考,本文主要讲的是数据准备阶段。
在Hugging Face中,有多种模型和工具可以用于非结构化文档解析,以下是一些推荐的模型和工具:
Unstructured是一个功能强大的Python库,提供了一系列开源组件,用于摄取和预处理各种非结构化文档,如PDF、HTML、Word文档等。其核心目标是将非结构化数据转换为结构化数据,以便后续处理。
Unstructured 会依赖NLTK(自然语言处理工具包),这个可能需要自己手动下载,可以参考
https://zhuanlan.zhihu.com/p/599003991
PaperMage是一个专门用于解析PDF文档的工具,特别适用于学术论文。它通过以下步骤进行文档解析:
RAGFlow DeepDoc是一个支持多种文本切片模板的组件,适用于不同的业务场景。它可以帮助将非结构化文档解析为结构化数据,提升信息检索和文本生成的准确性和效率。
unstructured-inference是一个专注于非结构化数据预处理的Python库,其核心功能包括文档布局解析和光学字符识别(OCR)。它支持多种检测模型,如Detectron2和YOLOX,并可通过API与unstructured包集成。
LangChain提供了一系列文档加载器,可以用于加载和解析各种格式的非结构化文档,如Word、PDF、Email、图片、Markdown和PPT等。以下是一些常用的加载器:
from langchain.document_loaders import UnstructuredWordDocumentLoader
loader = UnstructuredWordDocumentLoader("example_data/fake.docx")
data = loader.load()
print(data)from langchain.document_loaders import UnstructuredFileLoader
loader = UnstructuredFileLoader("./example_data/layout-parser-paper.pdf", mode="elements")
docs = loader.load()
print(docs[:5])-**使用PyPDF工具**:
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("example_data/layout-parser-paper.pdf")
pages = loader.load_and_split()-**在线读取工具**:
from langchain.document_loaders import OnlinePDFLoader
loader = OnlinePDFLoader("https://arxiv.org/pdf/2302.03803.pdf")
data = loader.load()
print(data)-**使用PDFMiner库**:
from langchain.document_loaders import PDFMinerLoader
loader = PDFMinerLoader("example_data/layout-parser-paper.pdf")
data = loader.load()from langchain.document_loaders import UnstructuredEmailLoader
loader = UnstructuredEmailLoader('example_data/fake-email.eml')
data = loader.load()from langchain.document_loaders.image import UnstructuredImageLoader
loader = UnstructuredImageLoader("layout-parser-paper-fast.jpg")
data = loader.load()loader = document_loaders.UnstructuredFileLoader(filepath, mode="elements", autodetect_encoding=True)
docs = loader.load()from langchain.document_loaders import UnstructuredPowerPointLoader
loader = UnstructuredPowerPointLoader("example_data/fake-power-point.pptx")
data = loader.load()待后续单独开一篇文章写一下这方面的问题和挑战,敬请期待...
Hugging Face提供了多种高质量的Embedding模型,能够将文本转换为向量表示,用于计算文本之间的语义相似度,从而实现精准的信息检索。这些模型可以与Elasticsearch等向量存储系统结合使用,构建高效的检索增强生成(RAG)系统。Hugging Face上对中文比较友好的Embedding模型:
注意:如果下载过程遇到网络不通的问题,可以通过国内镜像https://hf-mirror.com/或者modelscope(https://www.modelscope.cn/models)下载
bert-base-chineseuer/roberta-base-finetuned-cluener2020hfl/chinese-bert-wwm-exthfl/chinese-roberta-wwm-exthfl/chinese-bert-wwm-ext,也是全词掩码预训练的模型,性能稍高,可用于中文命名实体识别等任务。WENGSYX/Deberta-Chinese-Largegoogle-bert/bert-base-multilingual-casedFacebookAI/xlm-roberta-base这些模型在中文自然语言处理任务中表现出色,可以根据具体任务选择合适的模型进行使用或微调。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |