{"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/gpl-generative-pseudo-labeling-for","title":"GPL: Generative Pseudo Labeling for Unsupervised Domain Adaptation of Dense Retrieval","arxiv_id":"2112.07577","date":"2021-12-14","proceeding":"NAACL 2022 7","authors":["Kexin Wang","Nandan Thakur","Nils Reimers","Iryna Gurevych"],"abstract":"Dense retrieval approaches can overcome the lexical gap and lead to significantly improved search results. However, they require large amounts of training data which is not available for most domains. As shown in previous work (Thakur et al., 2021b), the performance of dense retrievers severely degrades under a domain shift. This limits the usage of dense retrieval approaches to only a few domains with large training datasets. In this paper, we propose the novel unsupervised domain adaptation method Generative Pseudo Labeling (GPL), which combines a query generator with pseudo labeling from a cross-encoder. On six representative domain-specialized datasets, we find the proposed GPL can outperform an out-of-the-box state-of-the-art dense retrieval approach by up to 9.3 points nDCG@10. GPL requires less (unlabeled) data from the target domain and is more robust in its training than previous methods. We further investigate the role of six recent pre-training methods in the scenario of domain adaptation for retrieval tasks, where only three could yield improved results. The best approach, TSDAE (Wang et al., 2021) can be combined with GPL, yielding another average improvement of 1.4 points nDCG@10 across the six tasks. The code and the models are available at https://github.com/UKPLab/gpl.","url_abs":"https://arxiv.org/abs/2112.07577v3","url_pdf":"https://arxiv.org/pdf/2112.07577v3.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":"gpl-generative-pseudo-labeling-for","repo_url":"https://github.com/ukplab/gpl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"gpl-generative-pseudo-labeling-for","repo_url":"https://github.com/meshidenn/cai","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"gpl-generative-pseudo-labeling-for","repo_url":"https://github.com/nthakur20/income","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"gpl-generative-pseudo-labeling-for","repo_url":"https://github.com/openmatch/coco-dr","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"gpl-generative-pseudo-labeling-for","repo_url":"https://github.com/thakur-nandan/income","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"retrieval","task_name":"Retrieval"},{"task_slug":"unsupervised-domain-adaptation","task_name":"Unsupervised Domain Adaptation"},{"task_slug":"zero-shot-text-search","task_name":"Zero-shot Text Search"}],"methods":[{"method_slug":"attention","method_name":"Attention"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"tsdae","method_name":"TSDAE"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2112.07577","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2112.07577"}},"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/meshidenn/cai","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/nthakur20/income","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/openmatch/coco-dr","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ukplab/gpl","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/thakur-nandan/income","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":5},"by_repo_kind":{"official":{"samples":5,"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":0,"samples":[{"code_sha256_prefix":"5144d93f3937f22b","entry":"concat_title_and_body","repo":"ukplab/gpl","repo_kind":"official","path":"gpl/toolkit/dataset.py","file_url":"https://github.com/ukplab/gpl/blob/HEAD/gpl/toolkit/dataset.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5144d93f3937f22b"}},{"code_sha256_prefix":"68515d0ce8324076","entry":"extract_queries_split","repo":"ukplab/gpl","repo_kind":"official","path":"gpl/toolkit/beir.py","file_url":"https://github.com/ukplab/gpl/blob/HEAD/gpl/toolkit/beir.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"68515d0ce8324076"}},{"code_sha256_prefix":"5fcbeb1ee6a92afa","entry":"hard_negative_collate_fn","repo":"ukplab/gpl","repo_kind":"official","path":"gpl/toolkit/pl.py","file_url":"https://github.com/ukplab/gpl/blob/HEAD/gpl/toolkit/pl.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5fcbeb1ee6a92afa"}},{"code_sha256_prefix":"36558215f38007f2","entry":"rescale_fn","repo":"ukplab/gpl","repo_kind":"official","path":"gpl/toolkit/rescale.py","file_url":"https://github.com/ukplab/gpl/blob/HEAD/gpl/toolkit/rescale.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"36558215f38007f2"}},{"code_sha256_prefix":"b017b02c407c77e1","entry":"rescale_gpl_training_data","repo":"ukplab/gpl","repo_kind":"official","path":"gpl/toolkit/rescale.py","file_url":"https://github.com/ukplab/gpl/blob/HEAD/gpl/toolkit/rescale.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b017b02c407c77e1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}