实战:AI 文档总结工具 (Map-Reduce)

如何让 AI 总结一份 200 页的财报或一本小说?直接丢给它肯定会报错(Token 超限),或者它只读了开头和结尾。我们需要使用 **Map-Reduce** 策略。

5分钟
2025-12-26
实战项目教程实战:AI

实战:AI 文档总结工具 (Map-Reduce)

如何让 AI 总结一份 200 页的财报或一本小说?直接丢给它肯定会报错(Token 超限),或者它只读了开头和结尾。我们需要使用 Map-Reduce 策略。

1. 原理

  1. 切分 (Split):把大文档切成 20 个小片段(Chunk)。
  2. 映射 (Map):让 AI 分别总结这 20 个小片段,得到 20 个“小摘要”。
  3. 规约 (Reduce):把这 20 个小摘要拼在一起,再丢给 AI 做一次“总摘要”。

2. 工具:LangChain

LangChain 封装好了这个流程,几行代码就能搞定。

from langchain.chains.summarize import load_summarize_chain
from langchain_community.document_loaders import PyPDFLoader
from langchain_openai import ChatOpenAI
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 1. 加载 PDF
loader = PyPDFLoader("annual_report.pdf")
docs = loader.load()

# 2. 切分文档
text_splitter = RecursiveCharacterTextSplitter(chunk_size=3000, chunk_overlap=200)
split_docs = text_splitter.split_documents(docs)

# 3. 初始化 LLM
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo")

# 4. 运行 Map-Reduce 链
chain = load_summarize_chain(llm, chain_type="map_reduce")
summary = chain.run(split_docs)

print(summary)

3. 进阶玩法:Refine 模式

如果不喜欢 Map-Reduce(可能会丢失跨段落的上下文),可以使用 Refine 模式:

  1. 总结第一段。
  2. 把“第一段的总结” + “第二段原文” 丢给 AI,让它更新总结。
  3. 滚雪球一样一直滚到最后。
  • 缺点:无法并行,速度慢。
  • 优点:上下文连贯性更好。

现在,你只需要 30 秒就能看完一份 5 万字的报告了。

AI导航助手

Powered by DeepSeek

你好!我是AI导航助手,由DeepSeek驱动。

我可以帮你: • 推荐适合你的AI模型 • 解答AI相关问题 • 直接带你跳转到相关页面

试试点击下方问题,或直接输入你的问题!

快捷提问:

哪个AI模型最好?有免费的AI吗?写代码用哪个?API怎么接入?

点击按钮可直接跳转到相关页面