计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
evaluation【效率与协作】Plan, validate, and safely run DeepSearcher retrieval evaluations, especially 2WikiMultiHopQA recall workflows, with explicit cost, resume, and corpus-loading controls.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this sub-skill for retrieval-quality evaluation with DeepSearcher. The supported benchmark workflow is 2WikiMultiHopQA, comparing DeepSearcher retrieval with the naive RAG baseline using Recall@2 and Recall@5.
dataset, config_yaml, pre_num, max_iter, output_dir, skip_load, and flag.details.csv, statistics.json, retrieved-title metadata, recall@K, token usage, and resumable partial output.../provider-configuration/SKILL.md.../data-ingestion/SKILL.md.query, retrieve, naive_retrieve, RAG agent selection, or iteration behavior outside the benchmark: use ../rag-query/SKILL.md.deepsearcher console command or HTTP service: use ../cli-and-service/SKILL.md.Run the no-network validator before initialization or indexing. It checks the dataset name, both JSON shapes, required YAML feature sections, and the output path without importing DeepSearcher or invoking providers:
python scripts/check_evaluation_inputs.py \
--dataset 2wikimultihopqa \
--corpus path/to/2wikimultihopqa_corpus.json \
--questions path/to/2wikimultihopqa.json \
--config-yaml path/to/eval_config.yaml \
--output-dir path/to/eval-output
Add --create-output-dir only when it is safe to create the planned output directories. See data formats for custom-fixture requirements.
Confirm that config_yaml contains all five provide_settings feature sections and that the file loader can read the corpus (JsonFileLoader with text_key: text for the standard corpus). Check provider credentials and vector DB readiness separately; the validator intentionally does not test them.
Budget the run before launching it. A full run initializes an LLM, embedding model, loader/crawler providers, and vector DB, embeds the corpus on the first load, and invokes the retrieval pipeline for each evaluated question. More samples improve stability; higher max_iter generally increases token use and elapsed time. Use a small positive pre_num first, record the provider/model and configuration, and expand only after the smoke run succeeds.
Invoke the available evaluation runner using its public argument contract. The source-independent command shape is:
python path/to/evaluation_runner.py \
--dataset 2wikimultihopqa \
--config_yaml path/to/eval_config.yaml \
--pre_num 5 \
--max_iter 3 \
--output_dir path/to/eval-output \
--flag result
The full workflow is optional and credentialed/expensive. Do not treat a validator pass as proof that providers, embeddings, Milvus, or the benchmark runner are operational.
On the first run, allow corpus loading into a fresh or intentionally replaced collection. The benchmark loader uses the pre-chunked corpus as one large chunk per record (chunk_size=999999, chunk_overlap=0) and replaces the target collection in its normal first-run path. Treat that replacement as destructive; isolate the evaluation collection or vector DB from useful data.
After a successful load, resume or run another sample range with --skip_load only when the same compatible collection is still available: same vector DB endpoint/URI, collection, embedding dimension/model, and corpus. skip_load skips indexing; it does not verify that the collection exists or matches the files. Do not use it after changing embeddings, vector DB, collection, corpus, or an isolated working directory.
Use a distinct flag for logically separate reports. Results are written below output_dir/<flag>/; a flag separates report files, not vector collections. Avoid concurrent runs against the same local Milvus Lite database because the cwd-relative database can lock.
A completed or partial run writes:
details.csv: one row per processed question, including the index, question, DeepSearcher and naive-RAG recall dictionaries, gold titles, and retrieved titles.statistics.json: aggregate Recall@2/Recall@5 for both systems, DeepSearcher token usage, error count, sample count, and token usage per sample.The runner resumes from the number of existing CSV rows and combines saved statistics with newly processed rows. Preserve details.csv and statistics.json as a pair; back them up before manual edits. Inspect both files and record the dataset/config/model, pre_num, max_iter, flag, whether loading was skipped, and any pipeline errors when reporting results.
scripts/check_evaluation_inputs.py — deterministic, no-network input checker with --help and optional output-directory creation.