Views
No views yet
.
├── main.py # End-to-end QA pipeline (agent, embed, keyword modes)
├── evaluate_qa.py # Atomic-rubric QA evaluator (strict + partial)
├── model_zoo.py # Model registry
├── prompts/ # Prompt templates
│ ├── agentic_retrieval_prompt.txt
│ ├── agentic_retrieval_prompt_wo_profile.txt
│ ├── keyword_search_prompt.txt
│ └── read_and_extract_prompt.txt
├── memory/ # Episodic + semantic memory stores
├── baselines/
│ ├── MemoChat/ # MemoChat baseline (upstream code + our wrapper)
│ ├── raptor/ # RAPTOR baseline (upstream code + our wrapper)
│ └── read-agent/ # ReadAgent baseline wrapper
├── scripts/
│ ├── build_retrieval_cache.py # Pre-compute GTE-7B embeddings for the corpus
│ ├── make_v5_shards.py # Deterministic shard split by question_id
│ ├── merge_jsonl_by_dataset_order.py
│ ├── run_oracle_qa.py # Gold-session-only upper bound
│ ├── plot_main_results.py
│ ├── llm_judge_agreement.py
│ └── slurm/
│ ├── example_dense_retrieval.slurm
│ └── example_agentic_retrieval.slurm
└── requirements.txtevolv_mem_v5.json) is released separately; place it
under dataset/ along with the supporting files referenced by main.py
(all_sessions.json, all_session_summary.json, etc.).1python -m venv .venv && source .venv/bin/activate
2pip install -r requirements.txt| Provider | Env var | Flag |
|---|---|---|
| OpenAI-compatible inference API | NV_API_KEY | --nvidia |
| OpenAI-compatible LiteLLM proxy | LITELLM_API_KEY | --tritonai |
| Direct Anthropic API | ANTHROPIC_API_KEY | (default) |
| Azure OpenAI | AZURE_OPENAI_KEY | (default) |
--<flag> selects which client the pipeline uses; entries in
model_zoo.py are tagged accordingly.1python scripts/build_retrieval_cache.py \
2 --dataset dataset/evolv_mem_v5.json \
3 --all_sessions dataset/all_sessions.json \
4 --out_dir response_cache/retrieval/1python scripts/make_v5_shards.py \
2 --dataset dataset/evolv_mem_v5.json \
3 --ret_cache_jsonl response_cache/retrieval/flat-gte/v5_retrievallog_turn_flat-gte \
4 --out_dir output/shards/v5_run_nchunks10/ \
5 --num_shards 81export ret_cache="output/shards/v5_run_nchunks10/ret_cache/shard_00.jsonl"
2python main.py \
3 --in_file output/shards/v5_run_nchunks10/dataset/shard_00.json \
4 --out_file output/shards/v5_run_nchunks10/dense_gte_topk20/part_00.jsonl \
5 --model_name gpt-5.5 \
6 --top_k 20 \
7 --n_chunks 10 \
8 --nvidia \
9 --all_sessions_file dataset/all_sessions.json \
10 --no_semantic \
11 --mode embed1python main.py \
2 --in_file output/shards/v5_run_nchunks10/dataset/shard_00.json \
3 --out_file output/shards/v5_run_nchunks10/agentic_hier/part_00.jsonl \
4 --model_name gpt-5.5 \
5 --top_k 20 \
6 --n_chunks 10 \
7 --nvidia \
8 --all_sessions_file dataset/all_sessions.json \
9 --hier_v2 --hier_union \
10 --mode agentscripts/slurm/example_dense_retrieval.slurm or
scripts/slurm/example_agentic_retrieval.slurm.1python scripts/merge_jsonl_by_dataset_order.py \
2 --dataset dataset/evolv_mem_v5.json \
3 --parts_glob "output/shards/v5_run_nchunks10/dense_gte_topk20/part_*.jsonl" \
4 --out_file output/v5_run_dense_gte_topk20.jsonl
5
6python evaluate_qa.py \
7 --hyp_file output/v5_run_dense_gte_topk20.jsonl \
8 --ref_file dataset/evolv_mem_v5.json \
9 --eval_model_name gpt-5.2 \
10 --eval_mode both \
11 --nvidia<dataset>.atomic-v1.rubric.json) so subsequent runs reuse it.main.py --mode selects how a question is answered:embed: top-k flat dense retrieval (GTE 7B), then a single LLM call to answer.keyword: LLM-generated keywords + lexical matching, then answer.agent: Plan-Act-Read loop. Combines --hier_v2 (semantic-summary stage) and
--hier_union (union with flat top-K) for the hierarchical-memory variant.--no_semantic disables the semantic-summary memory layer (flat memory).baselines/ together with our thin wrappers
(run_<baseline>_baseline.py). Each baseline's upstream LICENSE is preserved.