TrioBench
收藏资源简介:
TrioBench 是一个用于评估大型语言模型(LLMs)作为混合查询规划器的基准数据集,基于 Yelp 开放数据集构建。该数据集覆盖三种数据库引擎:SQLite(结构化事实与聚合)、Milvus(语义文本/图像检索)和 Neo4j(图约束与多跳推理)。数据集包含 341 个自然语言问题,每个问题由 5 种不同的 LLM(Claude、GPT、Gemini、DeepSeek 和 Qwen)处理,共产生 1,705 个完整输出。数据集分为两个配置:questions(341 行,包含每个问题的自然语言描述、难度评估、查询类型和计划步骤数等信息)和 all_models(1,705 行,包含每个问题和模型对的详细输出,如可执行的 JSON 计划、完整的 Python 程序等)。该数据集适用于文本生成、问答、SQL、向量搜索、知识图谱和多模态检索等任务,可用于 LLM 评估、代码生成和查询规划等场景。数据集发布在 CC-BY-4.0 许可下,但底层 Yelp 数据仍受 Yelp 数据集许可约束。
TrioBench is a benchmark dataset for evaluating large language models (LLMs) as hybrid query planners, constructed upon the Yelp Open Dataset. This dataset covers three database engines: SQLite for structured facts and aggregations, Milvus for semantic text/image retrieval, and Neo4j for graph constraints and multi-hop reasoning. It contains 341 natural language questions, which are processed by 5 distinct LLMs including Claude, GPT, Gemini, DeepSeek and Qwen, yielding a total of 1,705 complete outputs. The dataset is split into two configurations: 1. questions: 341 rows in total, containing information such as the natural language description of each question, difficulty assessment, query type, number of planning steps, and other related details; 2. all_models: 1,705 rows in total, containing detailed outputs for each question-model pair, such as executable JSON plans, complete Python programs, and more. This dataset is suitable for tasks including text generation, question answering, SQL, vector search, knowledge graph and multimodal retrieval, and can be applied to scenarios such as LLM evaluation, code generation and query planning. The dataset is released under the CC-BY-4.0 license, while the underlying Yelp data is still subject to the Yelp Dataset License.
TrioBench 数据集概述
基本信息
- 名称: TrioBench
- 语言: 英文
- 许可证: CC-BY-4.0(底层Yelp数据受Yelp Dataset License约束)
- 数据集大小: 1K < n < 10K
- 任务类型: 文本生成、问答
- 标签: SQL、向量搜索、知识图谱、跨模态检索、Yelp、基准测试、LLM评估、代码生成、查询规划
数据集描述
TrioBench用于评估大语言模型作为混合查询规划器的能力,涵盖三种数据库引擎——SQLite(结构化事实与聚合)、Milvus(语义文本/图像检索)和Neo4j(图约束与多跳推理)——基于Yelp开放数据集。给定自然语言问题,规划器需要协调三种检索方式,生成两个产物:(1)可执行的多步骤JSON计划,(2)完整的可执行端到端Python程序。
数据集结构
数据集包含两个配置,每个配置存储为单个Parquet文件。
1. questions — 341行
每行对应一个自然语言问题,包含每个模型独立的难度评估、查询类型、计划步数,以及多数投票共识。
| 列名 | 类型 | 描述 |
|---|---|---|
question_id |
int32 | 1索引(1–341) |
natural_question |
string | 英文自然语言问题 |
difficulty_claude |
string | easy / medium / hard |
difficulty_gpt |
string | |
difficulty_gemini |
string | |
difficulty_qwen |
string | |
difficulty_deepseek |
string | |
query_types_claude |
string | JSON数组:["sql", "vector", "graph"] |
query_types_gpt |
string | |
query_types_gemini |
string | |
query_types_qwen |
string | |
query_types_deepseek |
string | |
num_plan_steps_claude |
int32 | 模型计划的执行步数 |
num_plan_steps_gpt |
int32 | |
num_plan_steps_gemini |
int32 | |
num_plan_steps_qwen |
int32 | |
num_plan_steps_deepseek |
int32 | |
difficulty_consensus |
string | 5个模型的多数投票结果 |
difficulty_agreement |
int32 | 达成一致的模型数量(3、4或5) |
2. all_models — 1,705行(341 × 5)
每行对应一个(问题,模型)对,按question_id和model_name排序。
| 列名 | 类型 | 描述 |
|---|---|---|
question_id |
int32 | 1–341 |
model_name |
string | claude / gpt / gemini / qwen / deepseek |
natural_question |
string | 问题文本 |
difficulty |
string | 模型分配的难度 |
query_types |
string | JSON数组(标准化为sql/vector/graph) |
num_plan_steps |
int32 | 计划步数 |
plan_json |
string | JSON计划步骤对象数组 |
complete_code |
string | 完整的可执行Python程序 |
analysis |
string | 模型的推理文本 |
每个plan_json中的计划步骤结构如下: json { "step": 1, "parameters": { "ms_names": ["table/collection"], "filter_condition": {...} }, "result_var": "variable_name", "description": { "narrative": "what this step does", "example_query": "executable SQL / Cypher / vector search expression" } }
快速统计
341个问题,覆盖3个难度级别和3种引擎组合模式。
难度分布(每个模型的独立评估):
| 难度 | Claude | GPT | Gemini | Qwen | DeepSeek | 共识 |
|---|---|---|---|---|---|---|
| hard | 189 | 121 | 118 | 119 | 89 | 124 |
| medium | 136 | 211 | 209 | 217 | 250 | 213 |
| easy | 16 | 9 | 14 | 5 | 2 | 4 |
共识一致性:
- 5/5模型一致:130个问题
- 4/5模型一致:120个问题
- 3/5模型一致:91个问题
使用示例
python from datasets import load_dataset
加载带有每个模型标签的问题
questions = load_dataset("iwei0/TrioBench", "questions", split="train")
加载所有模型输出
all_models = load_dataset("iwei0/TrioBench", "all_models", split="train")
按模型筛选
claude = all_models.filter(lambda x: x["model_name"] == "claude")
比较问题2的所有5个模型
q2 = all_models.filter(lambda x: x["question_id"] == 2)
局限性
- 每个行的错误标签未包含在内;基准的错误分类分析是手动进行的
complete_code包含硬编码的Windows路径(例如D:/Yelp-JSON/db/sqlite3/business.db),需要根据环境调整- 部分GPT和DeepSeek的
analysis字段包含中文文本
引用
bibtex @dataset{triobench, title = {TrioBench: A Cross-Database × Cross-Modal Retrieval Planning Benchmark}, year = {2025}, url = {https://github.com/AgentCombo/TrioBench-dev}, note = {341 questions, 5 LLM outputs, SQLite + Milvus + Neo4j on Yelp Open Dataset} }





