AI Model Wiki

    Skip to main content
    Back to Glossary

    Rotary Position Embedding

    Rotary Position Embedding (RoPE) encodes each token's position in a sequence by applying a rotation transformation to the query and key vectors inside every attention layer of a transformer. The key insight is that rotating by an angle proportional to position means that the attention score between two tokens depends only on their relative distance — the model never needs to see a global position index. This relative-position property gives RoPE better length-generalisation than older additive sinusoidal or learned absolute embeddings.

    Think of it like labelling stops on a circular metro line with compass bearings rather than stop numbers. To know how far apart two stations are, you subtract one bearing from the other — it doesn't matter which station you call "first."

    # PyTorch pseudo-code for a single RoPE application
    def apply_rope(q, k, position_ids, dim):
        theta = 1.0 / (10000 ** (torch.arange(0, dim, 2) / dim))
        angles = position_ids.unsqueeze(-1) * theta        # [seq, dim/2]
        cos_a, sin_a = angles.cos(), angles.sin()
        q_rot = rope_rotate(q, cos_a, sin_a)
        k_rot = rope_rotate(k, cos_a, sin_a)
        return q_rot, k_rot
    

    RoPE is inseparable from Self-Attention and Transformer architecture; it influences the effective Context Window and how Embedding vectors carry structural meaning. Understanding Attention mechanics is a prerequisite for appreciating why the rotational approach is advantageous.

    You will come across RoPE whenever you study the architecture of Llama, Mistral, DeepSeek, or Qwen — it has become the standard positional encoding in virtually every major open-weight LLM released since 2023.

    AI Terminology
    Glossary