Qwen-Agent:3行代码跑通千份文档的批量问答
2026/9/10 16:11:10 网站建设 项目流程

Qwen-Agent:3行代码跑通千份文档的批量问答

【免费下载链接】Qwen-AgentAgent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent

Qwen-Agent 的 ParallelDocQA 支持对成百上千份 PDF、Word、PPT 做并行文档问答:并行解析、过滤无效结果,再用 RAG 召回原文汇总作答。适合需要从大量文档中一次性提取信息的研究者和数据分析人员。

核心能力速览

  • 批量文档输入:支持 PDF、Word、PPT、TXT、HTML、CSV、Excel 共 9 类文件
  • 并行分块问答:每个文件被拆成块,每块作为一个任务并行调用模型,文档再多也不用整体塞进上下文
  • 无效响应过滤:答不出的块会被识别为none并剔除,不污染最终答案
  • RAG 二次召回:根据中间答案回到原文检索相关内容,再交给摘要 Agent 生成最终回答
  • 双入口:代码 API 和 Web 图形界面都能用

它是怎么工作的:并行文档问答流程

整套流程分五步,串起来就是一条"分块 → 并行 → 过滤 → 召回 → 摘要"的流水线。

先说"怎么做的"。文件先经DocParser解析并切块,三个关键常量定义在qwen_agent/agents/doc_qa/parallel_doc_qa.py顶部:

PARALLEL_CHUNK_SIZE = 1000 # 并行分块大小 MAX_RAG_TOKEN_SIZE = 4500 # RAG召回最大token数 RAG_CHUNK_SIZE = 300 # 检索块大小

每个块生成一个成员任务,由qwen_agent/utils/parallel_executor.py里的parallel_exec提交到线程池执行,调用间隔带 0.5 秒以内的随机延迟,避免请求同时打到模型服务。每个成员只回答自己那块内容,答不出来就返回{"res": "none"},被过滤掉。

再看"效果如何"。拿到所有有效中间答案后,系统把用户问题加中间答案交给关键词生成器,再用关键词检索回原文(上限 4500 token),最后由摘要 Agent 基于召回的原文产出最终答案。README 中提到,这套方案在涉及 100 万 token 上下文的单针查询压力测试中表现完美,据项目文档描述,它在两个基准上超越了原生长上下文模型。

跑通最小示例

先装包,需要 rag 和 gui 扩展:

pip install -U "qwen-agent[rag,gui]"

最小可运行代码如下,file字段换成你本地的文档路径即可:

from qwen_agent.agents.doc_qa import ParallelDocQA bot = ParallelDocQA(llm={'model': 'qwen2.5-72b-instruct'}) messages = [{ 'role': 'user', 'content': [ {'text': '介绍实验方法'}, {'file': 'papers/attention.pdf'}, ] }] for rsp in bot.run(messages): print('回答:', rsp)

这段代码做的事情很直白:创建一个并行文档问答 Agent,把"介绍实验方法"这个问题和一份 PDF 一起交给它,然后逐条打印流式返回的答案。运行前记得设置环境变量DASHSCOPE_API_KEY,否则无法调用模型。

不想写代码的话,示例examples/parallel_doc_qa.py自带app_gui(),直接运行该文件就能打开 Web 界面,上传文件、输入问题即可。

跑通之后,你可以把file换成多个文件或目录下的文件,问题从单点提取改成"对比所有文档的 XX",Agent 会自动完成分块和汇总。

调这3个参数,效果不同

对结果影响最大的是分块和召回相关的三个常量,都在qwen_agent/agents/doc_qa/parallel_doc_qa.py顶部,改起来是几行的事:

参数默认值调整建议适用场景
PARALLEL_CHUNK_SIZE1000块太小导致单块信息不完整时调大论文、报告等长文档
MAX_RAG_TOKEN_SIZE4500召回内容不够全面时调大需要跨章节总结的问题
RAG_CHUNK_SIZE300需要更大检索上下文时调大技术文档的细粒度定位

稳定性方面不用操心:MAX_NO_RESPONSE_RETRY默认为 4,当所有并行块都回答"无法回答"时,会自动整体重试,最多 4 轮。网络不稳或模型偶发无响应时,这个机制会自动兜底。

谁在用、用来干嘛

刚做完文献调研的研究生,手里有 100 多篇论文的 PDF,需要统一提取实验设置和超参数。把文件批量交给 ParallelDocQA 提问,一次拿到汇总后的答案,不用再逐篇翻。据 README 描述,这类超长文档问答方案在基准测试中优于原生长上下文模型且更省资源。

运营分析师面对成堆的用户反馈 PDF、Excel 时,也可以按类别提问让 Agent 统一归类汇总。没有现成数据的场景,实际体验以"是否省去人工翻查"为准,定性上就是省时间。

收束

ParallelDocQA 把"海量文档"拆成"批量分块任务",再靠 RAG 把答案拉回原文,回答可聚合、可追溯。

  • 文档:qwen-agent-docs/website/content/en/guide/core_moduls/agent.md
  • 示例:examples/parallel_doc_qa.py
  • 核心实现:qwen_agent/agents/doc_qa/parallel_doc_qa.py

【免费下载链接】Qwen-AgentAgent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询