Skip to content

config.py — 全局配置访问层

概述

项目所有模块通过 import config 统一获取路径与运行参数。
内部使用 @lru_cache 避免重复解析 config.toml


路径常量(模块级,直接 import 使用)

常量说明
RAW_DIR原始 PDF 目录
PROCESSED_DIR处理后数据根目录
OCR_DIROCR 分页 Markdown 目录
TERMS_DIR术语映射目录
CHUNK_DIR术语 JSON 目录
EVALUATION_DIR评测数据目录
STATS_DIR统计报告与图表目录
OUTPUTS_DIR实验输出根目录
LOG_BASE_DIR时间戳实验跑次根目录(outputs/log/,含 run_id/json 等)
REPORTS_BASE_DIR定稿发布根目录(outputs/reports/,无时间戳;报告与对外 JSON 快照)
REPORTS_PUBLISH_DIRREPORTS_BASE_DIR 相同(别名,语义强调「发布」)
FIGURES_DIR全局图表目录(如答辩图脚本默认输出)
LOGS_DIR日志目录(通常与 LOG_BASE_DIR 一致)
RAG_RESULTS_FILERAG 问答结果文件

所有路径均为绝对路径,由 config.toml [paths] 配置并相对项目根解析。


函数

getPathsConfig() -> dict[str, str]

读取并解析 [paths] section,返回所有路径的 dict。
结果有 @lru_cache 缓存,同进程只解析一次。

getPath(name: str) -> str

按名称获取已解析的路径。

  • 参数name — 路径键名,如 "chunk_dir"
  • 返回:绝对路径字符串
  • 注意:键名不存在时抛 KeyError

get_ocr_config() -> dict

返回 [ocr] section 的配置 dict。
包含字段:page_start / page_end / skip_existing / max_image_size / device / mfr_batch_size / render_dpi / resized_shape / text_contain_formula / batch_pages / ocr_workers / max_page_chars / max_term_len / term_max_tokens / max_pages_per_term

getRetrievalConfig() -> dict

返回 [retrieval] section 的配置 dict。
包含字段:recall_factor / rrf_k / bm25_default_weight / vector_default_weight / default_vector_model / default_reranker_model / use_hybrid_tokenization / bm25_char_ngram_max 等。

getGenerationConfig() -> dict

返回 [rag_gen] section 的配置 dict。
包含字段:temperature / top_p / max_new_tokens / qwen_model_dir / max_context_chars / max_chars_per_term

getOutputController() -> OutputManager

获取全局 OutputManager 实例(基于 LOG_BASE_DIR)。

getRunLogDir() -> str

获取当前运行目录:outputs/log/YYYYMMDD_HHMMSS
同一进程内只生成一次,调用多次返回相同目录。

getJsonLogDir() -> str

获取当前运行 JSON 输出目录:outputs/log/YYYYMMDD_HHMMSS/json

getTextLogDir() -> str

获取当前运行文本日志目录:outputs/log/YYYYMMDD_HHMMSS/text

normalizeJsonOutputPath(path: str, defaultName: str) -> str

将任意路径归一化到当前运行 JSON 目录。

  • 参数
    • path:原始路径(可为空字符串)
    • defaultName:默认文件名
  • 返回:归一化后的绝对路径
  • 规则:取 path 的 basename,若为空则用 defaultName,拼到 getJsonLogDir()

normalizeTextLogPath(path: str, defaultName: str) -> str

同上,目标目录为 getTextLogDir()

getReportsDir() -> str

兼容旧接口,等价于 getJsonLogDir()


依赖

  • utils.FileLoader(读取 toml)
  • utils.OutputManager(管理输出目录)

Math-RAG 毕业设计项目