跳转至

静态数据包规范

数据包结构

assets/paper-graph-time/
  source/               # 手工维护或采集输出的源文件
    meta.json           # 版本与生成时间
    radar-7d.json
    radar-30d.json
    graph-lite.json
    graph-index.json
    cluster/
    paper/
    paths/
    trends/
    updates-7d.json
  data/                 # 构建输出(上线发布)
    manifest.json       # 构建后生成的清单与 hash
    ...
data/paper-graph-time/
  raw/                  # 原始抓取数据(例如 arXiv 元数据与 PDF)
    metadata.json
    pdf/

数据生成入口

  • 数据源目录:docs/assets/paper-graph-time/source
  • 发布目录:docs/assets/paper-graph-time/data
  • 构建脚本:tools/paper_graph_time/build_static_data.py

构建命令

python3 tools/paper_graph_time/build_static_data.py \
  --source docs/assets/paper-graph-time/source \
  --output docs/assets/paper-graph-time/data

数据包检查

python3 tools/paper_graph_time/validate_data.py \
  --data-dir docs/assets/paper-graph-time/data \
  --output docs/assets/paper-graph-time/data/quality-report.json

原始数据抓取(arXiv 示例)

python3 tools/paper_graph_time/download_arxiv_papers.py \
  --max-results 200 \
  --metadata-only \
  --out-dir data/paper-graph-time/raw

如需 PDF,将 --metadata-only 去掉(注意体积与时间成本)。

PDF 索引构建

python3 tools/paper_graph_time/build_pdf_index.py \
  --metadata data/paper-graph-time/raw/metadata.json \
  --pdf-dir data/paper-graph-time/raw/pdf \
  --output docs/assets/paper-graph-time/source/pdf-index.json

自动生成 source 数据

python3 tools/paper_graph_time/generate_source_from_arxiv.py \
  --metadata data/paper-graph-time/raw/metadata.json \
  --output docs/assets/paper-graph-time/source \
  --replace

meta.json

{
  "version": "2026-01-24",
  "generated_at": "2026-01-24T08:00:00Z",
  "sources": ["arXiv", "OpenReview"]
}

manifest.json

{
  "version": "2026-01-24",
  "generated_at": "2026-01-24T08:00:00Z",
  "files": [
    { "path": "radar-7d.json", "bytes": 1234, "sha1": "..." }
  ]
}

关键文件说明

  • radar-7d.json / radar-30d.json:热点榜单与方法迁移雷达
  • graph-lite.json:用于 Explore 与 Path 的子图(控制体积)
  • graph-index.json:搜索索引(label + keywords)
  • cluster/{id}.json:主题页数据
  • paper/{id}.json + paper/{id}-edges.json:论文详情与证据链
  • paths/recommended.json:推荐路径
  • trends/{cluster_id}.json:趋势回放
  • updates-7d.json:订阅增量

样例导入格式(source 模板)

radar-7d.json / radar-30d.json

{
  "clusters": [
    {
      "cluster_id": "cluster:method:rag",
      "label": "Retrieval-Augmented Generation",
      "new_papers_7d": 18,
      "new_edges_7d": 42,
      "key_papers": ["paper:arxiv:2401.12345"],
      "growth_curve": [{ "date": "2026-01-18", "papers": 2, "edges": 5 }],
      "score": 0.82,
      "evidence_ref": ["edge:rag:001"]
    }
  ],
  "method_radar": [
    { "method_id": "method:rag", "new_tasks": ["qa"], "first_seen": "2026-01-20", "score": 0.71 }
  ]
}

graph-lite.json

{
  "meta": { "sources": ["arXiv", "OpenReview"] },
  "nodes": [
    { "id": "paper:arxiv:2401.12345", "type": "Paper", "label": "RAG with Temporal Memory", "source": "arXiv" }
  ],
  "edges": [
    { "id": "edge:rag:001", "type": "CITES", "from": "paper:arxiv:2401.12345", "to": "paper:arxiv:2402.56789", "evidence": { "type": "citation", "payload": { "source": "Crossref" } } }
  ]
}

cluster/{id}.json

{
  "id": "cluster:method:rag",
  "label": "Retrieval-Augmented Generation",
  "keywords": ["RAG"],
  "series": [{ "date": "2026-01-18", "new_papers": 2 }],
  "key_papers": [{ "id": "paper:arxiv:2401.12345", "title": "RAG with Temporal Memory", "venue": "arXiv" }],
  "representative_tasks": ["qa", "summarization"],
  "subclusters": [
    { "id": "subcluster:retrieval", "label": "retrieval", "count": 12, "key_papers": [{"id": "paper:...", "title": "..."}] }
  ]
}

subcluster/{id}.json

{
  "id": "subcluster:cluster-category-cs-ai:retrieval",
  "label": "retrieval",
  "cluster_id": "cluster-category-cs-ai",
  "count": 12,
  "papers": [{ "id": "paper:arxiv:2401.12345", "title": "RAG with Temporal Memory", "year": 2026 }]
}

paper/{id}.json + paper/{id}-edges.json

{
  "id": "paper:arxiv:2401.12345",
  "title": "RAG with Temporal Memory",
  "year": 2026,
  "venue": "arXiv",
  "keywords": ["retrieval", "memory", "agents"],
  "datasets": ["MS MARCO"],
  "summary": {
    "one_liner": "...",
    "method_points": ["...", "...", "..."],
    "limitations": "...",
    "summary_cards": ["sentence A", "sentence B"]
  }
}
{
  "id": "paper:arxiv:2401.12345",
  "items": [
    { "type": "CITES", "evidence": { "type": "citation", "payload": { "source": "Crossref", "doi": "10.1234/abcd" } } }
  ]
}

paths/recommended.json

{
  "paths": [
    {
      "id": "path-rag-001",
      "title": "从 RAG 走到多任务检索",
      "length": 7,
      "papers": [{ "id": "paper:arxiv:2401.12345", "title": "RAG with Temporal Memory", "year": 2026, "arxiv_id": "2401.12345" }]
    }
  ]
}

trends/{cluster_id}.json

{
  "id": "cluster:method:rag",
  "label": "Retrieval-Augmented Generation",
  "window": "2026-01",
  "cluster_growth": [{ "date": "2026-01-18", "papers": 2, "edges": 5 }],
  "bridge_flow": [{ "date": "2026-01-18", "edges": 1 }]
}

updates-7d.json

{
  "items": [
    { "type": "新关键论文", "title": "Ramen: Robust Alignment for RAG", "date": "2026-01-24" }
  ]
}

insights.json

{
  "top_keywords": [{ "keyword": "retrieval", "count": 12 }],
  "top_methods": [{ "method": "Retrieval", "token": "retrieval", "count": 15 }],
  "top_datasets": [{ "dataset": "MS MARCO", "count": 5 }],
  "category_distribution": [{ "category": "cs.AI", "count": 80 }]
}

method-trends.json / task-trends.json

{
  "items": [
    { "method": "Retrieval", "token": "retrieval", "series": [{ "date": "2026-01-01", "count": 3 }] }
  ]
}

keyword-trends.json

{
  "items": [
    { "keyword": "retrieval", "series": [{ "date": "2026-01-01", "count": 2 }] }
  ]
}