src/data_build/build_product_index.py商品索引入口把原始商品记录转成统一 product index,是后续 SFT、推理和评测共享的事实源。Project 01 / VLM Data Engineering
基于 Qwen3-VL 的电商多模态商品理解系统
这一页展示主页没有展开的工程设计:我把“商品图文理解”拆成数据标准化、五类 SFT 任务构造、批量推理、JSON 解析、六维评测、Qwen-VL 微调格式转换和测试覆盖。当前 baseline 用于证明链路可跑通,真实模型接入和 LoRA 微调被清楚地留在后续接口中。
工程总览
Raw Products读取本地商品图、标题、OCR、描述和属性字段。
Product Indexnormalize_product 与 image_utils 统一字段和图片路径。
Five SFT Tasksattribute、evidence、risk、selling points、agent action 五条任务线。
Inference Adapterbatch_infer 调用 Qwen3VLInferencer,先用 heuristic backend 打通端到端。
Eval & Train Formatrun_eval 输出 6 类指标,convert_to_qwenvl 生成微调入口。
src/data_build/build_sft_dataset.py五任务聚合器调用各任务 builder,形成 all_sft.jsonl,避免每类任务各自维护一套样本格式。src/infer/batch_infer.py批量推理调度按样本循环构造 prompt,调用推理器,写出 baseline predictions。src/eval/run_eval.py统一评测入口集中读取 prediction 与 label,汇总 JSON、类目、属性、证据、风险、agent action 指标。结果快照
本地商品图文样本。
5 类任务构造出的训练样本。
train / val / test。
覆盖格式、属性、证据、风险和动作建议。
这里的 6 项指标均为 1.0,定位是小样本链路验证,不包装成真实大模型公开成绩;它证明的是数据构造、推理输出、解析和评测闭环已经能稳定运行。
脚本职责与数据流
normalize_product.py字段标准化从 title、category、description、attributes、ocr_text 等字段中取可用信息,保证样本结构统一。image_utils.py图片路径治理normalize_image_paths 与 image_paths_exist 负责把相对路径、列表字段和文件存在性统一处理。sft_common.pySFT 共享模板first_image、product_context、make_sample 让 5 类任务共用 image、prompt、assistant、metadata 格式。| 任务脚本 | 样本目标 | 输出关注点 |
|---|---|---|
| build_sft_attribute.py | 属性抽取 | 类目、颜色、材质、风格等结构化字段。 |
| build_sft_evidence.py | 视觉证据 | 把属性判断对应到图像/OCR/描述证据。 |
| build_sft_risk.py | 风险识别 | 使用 infer_risk 生成风险类型和解释。 |
| build_sft_selling_points.py | 卖点生成 | 从图文信息提炼适合电商场景的表达。 |
| build_sft_agent.py | 运营动作 | 生成补图、改标题、补属性等 agent action。 |
prompts.py任务 prompt 构造build_prompt 按 task、title、category、ocr_text、description 生成统一输入。qwen3vl_infer.py模型适配层Qwen3VLInferencer 保留真实模型接口,同时内置 heuristic backend 用于链路 smoke test。parse_json.py输出解析parse_model_json 与 utils/json_utils 负责从模型文本中提取可评测 JSON。{
"input": "商品图像 + 标题 + OCR + 类目",
"prompt": "请完成 attribute / evidence / risk / selling_points / agent_action",
"assistant": "结构化 JSON 输出",
"prediction": "baseline.jsonl",
"next": "run_eval.py"
}
- metrics_json.py检查输出是否可被稳定解析。
- metrics_attribute.py评估类目准确率与属性 F1。
- metrics_evidence.py比较视觉证据和结构化属性的一致性。
- metrics_risk.py / metrics_agent.py覆盖风险识别和运营动作建议。
split_dataset.py切分数据生成 train_sft、val_sft、test_sft。convert_to_qwenvl.py微调格式convert_sample 把 image + conversation 转成 Qwen-VL 训练格式。tests/test_*.py回归测试覆盖预处理、SFT builder、推理、指标、转换和工具函数。
data/processed/all_sft.jsonl
data/outputs/predictions/baseline.jsonl
data/outputs/metrics/metrics.json
qwenvl_train.json
tests/test_sft_builders.py
tests/test_qwenvl_conversion.py
运行链路
- 商品索引raw products -> normalized product index。
- SFT 构造五类任务 builder 汇总为 all_sft.jsonl。
- 数据切分40 / 5 / 5,用于训练、验证和测试。
- 批量推理batch_infer 生成 baseline predictions。
- 指标评测run_eval 输出 metrics.json。
- 微调入口convert_to_qwenvl 生成 Qwen-VL 格式。
样本与局限
样本展示
当前素材主要用于说明图文输入如何进入任务链路。页面展示的是小样本工程闭环,而不是把 heuristic baseline 当成真实模型能力。
10 products
50 SFT samples
5 task types
6 metrics