本项目是一个面向企业研究报告分析场景的智能体系统,旨在帮助用户高效完成研报解析、信息抽取、企业分析、行业对比与问答检索等任务。系统结合大语言模型、检索增强生成(RAG)、文档解析、结构化信息抽取与多工具调用能力,能够从企业年报、行业研报、财务报告、公告文件等非结构化文档中提取关键信息,并生成可解释、可追溯的分析结果。 该智能体支持对企业基本信息、财务指标、主营业务、行业地位、竞争格局、风险因素和未来发展趋势进行自动化分析。用户可以通过自然语言提出问题,例如“这家公司近三年的营收变化如何?”、“主要风险有哪些?”、“与同行相比竞争优势在哪里?”,系统会基于上传或接入的研报资料进行检索、推理和回答,并尽可能给出引用来源,提升分析结果的可信度。 项目适用于金融研究、投资分析、企业尽调、行业研究、知识库问答和智能办公等场景。通过模块化设计,开发者可以灵活扩展文档解析器、向量数据库、检索策略、分析工具和智能体工作流,构建适合自身业务需求的企业研究分析系统。
  • Python 72%
  • JavaScript 25.8%
  • CSS 2%
  • HTML 0.2%
Find a file
2026-05-07 19:36:56 +08:00
backend Initial competition submission 2026-05-07 18:03:16 +08:00
data Initial competition submission 2026-05-07 18:03:16 +08:00
frontend Initial competition submission 2026-05-07 18:03:16 +08:00
prompts Initial competition submission 2026-05-07 18:03:16 +08:00
tests Initial competition submission 2026-05-07 18:03:16 +08:00
.env.example Initial competition submission 2026-05-07 18:03:16 +08:00
.gitignore Initial competition submission 2026-05-07 18:03:16 +08:00
docker-compose.yml Initial competition submission 2026-05-07 18:03:16 +08:00
environment.yml Initial competition submission 2026-05-07 18:03:16 +08:00
pytest.ini Initial competition submission 2026-05-07 18:03:16 +08:00
README.md 上传文件至 / 2026-05-07 19:36:56 +08:00
requirements.txt Initial competition submission 2026-05-07 18:03:16 +08:00
企业研报智能体项目说明.md Initial competition submission 2026-05-07 18:03:16 +08:00

企业研报智能体

基于 React + FastAPI + SQLite + Milvus + LangGraph 的企业研报智能体原型。系统支持多知识库管理、PDF 文件生命周期、向量检索、联网调研、智能问答、自动报告生成、历史记录、在线预览和 Markdown / PDF 导出。

当前版本默认使用 DeepSeek 的 OpenAI-compatible 接口。没有 API Key 时会自动走 mock 路径,仍可完成上传、解析、检索、问答和报告生成演示。

当前功能

  • 多知识库管理:新建、重命名、删除知识库。
  • 文件管理:按知识库上传 PDF、替换文件、删除文件、批量删除、页面内 PDF 预览。
  • 本地 RAG 检索PDF 解析、文本切分、Embedding、Milvus / Memory 向量检索、证据页码与章节引用。
  • 智能问答:按当前知识库检索,也支持限定到单个文件;右侧历史记录支持查看、单删、批量删除。
  • 报告生成:按主题从当前知识库自动检索证据,生成投研模板 Markdown 报告。
  • 报告预览与导出:页面内预览报告 PDF支持下载 Markdown 和 PDF。
  • 联网调研智能体问答和报告生成时LangGraph 会增加 Web Research 节点,用公开网页资料补充公司信息、新闻和行业背景。
  • 专业控制台前端:左侧知识库,中间文档/问答/报告工作区,右侧历史记录栏。

工作流

问答与报告生成共用 LangGraph 编排:

validate_scope
  -> retrieve_evidence
  -> web_research
  -> generate
  -> persist_result
  • validate_scope:校验知识库或单文档范围。
  • retrieve_evidence:从 Milvus / Memory 向量库检索 PDF 片段。
  • web_research:联网搜索公司公开信息,失败时自动降级为空结果。
  • generate:调用 DeepSeek 或 mock 生成回答 / 报告。
  • persist_result:写入 SQLite保留历史记录和证据引用。

内部知识库证据使用 [1][2] 引用;联网资料使用 [W1][W2] 引用。生成策略是内部文档证据优先,联网资料只作为补充背景。

技术栈

  • 后端FastAPI、SQLite、PyMuPDF、httpx、LangGraph
  • 向量库Milvus测试和离线演示可用 Memory Vector Store
  • Embeddingsentence-transformers,默认模型 BAAI/bge-small-zh-v1.5;网络不可达时可降级 hash embedding
  • LLMDeepSeek OpenAI-compatible API支持 mock 模式
  • 前端React、Vite、Ant Design
  • 报告导出Markdown 直接导出PDF 由 Markdown 渲染生成

环境准备

推荐使用 conda不要使用 pip install -r requirements.txt 作为主要安装方式,以免包安装到非当前 conda 环境。

conda env create -f environment.yml
conda activate enterprise-report-agent

如果需要手动安装依赖,请使用 conda

conda install -c conda-forge fastapi uvicorn python-multipart python-dotenv pydantic pymupdf sentence-transformers pymilvus httpx numpy pytest pytest-cov langgraph

requirements.txt 仅作兼容和依赖查阅。

前端依赖:

cd frontend
npm install

如果项目路径包含空格,例如 Enterprise Research Report AgentPowerShell 中进入目录时需要加引号:

cd "D:\...\Enterprise Research Report Agent\enterprise-report-agent"

配置

复制 .env.example.env

Copy-Item .env.example .env

DeepSeek 配置:

LLM_MODE=openai
LLM_BASE_URL=https://api.deepseek.com
DEEPSEEK_API_KEY=your-deepseek-key
LLM_MODEL=deepseek-v4-flash

也可以使用通用变量 LLM_API_KEY。当 DEEPSEEK_API_KEY 为空时,后端会读取 LLM_API_KEY

Embedding 配置:

EMBEDDING_BACKEND=sentence_transformers
EMBEDDING_MODEL=BAAI/bge-small-zh-v1.5
EMBEDDING_ALLOW_HASH_FALLBACK=true
HASH_EMBEDDING_DIM=384

如果无法访问 HuggingFace可以直接使用离线 hash embedding

EMBEDDING_BACKEND=hash

联网调研配置:

WEB_RESEARCH_ENABLED=true
WEB_RESEARCH_PROVIDER=duckduckgo
WEB_RESEARCH_MAX_RESULTS=4
WEB_RESEARCH_TIMEOUT_SECONDS=6

mock 模式默认不联网,方便离线演示和测试。如需 mock 模式也验证联网节点:

WEB_RESEARCH_IN_MOCK=true

运行

启动 Milvus

docker compose up -d

启动后端。推荐使用 python -m uvicorn,避免当前 PATH 找不到 uvicorn

python -m uvicorn backend.main:app --reload

注意:必须在项目根目录运行,也就是包含 backendfrontendREADME.md 的目录。如果不在项目根目录,会出现 ModuleNotFoundError: No module named 'backend'

启动前端:

cd frontend
npm run dev

默认访问:

常见问题

PowerShell cd 路径报错

路径中有空格时需要加引号:

cd "D:\...\Enterprise Research Report Agent\enterprise-report-agent"

找不到 uvicorn

先确认已经激活项目 conda 环境:

conda activate enterprise-report-agent
python -m uvicorn backend.main:app --reload

也可以直接使用环境中的 Python

& "D:\Anaconda_envs\envs\enterprise-report-agent\python.exe" -m uvicorn backend.main:app --reload

启动时报 No module named backend

请先进入项目根目录:

cd "D:\...\Enterprise Research Report Agent\enterprise-report-agent"
python -m uvicorn backend.main:app --reload

HuggingFace 模型下载超时

可改用 hash embedding

EMBEDDING_BACKEND=hash

测试

默认测试使用 hash embedding、内存向量库和 mock LLM不依赖 Milvus 或模型下载。

pytest

运行 Milvus 集成测试前需先启动 Milvus

docker compose up -d
$env:RUN_MILVUS_TESTS="1"
pytest tests/test_milvus_store.py

当前限制

  • PDF 预览为原始 PDF 预览,暂不提供 chunk 级可视化定位。
  • 文件“编辑”当前主要是 PDF 替换,不包含复杂元数据编辑。
  • 表格结构化抽取、财务指标自动入表、Hybrid Search、Reranker 仍属于后续增强方向。
  • 联网调研依赖外部网络,搜索失败时会自动降级,不阻断主流程。