{"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/exploring-dual-encoder-architectures-for","title":"Exploring Dual Encoder Architectures for Question Answering","arxiv_id":"2204.07120","date":"2022-04-14","proceeding":null,"authors":["Zhe Dong","Jianmo Ni","Daniel M. Bikel","Enrique Alfonseca","YuAn Wang","Chen Qu","Imed Zitouni"],"abstract":"Dual encoders have been used for question-answering (QA) and information retrieval (IR) tasks with good results. Previous research focuses on two major types of dual encoders, Siamese Dual Encoder (SDE), with parameters shared across two encoders, and Asymmetric Dual Encoder (ADE), with two distinctly parameterized encoders. In this work, we explore different ways in which the dual encoder can be structured, and evaluate how these differences can affect their efficacy in terms of QA retrieval tasks. By evaluating on MS MARCO, open domain NQ and the MultiReQA benchmarks, we show that SDE performs significantly better than ADE. We further propose three different improved versions of ADEs by sharing or freezing parts of the architectures between two encoder towers. We find that sharing parameters in projection layers would enable ADEs to perform competitively with or outperform SDEs. We further explore and explain why parameter sharing in projection layer significantly improves the efficacy of the dual encoders, by directly probing the embedding spaces of the two encoder towers with t-SNE algorithm.","url_abs":"https://arxiv.org/abs/2204.07120v2","url_pdf":"https://arxiv.org/pdf/2204.07120v2.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":"exploring-dual-encoder-architectures-for","repo_url":"https://github.com/google-research/t5x_retrieval","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"information-retrieval","task_name":"Information Retrieval"},{"task_slug":"question-answering","task_name":"Question Answering"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2204.07120","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2204.07120"}},"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/google-research/t5x_retrieval","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":5},"by_repo_kind":{"listed":{"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":"235ef8fddcdb483d","entry":"compute_align_loss","repo":"google-research/t5x_retrieval","repo_kind":"listed","path":"t5x_retrieval/utils.py","file_url":"https://github.com/google-research/t5x_retrieval/blob/HEAD/t5x_retrieval/utils.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":"235ef8fddcdb483d"}},{"code_sha256_prefix":"dfeb079c701ef309","entry":"compute_uniform_loss","repo":"google-research/t5x_retrieval","repo_kind":"listed","path":"t5x_retrieval/utils.py","file_url":"https://github.com/google-research/t5x_retrieval/blob/HEAD/t5x_retrieval/utils.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":"dfeb079c701ef309"}},{"code_sha256_prefix":"9b34d93f9f61cbfe","entry":"extract_label_postprocessor","repo":"google-research/t5x_retrieval","repo_kind":"listed","path":"t5x_retrieval/postprocessors.py","file_url":"https://github.com/google-research/t5x_retrieval/blob/HEAD/t5x_retrieval/postprocessors.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":"9b34d93f9f61cbfe"}},{"code_sha256_prefix":"efca14efa04e8d57","entry":"spearman_corrcoef","repo":"google-research/t5x_retrieval","repo_kind":"listed","path":"t5x_retrieval/metrics.py","file_url":"https://github.com/google-research/t5x_retrieval/blob/HEAD/t5x_retrieval/metrics.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":"efca14efa04e8d57"}},{"code_sha256_prefix":"35405db13dcd7e51","entry":"to_stsb_label","repo":"google-research/t5x_retrieval","repo_kind":"listed","path":"t5x_retrieval/preprocessors.py","file_url":"https://github.com/google-research/t5x_retrieval/blob/HEAD/t5x_retrieval/preprocessors.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":"35405db13dcd7e51"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}