feat: 基于200份研报的pipeline已跑通,并做了2轮优化
金融研报 RAG 数据处理与检索评测流水线:PDF 解析 → 分块 → 向量 + BM25 混合召回 → Rerank → 引用生成 / 拒答。
当前规模:200 份研报(四行业 × 50)→ 7,382 可检索 chunk。评测集:150 题(factual 100 / comparative 26 / summary 23),data/eval/eval_questions.jsonl。
data/eval/eval_questions.jsonl
最新评测结果:docs/eval-results.md项目历程与实验对照:docs/midterm-summary.mdAutoDL / Cursor Agent:docs/CURSOR_AGENT_CONTEXT.md
PDF → MinerU → chunk_mineru (P2) → bge-large-zh-v1.5 + BM25 ↓ 混合召回 pool=200 (0.35/0.65) ↓ bge-reranker-v2-m3 Top30 → Top-5 ↓ 引用生成 + 低分拒答 (threshold=0.35)
src/parse_pdf_mineru.py
mineru_paragraph_v3
BAAI/bge-large-zh-v1.5
BAAI/bge-reranker-v2-m3
相对 150 题优化前基线(Recall@10 84.7% / 答案 82.7%),P0+P1+P2 累计 +7.3pp / +5.3pp。
完整数据、权重扫描、Badcase 与复现命令见 docs/eval-results.md。
conda activate commercial-rag # 先按本机 GPU/驱动/CUDA 选择 PyTorch 版本(示例为 cu124) pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124 # 无 GPU 或只跑 CPU 时可用: # pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu pip install -r requirements.txt python src/parse_pdf_mineru.py python src/chunk_mineru.py python src/embed_chunks.py python src/build_bm25_index.py python src/eval_retrieval.py --compare-routes --top-k 10 python src/eval_rerank.py python src/rag_chat.py "京仪装备2026E毛利率预测是多少?"
GPU(AutoDL / 本地 CUDA):
# PyTorch CUDA 版本需与本机显卡驱动、CUDA 运行时匹配 # 下例仅为 cu124 示例,请按本机环境替换 cu124 / cu121 / cpu 等 pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124 # MinerU: 在 src/parse_pdf_mineru.py 设 MINERU_DEVICE = "cuda"
src/pdf_paths.py
data/raw_pdfs/<industry>/*.pdf
data/parsed/mineru/
documents.jsonl
doc_manifest.jsonl
src/chunk_mineru.py
data/parsed/chunks.jsonl
src/embed_chunks.py
data/vector/milvus.db
src/build_bm25_index.py
data/vector/bm25_index.pkl
src/milvus_store.py
src/retrieval.py
src/eval_retrieval.py
vector
bm25
hybrid
data/eval/eval_route_comparison.csv
src/reranker.py
src/eval_rerank.py
src/rag_pipeline.py
src/rag_chat.py
commercial-rag/ ├── data/ │ ├── raw_pdfs/ # 原始 PDF(按行业子目录,.gitignore) │ ├── parsed/ │ │ ├── mineru/ # MinerU 输出(体积大) │ │ ├── chunks.jsonl # 分块结果 │ │ ├── documents.jsonl │ │ └── doc_manifest.jsonl │ ├── vector/ │ │ ├── milvus.db # 向量库 │ │ └── bm25_index.pkl # BM25 索引 │ └── eval/ # 评测集与实验 CSV ├── src/ ├── scripts/ │ ├── build_eval_questions_150.py │ ├── eval_hybrid_weight_sweep.py │ ├── pack_for_autodl.ps1 # Windows 打包(未执行) │ └── pack_for_autodl.sh # Linux 打包(未执行) ├── docs/ │ ├── eval-results.md # 当前评测结果快照(推荐) │ ├── midterm-summary.md # 项目历程与 POC 对照 │ ├── eval-badcase-analysis.md │ ├── CURSOR_AGENT_CONTEXT.md │ └── … ├── requirements.txt └── notes/ # 个人笔记(可选)
不必打包:__pycache__/、notes/.obsidian/、临时 pool 缓存。可选单独拷贝:HuggingFace 模型缓存(HF_HOME),服务器可联网重下。
__pycache__/
notes/.obsidian/
HF_HOME
# Windows(生成 zip,不自动上传) .\scripts\pack_for_autodl.ps1 -Tier essential .\scripts\pack_for_autodl.ps1 -Tier full
# Linux / AutoDL bash scripts/pack_for_autodl.sh --tier essential bash scripts/pack_for_autodl.sh --tier full
解压后在新 Cursor 窗口让 Agent 先读:docs/CURSOR_AGENT_CONTEXT.md
docs/CURSOR_AGENT_CONTEXT.md
requirements.txt
docs/eval-badcase-analysis.md
rag_pipeline.py
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
commercial-rag
金融研报 RAG 数据处理与检索评测流水线:PDF 解析 → 分块 → 向量 + BM25 混合召回 → Rerank → 引用生成 / 拒答。
当前规模:200 份研报(四行业 × 50)→ 7,382 可检索 chunk。
评测集:150 题(factual 100 / comparative 26 / summary 23),
data/eval/eval_questions.jsonl。技术路线(当前最优)
src/parse_pdf_mineru.py)mineru_paragraph_v3+ P2(评级块、表语义、可比表)BAAI/bge-large-zh-v1.5(1024 维)BAAI/bge-reranker-v2-m3,Top-30 → Top-5实验结果摘要(150 题,P2 索引,2026-05-28)
三路召回(Top-10,混合权重 0.35)
Rerank(混合初召回)
相对 150 题优化前基线(Recall@10 84.7% / 答案 82.7%),P0+P1+P2 累计 +7.3pp / +5.3pp。
完整数据、权重扫描、Badcase 与复现命令见 docs/eval-results.md。
推荐运行顺序
GPU(AutoDL / 本地 CUDA):
模块说明
1. PDF 解析(MinerU)
src/parse_pdf_mineru.py、src/pdf_paths.pydata/raw_pdfs/<industry>/*.pdfdata/parsed/mineru/、documents.jsonl、doc_manifest.jsonl2. 分块
src/chunk_mineru.py(策略mineru_paragraph_v3)data/parsed/chunks.jsonl3. 向量化与 BM25
src/embed_chunks.pydata/vector/milvus.dbsrc/build_bm25_index.pydata/vector/bm25_index.pklsrc/milvus_store.py4. 检索评测(三路召回)
src/retrieval.py、src/eval_retrieval.pyvector/bm25/hybriddata/eval/eval_route_comparison.csv5. Rerank 与 RAG
src/reranker.pysrc/eval_rerank.pysrc/rag_pipeline.pysrc/rag_chat.py目录结构
迁移 AutoDL:文件分级与打包
不必打包:
__pycache__/、notes/.obsidian/、临时 pool 缓存。可选单独拷贝:HuggingFace 模型缓存(
HF_HOME),服务器可联网重下。解压后在新 Cursor 窗口让 Agent 先读:
docs/CURSOR_AGENT_CONTEXT.md依赖
requirements.txt后续规划
docs/eval-badcase-analysis.md)rag_pipeline.py统一为混合 + Rerank 生产链路