当前位置: 首页 > news >正文

LangChain教程 - RAG - PDF摘要

系列文章索引
LangChain教程 - 系列文章

随着人工智能和大语言模型(LLM)的快速发展,越来越多的工具和平台被引入以简化我们的日常任务。LangChain是一个非常强大的框架,它能够帮助开发者构建与LLM(如OpenAI、Ollama等)进行交互的应用程序。本篇博客将详细介绍如何结合LangChain和Ollama的API来对PDF文档进行自动化总结。

在本示例中,我们将介绍如何通过几个简单的步骤:加载PDF文件、提取其文本内容、根据字数判断总结策略、以及使用Ollama模型生成文档总结。

1. 环境准备

首先,我们需要确保你已经安装了相关的Python库。这些库包括LangChainOllama(你可以通过langchain-ollama库访问),以及PDF处理库PyPDFLoader。如果你还没有安装这些库,可以通过以下命令进行安装:

pip install langchain langchain-ollama PyPDF2

2. 加载PDF文档

使用PyPDFLoader加载PDF文件非常简单。它会将文档内容提取为一个文本列表,接着我们可以将这些内容合并成一个字符串。以下是加载和提取PDF内容的代码示例:

from langchain.document_loaders import PyPDFLoader

# 加载PDF文档
pdf_path = "/path/to/your/file.pdf"  # 替换为你的PDF文件路径
loader = PyPDFLoader(pdf_path)

# 提取文档内容
documents = loader.load()

# 获取文档的内容
content = "".join([doc.page_content for doc in documents])

3. 判断字数并选择处理方法

我们接下来会计算文档的总字数,并根据字数决定如何处理文本。如果字数较少(小于2000字),我们可以直接对全文进行总结。如果字数较多(大于2000字),我们只会提取文档的前1000个字和最后1000个字来进行总结。以下是实现这一逻辑的代码:

# 获取文章字数
content_length = len(content)

# 判断文章字数情况并处理
if content_length < 2000:
    # 如果字数小于2000,直接对全文进行总结
    text_to_summarize = content
else:
    # 如果字数大于2000,提取前1000个字和后1000个字
    start_text = content[:1000]
    end_text = content[-1000:]
    text_to_summarize = start_text + "\n\n" + end_text

4. 使用Ollama模型生成总结

在这部分代码中,我们将设置Ollama的大语言模型并创建一个LangChain的链条来生成总结。你可以选择不同的Ollama模型,在这里我们选择了deepseek-r1:7b模型。为了生成总结,我们构建了一个简单的总结提示模板,要求生成的总结字数不超过100字。

from langchain.prompts import PromptTemplate
from langchain_ollama import OllamaLLM

# 设置Ollama模型
llm = OllamaLLM(model="deepseek-r1:7b")

# 创建总结的提示模板
prompt_template = """
请对以下文本进行总结(100个字以内):

{text}

总结:
"""

# 创建提示模板
prompt = PromptTemplate(template=prompt_template, input_variables=["text"])

# 创建LLM链
chain = prompt | llm

# 生成总结
summary = chain.invoke({"text": text_to_summarize})

# 输出总结
print("Summary:\n", summary)

5. 运行整个流程

将所有部分结合起来,你可以得到一个完整的程序,它能够自动处理PDF文档并生成总结。运行这个程序的步骤如下:

  1. 加载PDF文档:提取文档内容。
  2. 字数判断与处理:根据字数判断是对全文进行总结,还是只取前后部分进行总结。
  3. 生成总结:使用Ollama模型生成总结并输出。

以下是完整的代码示例:

from langchain.document_loaders import PyPDFLoader
from langchain.prompts import PromptTemplate
from langchain_ollama import OllamaLLM

# 加载PDF文档
pdf_path = "/path/to/your/file.pdf"  # 替换为你的PDF文件路径
loader = PyPDFLoader(pdf_path)

# 提取文档内容
documents = loader.load()

# 获取文档的内容
content = "".join([doc.page_content for doc in documents])

# 获取文章字数
content_length = len(content)

# 判断文章字数情况并处理
if content_length < 2000:
    # 如果字数小于2000,直接对全文进行总结
    text_to_summarize = content
else:
    # 如果字数大于2000,提取前1000个字和后1000个字
    start_text = content[:1000]
    end_text = content[-1000:]
    text_to_summarize = start_text + "\n\n" + end_text

# 设置Ollama模型
llm = OllamaLLM(model="deepseek-r1:7b")

# 创建总结的提示模板
prompt_template = """
请对以下文本进行总结(100个字以内):

{text}

总结:
"""

# 创建提示模板
prompt = PromptTemplate(template=prompt_template, input_variables=["text"])

# 创建LLM链
chain = prompt | llm

# 生成总结
summary = chain.invoke({"text": text_to_summarize})

# 输出总结
print("Summary:\n", summary)

6. 结语

通过上面的代码示例,我们已经展示了如何结合LangChainOllama模型来处理PDF文档,并生成简洁的总结。这种方法非常适用于需要自动化文档处理和快速获取关键信息的场景。无论是用于新闻文章、学术论文,还是商业报告,这种方法都能为你提供高效的总结功能。

如果你有任何问题或进一步的需求,欢迎在评论区留言交流!

相关文章:

  • Ascend NPU 架构 CANN 平台入门学习
  • 如何用HBase轻松管理海量数据?
  • 深入解析:使用Python爬虫获取京东商品详情原数据API接口
  • 一篇文章介绍前端mitt
  • 操作系统之内存管理
  • 基于GWO灰狼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM
  • chat2db邀请码
  • Python在实际工作中的运用-CSV数据的几个处理方法
  • 怎么合并主从分支,要注意什么
  • 基金基础知识
  • AI人工智能之机器学习sklearn-数据预处理和划分数据集
  • 在使用ragflow时docker desktop出现内存不足的问题
  • 自定义SpringBoot Starter
  • 反向代理模块kfj
  • Java 内部类
  • 3_Hadoop集群的格式化、启动、关闭和状态
  • C++命名空间域
  • Pi币与XBIT:在去中心化交易所的崛起中重塑加密市场
  • 专业的UML开发工具StarUML
  • 华山论剑之JAVA中的“方法论”
  • wordpress本站只对会员开放/如何提升网站搜索排名
  • wordpress支付集成/灰色词seo排名
  • 交友小程序开发/seo关键词排名系统
  • 做外贸的 需要什么样的网站/扬州网络优化推广
  • 佛山网站哪家最专业/上海网络推广招聘
  • 珠海建设企业网站的公司/网站seo教程