{"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/plan-on-graph-self-correcting-adaptive","title":"Plan-on-Graph: Self-Correcting Adaptive Planning of Large Language Model on Knowledge Graphs","arxiv_id":"2410.23875","date":"2024-10-31","proceeding":null,"authors":["Liyi Chen","Panrong Tong","Zhongming Jin","Ying Sun","Jieping Ye","Hui Xiong"],"abstract":"Large Language Models (LLMs) have shown remarkable reasoning capabilities on complex tasks, but they still suffer from out-of-date knowledge, hallucinations, and opaque decision-making. In contrast, Knowledge Graphs (KGs) can provide explicit and editable knowledge for LLMs to alleviate these issues. Existing paradigm of KG-augmented LLM manually predefines the breadth of exploration space and requires flawless navigation in KGs. However, this paradigm cannot adaptively explore reasoning paths in KGs based on the question semantics and self-correct erroneous reasoning paths, resulting in a bottleneck in efficiency and effect. To address these limitations, we propose a novel self-correcting adaptive planning paradigm for KG-augmented LLM named Plan-on-Graph (PoG), which first decomposes the question into several sub-objectives and then repeats the process of adaptively exploring reasoning paths, updating memory, and reflecting on the need to self-correct erroneous reasoning paths until arriving at the answer. Specifically, three important mechanisms of Guidance, Memory, and Reflection are designed to work together, to guarantee the adaptive breadth of self-correcting planning for graph reasoning. Finally, extensive experiments on three real-world datasets demonstrate the effectiveness and efficiency of PoG.","url_abs":"https://arxiv.org/abs/2410.23875v1","url_pdf":"https://arxiv.org/pdf/2410.23875v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"plan-on-graph-self-correcting-adaptive","repo_url":"https://github.com/liyichen-cly/pog","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"plan-on-graph-self-correcting-adaptive","repo_url":"https://github.com/phunterlau/paper_without_code/tree/main/examples/PoG/","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"knowledge-graphs","task_name":"Knowledge Graphs"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"large-language-model","task_name":"Large Language Model"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.23875","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.23875"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/phunterlau/paper_without_code/tree/main/examples/PoG/","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/liyichen-cly/pog","reach":{"status":"ok"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"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":9,"samples":[{"code_sha256_prefix":"8efd8b00e5ee004a","entry":"abandon_rels","repo":"liyichen-cly/pog","repo_kind":"official","path":"PoG/freebase_func.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/PoG/freebase_func.py","link_basis":"harvester_set","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":"8efd8b00e5ee004a"}},{"code_sha256_prefix":"83e832b7a9f97750","entry":"align","repo":"liyichen-cly/pog","repo_kind":"official","path":"eval/utils.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/eval/utils.py","link_basis":"harvester_set","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":"83e832b7a9f97750"}},{"code_sha256_prefix":"6605485c1b40ffe9","entry":"convert_dict_name","repo":"liyichen-cly/pog","repo_kind":"official","path":"PoG/utils.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/PoG/utils.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":"6605485c1b40ffe9"}},{"code_sha256_prefix":"c6edd0c4b397a6d4","entry":"get_one_data","repo":"liyichen-cly/pog","repo_kind":"official","path":"PoG/main_freebase.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/PoG/main_freebase.py","link_basis":"harvester_set","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":"c6edd0c4b397a6d4"}},{"code_sha256_prefix":"4ef3a2c0f6af989b","entry":"prepare_dataset_for_eval","repo":"liyichen-cly/pog","repo_kind":"official","path":"eval/utils.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/eval/utils.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":"4ef3a2c0f6af989b"}},{"code_sha256_prefix":"4b210412a245bba2","entry":"read_output","repo":"liyichen-cly/pog","repo_kind":"official","path":"eval/utils.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/eval/utils.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":"4b210412a245bba2"}},{"code_sha256_prefix":"de182a2628b47900","entry":"repeat_unanswer","repo":"liyichen-cly/pog","repo_kind":"official","path":"PoG/main_freebase.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/PoG/main_freebase.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":"de182a2628b47900"}},{"code_sha256_prefix":"f7def732c19d62d5","entry":"replace_relation_prefix","repo":"liyichen-cly/pog","repo_kind":"official","path":"PoG/freebase_func.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/PoG/freebase_func.py","link_basis":"harvester_set","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":"f7def732c19d62d5"}},{"code_sha256_prefix":"fbeffd19ff44c661","entry":"run_llm","repo":"liyichen-cly/pog","repo_kind":"official","path":"PoG/utils.py","file_url":"https://github.com/liyichen-cly/pog/blob/HEAD/PoG/utils.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":"fbeffd19ff44c661"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}