{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2509-07666","title":"MoLoRAG: Bootstrapping Document Understanding via Multi-modal Logic-aware Retrieval","arxiv_id":"2509.07666","date":"2025-09-06","proceeding":"EMNLP","authors":["Xixi Wu","Yanchao Tan","Nan Hou","Ruiyang Zhang","Hong Cheng"],"abstract":"Document Understanding is a foundational AI capability with broad applications, and Document Question Answering (DocQA) is a key evaluation task. Traditional methods convert the document into text for processing by Large Language Models (LLMs), but this process strips away critical multi-modal information like figures. While Large Vision-Language Models (LVLMs) address this limitation, their constrained input size makes multi-page document comprehension infeasible. Retrieval-augmented generation (RAG) methods mitigate this by selecting relevant pages, but they rely solely on semantic relevance, ignoring logical connections between pages and the query, which is essential for reasoning. To this end, we propose MoLoRAG, a logic-aware retrieval framework for multi-modal, multi-page document understanding. By constructing a page graph that captures contextual relationships between pages, a lightweight VLM performs graph traversal to retrieve relevant pages, including those with logical connections often overlooked. This approach combines semantic and logical relevance to deliver more accurate retrieval. After retrieval, the top-$K$ pages are fed into arbitrary LVLMs for question answering. To enhance flexibility, MoLoRAG offers two variants: a training-free solution for easy deployment and a fine-tuned version to improve logical relevance checking. Experiments on four DocQA datasets demonstrate average improvements of 9.68% in accuracy over LVLM direct inference and 7.44% in retrieval precision over baselines. Codes and datasets are released at https://github.com/WxxShirley/MoLoRAG.","url_abs":"https://arxiv.org/abs/2509.07666","url_pdf":"https://arxiv.org/pdf/2509.07666","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2509.07666","atlas_url":"https://app.syntology.ai/?focus=2509.07666","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2509.07666"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/WxxShirley/MoLoRAG","reach":{"status":"ok"}}],"summary":{"unverified":16},"by_repo_kind":{"found_in_text":{"samples":16,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":16,"samples":[{"code_sha256_prefix":"933545346d5ea128","entry":"answer_score","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"evaluate/eval_qa.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/evaluate/eval_qa.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"933545346d5ea128"}},{"code_sha256_prefix":"52ed8e218d2f3328","entry":"evaluate_rag_one_sample","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"evaluate/eval_rag.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/evaluate/eval_rag.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"52ed8e218d2f3328"}},{"code_sha256_prefix":"ed94e91a8da902c1","entry":"format_image_path","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMModels/Qwen_VL.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMModels/Qwen_VL.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ed94e91a8da902c1"}},{"code_sha256_prefix":"8c8321c2a981f64b","entry":"generate_prompt","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMRetriever/data_collection.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMRetriever/data_collection.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8c8321c2a981f64b"}},{"code_sha256_prefix":"27aa86e35c8341d6","entry":"generate_relevance_prompt","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMRetriever/data_collection.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMRetriever/data_collection.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"27aa86e35c8341d6"}},{"code_sha256_prefix":"1e8c567bc17d4241","entry":"generate_relevance_prompt_detailed","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMRetriever/data_collection.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMRetriever/data_collection.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1e8c567bc17d4241"}},{"code_sha256_prefix":"78a13be43172d1d1","entry":"get_clean_string","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"evaluate/eval_qa.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/evaluate/eval_qa.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"78a13be43172d1d1"}},{"code_sha256_prefix":"866239531dfd6e64","entry":"get_response_concat","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMModels/DeepSeek_VL.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMModels/DeepSeek_VL.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"866239531dfd6e64"}},{"code_sha256_prefix":"1a151d04ac3ef01b","entry":"init_model","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMModels/DeepSeek_VL.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMModels/DeepSeek_VL.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1a151d04ac3ef01b"}},{"code_sha256_prefix":"90cb0a11ac3396d9","entry":"init_model","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"VLMModels/LLaMA_VL.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/VLMModels/LLaMA_VL.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"90cb0a11ac3396d9"}},{"code_sha256_prefix":"fa1dc221a3dffac3","entry":"invoke_deepseek_api","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"LLMBaseline/apis.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/LLMBaseline/apis.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fa1dc221a3dffac3"}},{"code_sha256_prefix":"7fe7bfc454416874","entry":"invoke_gpt4o_api","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"LLMBaseline/apis.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/LLMBaseline/apis.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7fe7bfc454416874"}},{"code_sha256_prefix":"5503d226ec6f4ec2","entry":"invoke_llm_api","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"LLMBaseline/apis.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/LLMBaseline/apis.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5503d226ec6f4ec2"}},{"code_sha256_prefix":"5fbdf0aff19a1398","entry":"levenshtein_distance","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"evaluate/eval_qa.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/evaluate/eval_qa.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5fbdf0aff19a1398"}},{"code_sha256_prefix":"3f3d282ff7b44be8","entry":"mrr_cell","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"evaluate/eval_rag.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/evaluate/eval_rag.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f3d282ff7b44be8"}},{"code_sha256_prefix":"c5d0362d0d15e424","entry":"ndcg_cell","repo":"WxxShirley/MoLoRAG","repo_kind":"found_in_text","path":"evaluate/eval_rag.py","file_url":"https://github.com/WxxShirley/MoLoRAG/blob/HEAD/evaluate/eval_rag.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c5d0362d0d15e424"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_api"},"syntology_extracted_results":null}