Beyond Real: Imaginary Extension of Rotary Position Embeddings for Long-Context LLMs
Xiaoran Liu, Yuerong Song, Zhigeng Liu, Zengfeng Huang, Qipeng Guo, Zhaoxiang Liu, Shiguo Lian, Ziwei He, Xipeng Qiu
TL;DR
RoPE++ identifies a loss in the imaginary component of RoPE's complex attention and reintroduces it as a parallel imaginary attention head. By sharing QKV projections, RoPE++ preserves a unified absolute–relative position embedding and offers two configurations (RoPE++_EH and RoPE++_EC) that balance cache and throughput. Theoretical analysis and extensive experiments show improved long-context dependency modeling, with RoPE++ outperforming vanilla RoPE on long-context benchmarks and offering notable efficiency gains. The work provides open-source code and demonstrates that incorporating imaginary attention yields robust benefits for long-context LLMs while remaining compatible with existing long-context techniques.
Abstract
Rotary Position Embeddings (RoPE) have become a standard for encoding sequence order in Large Language Models (LLMs) by applying rotations to query and key vectors in the complex plane. Standard implementations, however, utilize only the real component of the complex-valued dot product for attention score calculation. This simplification discards the imaginary component, which contains valuable phase information, leading to a potential loss of relational details crucial for modeling long-context dependencies. In this paper, we propose an extension that re-incorporates this discarded imaginary component. Our method leverages the full complex-valued representation to create a dual-component attention score. We theoretically and empirically demonstrate that this approach enhances the modeling of long-context dependencies by preserving more positional information. Furthermore, evaluations on a suite of long-context language modeling benchmarks show that our method consistently improves performance over the standard RoPE, with the benefits becoming more significant as context length increases. The code is available at https://github.com/OpenMOSS/rope_pp.
