Nodes/ComfyUI_IPAdapter_plus_V2/IPAdapter Embeds V2
ComfyUI Node

IPAdapter Embeds V2

Apply a pre-encoded reference, no image needed

By chflame163·Created 2 years ago·Updated 2 years ago· 55
IPAdapter Embeds V2
  • model
  • ipadapter
  • pos_embed
  • neg_embed
  • attn_mask
  • clip_vision
  • MODEL
weight1.00
weight_type
start_at0.000
end_at1.000
embeds_scaling

IPAdapter Embeds V2 is the apply node for the pre-encoded workflow. Instead of handing the node a reference image and paying the CLIP vision cost every time you generate, you encode once with IPAdapter Encoder V2, save the result, and this node applies it directly to your model. If you're reusing the same reference across a hundred generations - a character sheet, a style, a brand look - this is the setup that makes it fast and cheap.

How it works

The pos_embed input is required: that's the positive EMBEDS tensor from an Encoder, Load Embeds, or Combine Embeds node. neg_embed is optional - the negative counterpart from the same Encoder, which acts as the "don't generate this" reference. From there it's the same conditioning path as every apply node: the embedding flows through the IP-Adapter's cross-attention patch while your text prompt keeps its own path. The weight (default 1.0, up to 3), weight_type, start_at/end_at, and embeds_scaling inputs all behave exactly as they do on the image-based nodes. One MODEL output, into your sampler.

One thing to know: because the images are already embedded, this node doesn't strictly need CLIP vision loaded - the source requires it only when neg_embed is missing (it needs CLIP vision to produce the empty/negative encoding). Feed in both embeddings from the Encoder and you're done.

Why you'd bother

The encode-once workflow shines in two places. First, iteration speed: dialing weight and timing on a saved embedding doesn't re-run CLIP vision, and for batch-heavy animation jobs that's real time saved. Second, reproducibility: a saved .ipadpt file is a fixed reference - the same embedding every run, no crop-position drift from re-encoding. The obvious companion is IPAdapter Save Embeds V2 plus IPAdapter Load Embeds V2 to persist embeddings between sessions.

Installing it

ComfyUI Manager: search "ComfyUI_IPAdapter_plus_V2". Or:

cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2

Restart ComfyUI. Adapter weights in ComfyUI/models/ipadapter.

Gotchas

The subtle trap is mixing embedding sources: embeddings from IPAdapter Encoder V2 are the penultimate hidden states of CLIP vision, and they need a matching CLIP vision model on the apply side if you bring a clip_vision input - mismatched vision models mean embeddings that don't quite line up. Keep the encoder and the apply node on the same pack and model. And remember, this pack is a renamed snapshot of cubiq's V2 codebase, so it won't move when cubiq updates his.

Categoryipadapter/embeds

Inputs (11)

NameTypeDefaultDescription
modelMODEL
ipadapterIPADAPTER
pos_embedEMBEDS
weightFLOAT1.00-1–3
weight_typeCOMBO15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9
start_atFLOAT0.0000–1
end_atFLOAT1.0000–1
embeds_scalingCOMBO4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty
neg_embedoptEMBEDS
attn_maskoptMASK
clip_visionoptCLIP_VISION

Outputs (1)

NameTypeDescription
MODELMODEL