IPAdapter Embeds
Apply a pre-computed reference embedding
- model
- ipadapter
- pos_embed
- neg_embed
- attn_mask
- clip_vision
- MODEL
IPAdapter Embeds is the apply node for when your reference is already an embedding, not an image. It's the consuming end of the pack's encode-then-apply split: IPAdapter Encoder (and optionally IPAdapter Combine Embeds) turn images into EMBEDS, and this node takes those and patches your model with them. If you've built a workflow around pre-encoded, blended references, this is where it all lands.
Functionally it's very close to IPAdapter Advanced - same job of injecting image conditioning into the model - but instead of an image input it takes pos_embed. Everything downstream of encoding is identical; you've just moved the CLIP-vision step earlier in the graph so you can reuse and combine embeddings first.
Inputs and outputs
The required connections: model, ipadapter, and pos_embed (the positive embedding, from the Encoder or a Combine node). Then the tuning:
- weight - strength, default 1.0 (range −1 to 3). Same rule of thumb as always: often better a bit below 1.
- weight_type - the full fifteen-curve menu (
linear, theeasefamily,style transfer,composition, etc.). - start_at / end_at - the sampling window the effect runs over.
- embeds_scaling - the attention-math control; leave on default until you have a reason.
Optionally, neg_embed supplies the paired negative embedding (the Encoder produces one - feed it through for a cleaner result), attn_mask confines the effect to a region, and clip_vision is there for completeness though your reference is already encoded. Output is a single patched MODEL for the KSampler.
Where it fits
Reach for this node when you've deliberately separated encoding from application - which you'd do to:
- Combine multiple references first. Encode three or four images, blend them with
IPAdapter Combine Embeds, then apply the single merged embedding here. This is the backbone of "average several photos into one robust identity" workflows. - Reuse an embedding across generations. Encode once, apply many times, without paying the CLIP-vision cost on every run.
- Do embedding math. Because the input is a vector, you can add, subtract, or average references upstream to push or pull specific attributes before they ever reach the model.
If you just have one image and one generation, skip the whole embeds pipeline and use IPAdapter Advanced with a direct image input - it's fewer nodes for the same result. The embeds path is for when the flexibility of working with the raw vectors is worth the extra plumbing.
Installing the pack
ComfyUI Manager: search "IPAdapter plus" in the Custom Nodes Manager, install, restart. Or manually: cd ComfyUI/custom_nodes && git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus, then restart ComfyUI. You'll need an IP-Adapter model in ComfyUI/models/ipadapter and a CLIP vision encoder in ComfyUI/models/clip_vision matched to your base (ViT-H for SD1.5, bigG for SDXL) - the encoding upstream needs it even though this node consumes the finished embedding. Update ComfyUI if the node fails to load. SD1.5/SDXL only, no Flux.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| pos_embed | EMBEDS | — | |
| weight | FLOAT | 1.00-1–3 | — |
| weight_type | COMBO | 15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9 | |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| neg_embedopt | EMBEDS | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |