Langchain 对pdf,word,txt等不同文件的加载解析

项目中遇到各种数据资源想要加载近langchain构建本地知识ai系统,怎么加载对应的文件格式呢,一起研究下

引入Langchain

from langchain.document_loaders import UnstructuredWordDocumentLoader,PyPDFium2Loader,DirectoryLoader,PyPDFLoader,TextLoader
import os

pdf文件加载

def load_pdf(directory_path):
    data = []
    for filename in os.listdir(directory_path):
        if filename.endswith(".pdf"):
            print(filename)
            # print the file name
            loader = PyPDFium2Loader(f'{directory_path}/{filename}')
            print(loader)
            data.append(loader.load())
    return data

word文档加载如,doc或者docx格式

def load_word(directory_path):
    data = []
    for filename in os.listdir(directory_path):
        # check if the file is a doc or docx file
        # 检查所有doc以及docx后缀的文件
        if filename.endswith(".doc") or filename.endswith(".docx"):
            # langchain自带功能,加载word文档
            loader = UnstructuredWordDocumentLoader(f'{directory_path}/{filename}')
            data.append(loader.load())

    return data

txt加载

def load_txt(directory_path):
    data = []
    for filename in os.listdir(directory_path):
        if filename.endswith(".txt"):
            print(filename)
            loader = TextLoader(f'{directory_path}/{filename}')
            print(loader)
            data.append(loader.load())

    return data

上述中常见的文档格式基本上都可以加载进去了,主要就是不同格式对应不同的加载方式,如果想简单也可以直接加载目录

def load_docs(directory):
    loader = DirectoryLoader(directory)
    documents = loader.load()
    return documents
### LangChain 文件解析教程 LangChain 是一种强大的框架,用于连接大型语言模型 (LLM) 和其他外部工具或资源。文件解析是其常见应用场景之一,可以通过多种方式实现。以下是基于已知引用内容和专业知识的综合解答。 #### 安装依赖 为了使用 LangChain 解析文件,通常需要安装 `langchain` 库以及其他可能涉及的第三方库。例如,在某些情况下,您还需要安装支持文件读取、文本提取或其他操作的相关包。 ```bash pip install langchain openai pypdf unstructured ``` 上述命令中的 `pypdf` 和 `unstructured` 常被用来处理 PDF 或非结构化文档的内容提取[^3]。 --- #### 创建文件解析链 下面是一个完整的示例代码,展示如何使用 LangChain解析文件: ```python from langchain.document_loaders import UnstructuredFileLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains.question_answering import load_qa_chain from langchain.chat_models import ChatOpenAI # 加载文件 loader = UnstructuredFileLoader("example.pdf") # 替换为目标文件路径 data = loader.load() # 将加载的数据拆分为更小的部分以便于后续处理 text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0) texts = text_splitter.split_documents(data) # 使用嵌入向量存储数据 embeddings = OpenAIEmbeddings() docsearch = Chroma.from_documents(texts, embeddings) # 初始化问答链 llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0) qa_chain = load_qa_chain(llm, chain_type="stuff") # 查询文件内容 query = "请总结这份文件的主要内容" docs = docsearch.similarity_search(query) response = qa_chain.run(input_documents=docs, question=query) print(response) ``` 此代码片段实现了以下几个主要步骤: 1. **加载文件**:通过 `UnstructuredFileLoader` 可以加载各种类型的文件PDFWord 文档等),并将它们转换为纯文本形式。 2. **分割文本**:由于大多数 LLM 对输入长度有限制,因此需要将大段文本分成较小部分。这里使用了 `RecursiveCharacterTextSplitter` 工具完成这一任务。 3. **生成嵌入向量**:利用 OpenAI 的嵌入服务 (`OpenAIEmbeddings`) 计算每一段文字的语义特征,并将其存入矢量数据库(如 Chroma)中。 4. **查询与响应**:当用户提供自然语言问题时,程序会先检索最相关的文档片段,再由 LLM 给出最终答案。 --- #### 错误处理与优化策略 在实际应用过程中可能会遇到一些挑战,比如文件格式不兼容或者返回的结果不够理想等问题。针对这些问题可以采取如下措施: - 如果发现某些特殊格式无法正常解析,则需调整所使用的加载器类型; - 当面对复杂多样的资料集时,考虑引入更多的预处理逻辑来提升质量; - 设置合理的超参数组合(像分块大小、重叠比例等),从而平衡性能表现与成本开销之间的关系。 此外,还可以借鉴之前提到过的 Anthropic API 方法论[^1],即采用结构化的输出模式进一步提高系统的稳定性和可控度。 --- ### 总结 以上就是关于如何借助 LangChain 实现高效便捷的文件解析功能的具体介绍。希望这些信息能够帮助到正在探索该领域的朋友!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_81D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值