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

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文档,并生成简洁的总结。这种方法非常适用于需要自动化文档处理和快速获取关键信息的场景。无论是用于新闻文章、学术论文,还是商业报告,这种方法都能为你提供高效的总结功能。

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


http://www.kler.cn/a/561032.html

相关文章:

  • Elasticsearch中的CURL请求详解
  • Java——单例类设计模式
  • 【栈与队列】N叉树的层序遍历 二叉树的锯齿形层序遍历
  • DeepSeek在MATLAB上的部署与应用
  • 地铁站内导航系统:基于蓝牙Beacon与AR技术的动态路径规划技术深度剖析
  • C#语音识别与播报开发指南
  • LabVIEW C编译支持工具库CCompileSupp.llb
  • 本地开发用ASP.NET Core Web API项目创建及测试
  • 【学习笔记】Cadence电子设计全流程(三)Capture CIS 原理图绘制(中)
  • 【SQLI】CTF SQL注入解题步骤总结
  • hbase线上region不一致问题相关数据修复
  • 个人笔记三:微机
  • 线性模型 - 支持向量机(参数学习)
  • 基于大语言模型的推荐系统(1)
  • 智慧后勤的消防管理:豪越科技为安全护航
  • 安当ASP:中小企业低成本Radius认证服务器解决方案
  • 数据驱动未来!天合光能与永洪科技携手开启数字化新篇章
  • 机器学习基础入门——机器学习库介绍(NumPy、pandas、Matplotlib)
  • vue3学习3-route
  • 大模型WebUI:Gradio全解12——LangChain原理及其agent构建Gradio(1)