公司深度报告自动生成company-research-agent框架及PP-DOCBEE文档大模型数据合成策略解析
仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
今天是2025年5月6日,星期二,北京,晴。
我们今天来看两个问题。
一个是继续对现有的报告生成项目进行项目代码拆解,讲讲Deepresearch变体之公司报告自动生成company-research-agent,其是一个典型的工作流workflow,看其使用如何基于langgraph来设计节点并且完整的串起来一个项目。
抓住根本问题,做根因,专题化,体系化,会有更多深度思考。大家一起加油。
看几个点:
在数据侧,从公司网站、新闻文章、财务报告和行业分析等多个来源收集数据,并使用Tavily的相关性评分进行内容筛选,使用WebSocket连接流式传输研究进度和结果
所以在输入的时候,需要指定相关信息:
在模型侧,使用Gemini2.0Flash用于高上下文研究综合(擅长处理和总结大量数据,所以用于生成初始类别简报,在多个文档之间高效维护上下文);使用gpt-4.1-mini用于精确的报告格式化和编辑(处理markdown结构和一致性,在遵循精确格式说明方面表现较好,所以用于最终报告编译、内容去重、Markdown格式化以及实时报告流式传输),最终生成一份公司报告。从中可以看到选用模型要从模型的特性出发。
更进一步的,来看下实现细节,实现技术流程如下:
其中包括几个关键节点,如下:
CompanyAnalyzer(用于研究核心业务信息);
IndustryAnalyzer(用于分析市场定位和趋势);
FinancialAnalyst(用于收集财务指标和业绩数据);
NewsScanner(用于收集最新新闻和发展动态);
从上述几个源代码上,可以看到,核心逻辑都是,先进行subquery的生成过程,结果如下:
上述几个都是并行处理的,在拿到这些数据之后,开始进行汇总分析。所以会有后续几个处理节点。
Collector(用于汇总所有分析器的研究数据);
代码在:https ://gitcode.com/gh_mirrors/co/company-research-agent/blob/main/backend/nodes/collector.py
Curator(用于实现内容过滤和相关性评分,文档由Tavily的AI驱动搜索进行评分,需要达到最低阈值(默认0.4)才能继续,分数反映与特定研究查询的相关性,更高的分数表示与研究意图更好的匹配,内容被标准化和清理,URL被去重和标准化,文档按相关性分数排序);
代码在:https ://gitcode.com/gh_mirrors/co/company-research-agent/blob/main/backend/nodes/curator.py
Enricher(遍历不同类型的文档(如财务数据、新闻数据等),检查哪些文档需要添加原始内容。对每种类型的文档,调用fetch_raw_content获取原始内容,相当于内容兜底)
代码在:https ://gitcode.com/gh_mirrors/co/company-research-agent/blob/main/backend/nodes/enricher.py
Briefing(用于使用Gemini2.0Flash生成特定类别的摘要,注意,这个摘要,是从不同的类别来做的,就是上面提到的news、indusrtry这些);
代码在:https ://gitcode.com/gh_mirrors/co/company-research-agent/blob/main/backend/nodes/briefing.py
Editor(用于使用使用gpt-4.1-mini将简报编译和格式化为最终报告)
代码在:https ://gitcode.com/gh_mirrors/co/company-research-agent/blob/main/backend/nodes/editor.py
所以,这么一看,这个项目就拆解完了,并不复杂,核心还是在于流程设计。
策略主要有如下几个:
一个是开发针对文档场景的数据合成策略,生成了一个高质量的中文文档理解数据集PPInfinityDocData,并收集了330万条来自各种文档来源的公共数据,该策略针对文本丰富文档、表格和图表三种典型文档类型。形成数据集如下:
这里关于数据合成的点可以看看,整个流程图如下:
其中:
对于Text-richDocumentQAGeneration,使用prompt如下:
对于ChartImageGeneration,使用prompt如下:
使用的就是图像反向渲染:
对于ChartQAGeneration,使用prompt如下:
对于TableQAGeneration,使用prompt如下:
实现的效果如下:
一个是在训练阶段实施动态数据比例采样机制,优化训练过程,分配不同的采样权重给不同数据和来源,提升高质量数据的训练比例,并且扩展图像resize阈值,增加数据集的分辨率分布,提升模型的视觉特征理解能力。在监督微调阶段,视觉编码器被冻结,LLM参数被更新。PP-DocBee在包含近500万样本的数据集上训练了16000次。
一个是在推理阶段对低分辨率图像进行比例放大,确保图像特征的全面性,并在推理阶段引入OCR识别文本作为辅助信息,增强模型在包含清晰有限文本的图像上的表现。具体实验上,从Qwen2-VL-2B模型初始化,使用VisionTransformer(ViT)作为视觉编码器和1.5BQwen2大型语言模型(LLM)作为语言解码器。
在最终使用上,在应用方面,可以用于多模态文档RAG问答,召回出对应的文档页面图像,然后做qa,例如如下两个例子。
本文主要介绍了Deepresearch变体之公司报告自动生成company-research-agent的实现拆解以及多模态文档大模型PP-DOCBEE的数据合成策略,两者其实都是工程策略,前者在于整体设计,后者在于数据策略,这是我们能够学习和参考的点。
1、https ://gitcode.com/gh_mirrors/co/company-research-agent
2、https ://github.com/PaddlePaddle/PaddleMIX
老刘,NLP开源爱好者与践行者,主页:https ://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入社区方式:关注公众号,在后台菜单栏中点击会员社区加入。