upscaler
uwg · Kit
Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…
An n8n workflow you start by hand: for each crop in a Qdrant collection it picks a medoid, the most typical photo, in two ways. It saves a similarity threshold on each, for anomaly checks.
Medoid and threshold for each crop group saved in Qdrant is an n8n workflow in the Developer category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Manual run
It starts when you press Execute workflow, with these values set in nodes:
Four payload fields on the chosen points in your Qdrant collection: the two medoid flags and the two thresholds
What you need before you start.
Vector database
Counts the points, lists the crops, returns the distance matrix and the nearest photos, and stores the flags and thresholds as payloads.
NeedsA Qdrant cluster address and an API key, in a Qdrant API credential, and a filled collection
Embedding model
Turns each crop description into a query vector with voyage-multimodal-3.
NeedsA Voyage AI API key, in a Header Auth credential
Checked by Mindket on 13 Nov 2026
This n8n workflow prepares a Qdrant collection for anomaly checks on pictures. A manual trigger starts it. For each crop it finds a medoid, the photo most similar to all the others of that crop, in two ways. One uses the similarity between photos. The other embeds a written description of the crop with Voyage AI and takes the nearest photo. Each medoid is flagged in Qdrant and gets a similarity threshold. Twenty-six nodes do the work, beside twenty-two sticky notes.
ML engineers who keep labelled images in Qdrant and want a typical photo and a cutoff score for each class. Skip it if you need the anomaly check itself. This file only writes the numbers that such a check reads.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Agriculture | Quality teams | Find the typical photo of each crop and a cutoff for odd ones | A team stores the medoid and a threshold for cucumber. |
| Manufacturing | Inspection engineers | Prepare a reference photo and a cutoff for each product class | An engineer flags the most typical photo of each part type. |
| Retail | Catalog teams | Spot listing photos that do not match their category | A team keeps a threshold for each category to catch a wrong photo. |
| Machine learning | Data scientists | Compare a medoid from the distance matrix with a text anchored one | A scientist checks whether the two medoids of a class are the same photo. |
You need solid n8n and some Qdrant for this one: eleven calls to its API and a collection built in a set way.
Any n8n that can reach Qdrant and Voyage AI will run it. It works on a collection that a batch upload has already filled.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Two accounts are needed.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Qdrant | A cluster address and an API key in a Qdrant API credential. The collection needs a named vector voyage, a crop_name payload field and a keyword index on it |
| Voyage AI | An API key, saved in a Header Auth credential named Authorization with the value Bearer and your key |
workflow.json.Total Points in Collection to Set text medoid threshold score.Embed text.Qdrant cluster variables. Replace <YOUR_QDRANT_CLUSTER_URL> with your cluster address and set collectionName to your collection.Medoids Variables and Text Medoids Variables. Their furthestFromCenter decides which point sets the threshold. The file uses 5 and 1.Textual (visual) crop descriptions and replace the 29 crops with your own classes.Press Execute workflow. The run goes through each crop in the collection and writes four payload fields on the chosen points. Read them back in Qdrant afterwards.
| To change | Where |
|---|---|
| Which point sets the threshold | furthestFromCenter in the two variable nodes. 1 is the furthest photo, 5 the fifth furthest |
| The crops and their descriptions | Textual (visual) crop descriptions |
| The payload names | The bodies of the four nodes that start with Set |
| The collection | collectionName in Qdrant cluster variables |
The collection holds many photos labelled cucumber.
The distance matrix branch picks the photo most similar to all other cucumber photos and flags it is_medoid. It then saves the similarity between that photo and the fifth furthest cucumber photo as its threshold. The text branch does the same from a written description.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A medoid is a real photo from the group that sits nearest the middle. A threshold is the lowest similarity to it that still belongs to the group.
For experts. Qdrant’s distance matrix call returns row and column offsets with scores. The Code node sums the scores by row, and the furthest points come from a search with the medoid’s vector multiplied by -1.
| Node | What it does | What to know |
|---|---|---|
Cluster Distance Matrix | Posts to the matrix offsets endpoint with sample and limit set to the biggest group size | The cost grows with the square of the group size, which a sticky note warns about |
Find Medoid | Code, run once for each item | It adds the scores by row and returns the id of the highest |
Searching Score | Exact query with the flipped vector | limit is furthestFromCenter, and the last score times -1 is the threshold |
Merge | Combines descriptions and crops by cropName | A crop with no description is left out of the text branch |
The scipy step was rewritten, and the anomaly check itself is not included.
scipy. In n8n 2, native Python cannot import libraries and has no _input (n8n’s docs, read on 12 November 2026). Mindket’s copy, named Find Medoid, adds the scores in JavaScript and picks the same pointAn n8n workflow you start by hand. For every crop in a Qdrant collection it picks a medoid, the photo most similar to the others in its group, in two ways, and saves a similarity threshold on it for later anomaly checks.
workflow.json: the workflow as n8n exports it, forty-eight nodes. Twenty-six do the work and twenty-two are sticky notes that explain the steps. It holds no credential.README.md: these notes.scipy. In n8n 2, native Python offers only _items and _item, has no _input, and cannot import libraries such as scipy (n8n's docs, read on 12 November 2026). Mindket's copy, renamed Find Medoid, adds up each point's similarity scores in JavaScript and picks the point with the highest total, which is what the original did. One sticky note now says so.<YOUR_QDRANT_CLUSTER_URL>.voyage from the Voyage model voyage-multimodal-3, a crop_name payload field on every point and a keyword payload index on crop_name. The file's collection is called agricultural-crops.workflow.json.Total Points in Collection to Set text medoid threshold score.Authorization and give it the value Bearer <YOUR_VOYAGE_KEY> with your own key. Select it in Embed text.Qdrant cluster variables. Replace <YOUR_QDRANT_CLUSTER_URL> with your cluster address, with https:// in front and no slash at the end. Set collectionName to your collection.Medoids Variables and Text Medoids Variables. Their furthestFromCenter decides which point sets the threshold. The file uses 5 and 1.Textual (visual) crop descriptions and replace the 29 crops with your own classes, one sentence of how a typical specimen looks for each.Qdrant cluster variables leads into two branches.Total Points in Collection counts the points exactly. Next, Crop Counts asks Qdrant for the values of crop_name and how many points each has. After that, Info About Crop Clusters keeps the crop names and the size of the biggest group, and Split Out makes one item for each crop.Cluster Distance Matrix asks Qdrant for the similarity between all the points of that crop. Find Medoid adds up the scores of each point and picks the highest. Set medoid id saves is_medoid on that point.Get Medoid Vector reads the medoid's vector, and Prepare for Searching Threshold flips its sign. Searching Score then finds the points closest to the flipped vector, which are the points furthest from the medoid. Threshold Score takes the last score and Set medoid threshold score saves it as is_medoid_cluster_threshold.Textual (visual) crop descriptions holds one description for each crop. Merge pairs it with its crop, and Embed text turns it into a vector with Voyage, with input_type set to query.Get Medoid by Text finds the photo of that crop nearest to the description. Set text medoid id saves is_text_anchor_medoid on it, and the same threshold steps save is_text_anchor_medoid_cluster_threshold.furthestFromCenter in the two variable nodes. 1 is the furthest photo, 5 is the fifth furthest.Textual (visual) crop descriptions.Set.collectionName in Qdrant cluster variables.is_medoid, is_medoid_cluster_threshold, is_text_anchor_medoid and is_text_anchor_medoid_cluster_threshold.is_medoid flag, so clear the old payloads first.Merge pairs by crop name.NOTICE.md 707 B README.md 5 KB workflow.json 40 KB
uwg · Kit
Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…
nerijs · Kit
A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…
microsoft · Kit
Turns written conversations into spoken audio with up to four speakers and about 90 minutes of speech, an open Microsoft text-to-speech model for research on p…
masterofaudio2077 · Kit
Reads Egyptian Arabic text aloud and follows the short vowel marks you write into it. A fine-tune of VoiceTut-TTS that keeps its 19 built-in voices and voice c…
hugging-quants · Kit
Runs Meta's Llama 3.1 8B Instruct chat model in 4-bit AWQ form, so it fits on a GPU with about 4 GiB of free memory for the weights. For developers who want a…
besktech · Kit
Scores a Russian-first decision from a context and a list of options, giving a probability for yes/no, choice or rating questions. Runs on a plain CPU, for tea…