No Description

ysl2007 9334247d18 v4.21 WITH优化,WHERE开窗 1 month ago
__pycache__ 5b891f8df2 SQL生成测试 3 months ago
output 5b891f8df2 SQL生成测试 3 months ago
.gitignore 893411587b v3.25.1 2 months ago
README.md 5b891f8df2 SQL生成测试 3 months ago
carddef2sql.py 9334247d18 v4.21 WITH优化,WHERE开窗 1 month ago
nl2sql_batch_test.py 5b891f8df2 SQL生成测试 3 months ago
recall_eval.py cd15baaffc 召回 3 months ago
requirements.txt cd15baaffc 召回 3 months ago
sql_generate_testcase.json 5b891f8df2 SQL生成测试 3 months ago
stream_output_help.md 5b891f8df2 SQL生成测试 3 months ago

README.md

BI Recall Eval Script

用于评估“根据用户问题召回仪表板/数据集”的三路召回表现。

输入

  1. id_map.parquet

必需字段:

  • card_id
  • card_name
  • dashboard_id
  • dashboard_name
  • dataset_id
  • dataset_name
  • branch_code
  1. questions.txt

推荐格式每行一条:

123456\t本月深圳分行存款趋势
234567\t零售客户AUM周报看板

脚本也兼容 card_id,questioncard_id|questioncard_id question

召回逻辑

  1. 第一路:从全量仪表板中随机采样 500 个,以 80% 概率强制放入正确卡片所在仪表板。
  2. 第二路:调用召回接口,recall_type=dashboard
  3. 第三路:调用召回接口,recall_type=dataset

命中规则:

  • 第一路、第二路:只要召回到正确卡片关联的任一 dashboard_id 即视为命中。
  • 第三路:只要召回到正确卡片关联的任一 dataset_id 即视为命中。
  • 总召回:三路结果取并集后,只要任一路命中即视为命中。

安装依赖

python3 -m pip install -r requirements.txt

运行

python3 recall_eval.py \
  --questions-txt ./questions.txt \
  --id-map-parquet ./id_map.parquet \
  --api-url http://your-recall-api/recall \
  --output-dir ./output

输出

  • output/recall_summary.json:汇总指标
  • output/recall_details.csv:逐题明细,包含第二路/第三路召回结果和错误信息

接口约定

脚本默认使用 POST JSON:

{
  "question": "本月深圳分行存款趋势",
  "recall_type": "dashboard"
}

返回支持以下常见结构之一:

  • 顶层数组
  • {"data": [...]}
  • {"items": [...]}
  • {"results": [...]}

每条记录至少包含一个可识别的 ID 字段,例如:

  • dashboard_id
  • dataset_id
  • id

NL2SQL 批量测试

新增脚本 nl2sql_batch_test.py,用于批量执行:

  1. 读取测试 JSON
  2. 调用 SQL 生成流式接口,解析 5 个候选答案的 card_idsql
  3. 逐条调用 SQL 查询接口
  4. 将查询结果与标准答案比对
  5. 输出成功数、成功率和逐题生成结果文件

运行前需要先修改脚本顶部常量:

  • BASE_URL
  • QUERY_SQL_URL
  • USER_TOKEN

运行命令:

python3 nl2sql_batch_test.py \
  --input-json ./sql_generate_testcase.json \
  --output-dir ./output

输出文件:

  • output/nl2sql_batch_summary.json
  • output/nl2sql_generated_answers.json