This dataset contains the 68,231 multi-turn deep-research trajectories used to
train the SFT cold-start checkpoint that RL (GRPO+TIS) is later launched from β
the "68.2 K distilled deep-research trajectories" referenced in the paper and in
LiteResearcher-Data.
Each row is a complete ReAct-style episode: a research question, the model's
interleaved thinking and search / browse tool calls, the observations that
came back, and a final <answer>.
Where this sits in the pipeline: SFT cold-start β Stage-1 RAG warmup β Stage-2 curriculum RL. The RL prompts live in
simplex-ai-inc/LiteResearcher-Data; the webpage corpus behind the local search/browse environment lives insimplex-ai-inc/LiteResearcher-Corpus. This repo is the supervised trajectories that teach the tool-use loop before any RL happens.
| Rows | 68,231 |
| Format | Parquet, 9 shards, ~732 MB total |
| Messages per trajectory | min 3, mean 18.3, max 197 |
| Total assistant turns | 591,304 |
| Language | ~74 % English / ~26 % Chinese (by question) |
| Context length | fits a 64 K-token training window (Qwen3 tokenizer) |
Trajectories are distilled over questions drawn from these upstream pools:
source | Rows | What it is |
|---|---|---|
direct_information_seeking_datagen_row1-row42748_v2 | 27,744 | Synthesised direct information-seeking questions (first batch) |
MiroRL_GenQA | 10,400 | Generated QA from the MiroRL question pool |
taskcraft | 8,645 | TaskCraft-style compositional task questions |
asearcher | 8,364 | ASearcher-style search questions |
direct_information_seeking_datagen_row42748-_v2 | 8,265 | Synthesised direct information-seeking questions (second batch) |
chinese_QA | 2,502 | Chinese-language QA |
BenchSeedQA | 2,311 | Seed questions derived from benchmark-style tasks |
The two direct_information_seeking_*_v2 shards are the same generator run split
by row range β treat them as one 36,009-row pool if you want a coarser grouping.
| Column | Type | Description |
|---|---|---|
conversations | list[{role, content}] | The full trajectory in ShareGPT form. Roles are system, user, assistant. |
source | string | Upstream question pool (see table above). |
On the role encoding: tool observations (search results, fetched page
content) are carried in user turns rather than a separate observation /
tool role β this is the ShareGPT convention the LLaMA-Factory recipe expects.
A trajectory alternates assistant (reasoning + tool call) β user
(observation), ending on an assistant turn that emits the final answer.
The system turn carries the deep-research system prompt: a role description,
the <tools> block with JSON function signatures for search and browse, and
the requirement that the final response be wrapped in <answer></answer> tags.
assistant turns emit reasoning followed by either a <tool_call> or the final
<answer>.
from datasets import load_dataset
ds = load_dataset("simplex-ai-inc/LiteResearcher-SFT-Data", split="train")
print(ds) # 68,231 rows
print(ds[0]["source"])
print(ds[0]["conversations"][0]) # system prompt (tools block)
print(ds[0]["conversations"][1]) # the research question
hf download simplex-ai-inc/LiteResearcher-SFT-Data --repo-type dataset --local-dir ./literesearcher_sft
Register it in data/dataset_info.json:
{
"literesearcher_sft": {
"file_name": "literesearcher_sft/data",
"formatting": "sharegpt",
"columns": { "messages": "conversations" },
"tags": {
"role_tag": "role", "content_tag": "content",
"user_tag": "user", "assistant_tag": "assistant",
"observation_tag": "observation", "system_tag": "system"
}
}
}
Cold-start config we used (Qwen3-4B-Thinking-2507, 8ΓH100, full fine-tune):
dataset: literesearcher_sft
template: qwen3
enable_thinking: true
cutoff_len: 65536 # 64K training window
learning_rate: 2.0e-5
num_train_epochs: 1.0
per_device_train_batch_size: 2
gradient_accumulation_steps: 8
lr_scheduler_type: cosine
warmup_ratio: 0.1
weight_decay: 0.01
bf16: true
gradient_checkpointing: true
flash_attn: fa2
enable_liger_kernel: true
deepspeed: examples/deepspeed/ds_z2_config.json
<tool_call> / <answer>), consistent tool-call syntax, answer agreement
with the reference, and removal of degenerate repeated-action episodes.See Β§3 and Β§5 of the paper for how the cold-start checkpoint feeds into the two RL stages.
Inference/
harness.If you spot a row that shouldn't be public, please open an issue on the GitHub repo.
Released under Apache-2.0, matching the code and the RL data release.
@article{li2026literesearcher,
title = {LiteResearcher: A Scalable Agentic RL Training Framework for Deep Research Agent},
author = {Li, Wanli and Qu, Bince and Pan, Bo and Zhang, Jianyu and Liu, Zheng and Zhang, Pan and Chen, Wei and Zhang, Bo},
journal = {arXiv preprint arXiv:2604.17931},
year = {2026}
}
This dataset contains the 68,231 multi-turn deep-research trajectories used to
train the SFT cold-start checkpoint that RL (GRPO+TIS) is later launched from β
the "68.2 K distilled deep-research trajectories" referenced in the paper and in
LiteResearcher-Data.
Each row is a complete ReAct-style episode: a research question, the model's
interleaved thinking and search / browse tool calls, the observations that
came back, and a final <answer>.
Where this sits in the pipeline: SFT cold-start β Stage-1 RAG warmup β Stage-2 curriculum RL. The RL prompts live in
simplex-ai-inc/LiteResearcher-Data; the webpage corpus behind the local search/browse environment lives insimplex-ai-inc/LiteResearcher-Corpus. This repo is the supervised trajectories that teach the tool-use loop before any RL happens.
| Rows | 68,231 |
| Format | Parquet, 9 shards, ~732 MB total |
| Messages per trajectory | min 3, mean 18.3, max 197 |
| Total assistant turns | 591,304 |
| Language | ~74 % English / ~26 % Chinese (by question) |
| Context length | fits a 64 K-token training window (Qwen3 tokenizer) |
Trajectories are distilled over questions drawn from these upstream pools:
source | Rows | What it is |
|---|---|---|
direct_information_seeking_datagen_row1-row42748_v2 | 27,744 | Synthesised direct information-seeking questions (first batch) |
MiroRL_GenQA | 10,400 | Generated QA from the MiroRL question pool |
taskcraft | 8,645 | TaskCraft-style compositional task questions |
asearcher | 8,364 | ASearcher-style search questions |
direct_information_seeking_datagen_row42748-_v2 | 8,265 | Synthesised direct information-seeking questions (second batch) |
chinese_QA | 2,502 | Chinese-language QA |
BenchSeedQA | 2,311 | Seed questions derived from benchmark-style tasks |
The two direct_information_seeking_*_v2 shards are the same generator run split
by row range β treat them as one 36,009-row pool if you want a coarser grouping.
| Column | Type | Description |
|---|---|---|
conversations | list[{role, content}] | The full trajectory in ShareGPT form. Roles are system, user, assistant. |
source | string | Upstream question pool (see table above). |
On the role encoding: tool observations (search results, fetched page
content) are carried in user turns rather than a separate observation /
tool role β this is the ShareGPT convention the LLaMA-Factory recipe expects.
A trajectory alternates assistant (reasoning + tool call) β user
(observation), ending on an assistant turn that emits the final answer.
The system turn carries the deep-research system prompt: a role description,
the <tools> block with JSON function signatures for search and browse, and
the requirement that the final response be wrapped in <answer></answer> tags.
assistant turns emit reasoning followed by either a <tool_call> or the final
<answer>.
from datasets import load_dataset
ds = load_dataset("simplex-ai-inc/LiteResearcher-SFT-Data", split="train")
print(ds) # 68,231 rows
print(ds[0]["source"])
print(ds[0]["conversations"][0]) # system prompt (tools block)
print(ds[0]["conversations"][1]) # the research question
hf download simplex-ai-inc/LiteResearcher-SFT-Data --repo-type dataset --local-dir ./literesearcher_sft
Register it in data/dataset_info.json:
{
"literesearcher_sft": {
"file_name": "literesearcher_sft/data",
"formatting": "sharegpt",
"columns": { "messages": "conversations" },
"tags": {
"role_tag": "role", "content_tag": "content",
"user_tag": "user", "assistant_tag": "assistant",
"observation_tag": "observation", "system_tag": "system"
}
}
}
Cold-start config we used (Qwen3-4B-Thinking-2507, 8ΓH100, full fine-tune):
dataset: literesearcher_sft
template: qwen3
enable_thinking: true
cutoff_len: 65536 # 64K training window
learning_rate: 2.0e-5
num_train_epochs: 1.0
per_device_train_batch_size: 2
gradient_accumulation_steps: 8
lr_scheduler_type: cosine
warmup_ratio: 0.1
weight_decay: 0.01
bf16: true
gradient_checkpointing: true
flash_attn: fa2
enable_liger_kernel: true
deepspeed: examples/deepspeed/ds_z2_config.json
<tool_call> / <answer>), consistent tool-call syntax, answer agreement
with the reference, and removal of degenerate repeated-action episodes.See Β§3 and Β§5 of the paper for how the cold-start checkpoint feeds into the two RL stages.
Inference/
harness.If you spot a row that shouldn't be public, please open an issue on the GitHub repo.
Released under Apache-2.0, matching the code and the RL data release.
@article{li2026literesearcher,
title = {LiteResearcher: A Scalable Agentic RL Training Framework for Deep Research Agent},
author = {Li, Wanli and Qu, Bince and Pan, Bo and Zhang, Jianyu and Liu, Zheng and Zhang, Pan and Chen, Wei and Zhang, Bo},
journal = {arXiv preprint arXiv:2604.17931},
year = {2026}
}