Embeddr Find Similar Artifacts (V2)
Reverse-image-search your own library, from inside the graph
- image
- images
- artifact_ids
Find Similar Artifacts is the reverse-image-search node of the Embeddr pack. Give it an image, and it goes through your Embeddr library and pulls back the artifacts that look most like it - as actual image tensors you can pipe straight into an img2img chain, an IP-Adapter, or a quick visual compare.
This is one of those "your library becomes a training/reference set" nodes that makes a self-hosted asset store feel magical. You finish a generation you like, you want five more in that visual neighborhood, you feed the result back in. Or you drop a reference image you found elsewhere and let it round up everything you've ever made that's close to it.
How it works
The mechanism is honest about being a bridge. The node takes the first image of the input batch, converts it to a PNG, and POSTs it to your Embeddr server at /api/v1/plugins/embeddr-comfyui/find_similar, along with two parameters: limit (how many hits, 1–50, default 5) and model_name (the embedding model to search with, default "lotus").
Your Embeddr backend does the actual similarity search - this node doesn't run any embedding model locally. Then, for each hit, it fetches the artifact's image content back through the plugin route and decodes it into a tensor. Everything you get out of it has already been a round-trip through your server.
Two outputs, both lists:
images- the similar images as anIMAGEbatch. Wire this into anything that takes images.artifact_ids- the IDs of those same hits, in the same order. This is the quiet win: take the first ID and pass it to Find Similar To Artifact to chain searches, or keep the IDs for lineage.
The model_name knob
The default "lotus" is the name of an embedding model your Embeddr instance exposes for similarity. If your backend is configured with a different embedding model, change this to match - a wrong name typically means the search returns nothing (the node logs a failure and hands back an empty 64×64 image and an ID of "-1", so an all-black/no-op result is your signal, not a crash). Same empty-result shape appears when the library genuinely has no matches, so check your limit and your model_name before assuming the library is empty.
Install & setup
Shared pack install: run embeddr serve first (the README opens with a warning that this pack requires embeddr-cli), install the pack via ComfyUI Manager or by extracting a release into custom_nodes, restart ComfyUI. Only requests beyond the host environment.
Because the search runs on your server, this node's latency is "however fast your Embeddr index is," not your GPU's. It's a bridge node, so the classic security caveat for API-wrapper nodes is inverted here in a good way: your images go to your own server on localhost:8003, not some cloud - the same reason self-hosting this whole setup is the point.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| limit | INT | 51–50 | — |
| model_name | STRING | lotus | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| artifact_ids | STRING | — |