KI Klartext

Produktsuche per Bild: wie Bild-Embeddings aus Fotos eine Ähnlichkeitssuche machen

Wie aus Produktfotos eine Ähnlichkeitssuche wird: Bild-Embeddings, Vektorsuche und die Stellen, an denen der Hintergrund gewinnt statt des Produkts.

Ein Kunde steht mit dem Handy vor einem Schaufenster, fotografiert einen Ring und will wissen: „Habt ihr sowas?” Keine Artikelnummer, kein Name, nur das Foto. Für genau diese Frage ist Bild-Produktsuche gebaut — und unter der Haube ist sie weniger Magie, als die meisten denken.

Der Trick: Ein Modell verwandelt jedes Bild in eine lange Zahlenreihe, einen Vektor. Bilder, die sich ähnlich sehen, bekommen ähnliche Vektoren und liegen im Vektorraum nah beieinander. Aus „finde ähnliche Produkte” wird damit „finde die nächsten Nachbarn”. Ich zeige hier, wie das in der Praxis läuft, wo es kippt und woran ein ehrlicher Aufbau erkennbar ist.

ein Vektor
jedes Produktbild wird zu einer Zahlenreihe — Ähnlichkeit wird damit messbar
≠ dasselbe
ähnlich aussehend ist nicht dasselbe Produkt, der häufigste Denkfehler
der Katalog
die Trefferqualität steht und fällt mit deinen Produktbildern

So läuft eine Bildsuche

1
Den Katalog einbetten
einmalig, im Batch

Jedes Produktbild läuft durch das Modell und wird zu einem Vektor. Die Vektoren landen in einem Index. Das ist der rechenintensive Teil — aber nur einmal.

2
Die Anfrage einbetten

Das Such- oder Kundenbild läuft durch dasselbe Modell und wird zum selben Typ Vektor. Wichtig: dasselbe Modell, sonst sind die Räume nicht vergleichbar.

3
Die nächsten Nachbarn finden

Der Index liefert die ähnlichsten Vektoren in Millisekunden — die Produkte, die dem Anfragebild am nächsten liegen.

4
Filtern und prüfen
hier kommt die Realität rein

Über die Treffer legst du Metadaten-Filter (Kategorie, Verfügbarkeit, Preis). Und bei allem Verbindlichen entscheidet ein Mensch oder die Artikelnummer, nicht das Auge des Modells.

Wo es in der Praxis kippt

Der Hintergrund gewinnt. Ein naives Embedding sieht das ganze Bild, nicht nur das Produkt. Ein Kundenfoto im Wohnzimmer und ein Katalogbild auf Weiß — das Modell matcht dann auf Licht und Hintergrund statt auf den Ring. Das ist der Klassiker, und die Reparatur ist, das Produkt vor dem Einbetten freizustellen oder zu segmentieren. Wer roh einbettet, sucht halb nach Tapeten.

Ähnlich ist nicht identisch. Ein Standardmodell findet, was ähnlich aussieht — nicht die exakte Variante. Für „genau dieses Teil” reicht visuelle Nähe nicht. Da brauchst du ein feinabgestimmtes Modell, einen Strichcode oder Metadaten als Anker.

Der Domänen-Abstand. Modelle von der Stange sind auf Alltagsbildern trainiert. Feines Schmuckdetail, Stoffstruktur, Maserung — genau die Unterschiede, auf die es in einer Nische ankommt, sehen sie schlecht. Auf dem eigenen Katalog feinabstimmen schließt die Lücke, ist aber ein eigenes Projekt.

„Sieht richtig aus, ist es aber nicht.” Der Top-Treffer wirkt überzeugend und ist ein anderes Produkt. Genau weil das Ergebnis so plausibel aussieht, gehört bei allem Transaktionalen eine Prüfung dahinter.

Müll rein, Müll raus. Uneinheitliche, schlecht ausgeleuchtete Produktfotos ergeben schlechte Vektoren. In der Praxis ist die Qualität und Einheitlichkeit deiner Fotografie wichtiger als die Wahl des Modells.

Neue Artikel sind kalt. Jedes neue Produkt muss eingebettet werden, sonst ist es für die Suche unsichtbar — das ist eine laufende Pipeline, kein Einmal-Job. Und wechselst du irgendwann das Modell, musst du den gesamten Katalog neu einbetten. Plane das von Anfang an ein.

Was es kostet — und woran

Mit den heutigen Bausteinen ist der Aufbau überschaubar. Der Aufwand sitzt woanders: in sauberen, einheitlichen Produktbildern, im Freistellen, und — wenn deine Nische speziell ist — im Feinabstimmen. Das Einbetten von vielen tausend oder Millionen Bildern ist ein Batch-Job, der einmal Rechenzeit kostet; danach ist jede einzelne Suche billig und schnell.

Der unterschätzte Posten: jeder Modellwechsel bedeutet, den ganzen Katalog neu einzubetten. Deshalb versioniere ich Embeddings von Anfang an und behandle das Modell als feste Größe, die man nicht leichtfertig tauscht. Wer dir verspricht, du müsstest „nur die Bilder reinkippen”, verschweigt das Freistellen, die Nische und die Re-Embedding-Kosten.

Wo der Mensch dranbleibt

Keine verbindliche Zuordnung allein aus dem Bild. Ähnlich genügt nicht, um automatisch zu bestellen, zu ersetzen oder zu berechnen. Ein visueller Treffer ist ein Vorschlag.

Exakte Identifikation braucht einen Anker. Strichcode, Artikelnummer, Metadaten oder ein feinabgestimmtes Modell — das Auge eines Allzweck-Encoders reicht dafür nicht.

Bild-Embeddings finden, was ähnlich aussieht. Ob es dasselbe Produkt ist, entscheidet ein feinabgestimmtes Modell, ein Metadatenabgleich oder ein Mensch.

Wie ein ehrlicher Einstieg aussieht

Nimm eine Produktgruppe mit ordentlichen Bildern. Bette ein paar hundert Artikel ein, bau eine simple Nachbarsuche und miss mit einem kleinen, von Hand gelabelten Prüfset zwei Dinge: Findet die Suche bei einem Anfragebild das richtige Produkt unter den ersten Treffern? Und woran scheitert sie, wenn sie scheitert — am Hintergrund, an der Nische? Überzeugt die Trefferquote bei sauberen Bildern, weißt du, dass es trägt und wo du nachschärfst (Freistellen, Feinabstimmen). Erst dann der ganze Katalog.

Worauf du achtest, wenn dir das jemand baut

  • Werden die Bilder freigestellt oder segmentiert vor dem Einbetten, oder roh? Roh heißt, der Hintergrund redet mit.
  • Findet das System „ähnlich” oder „identisch” — und ist dir der Unterschied klar benannt? Das ist das K.-o.-Kriterium für transaktionale Fälle.
  • Gibt es Feinabstimmung auf deinen Katalog, falls deine Nische speziell ist?
  • Wie wird mit neuen Artikeln und einem Modellwechsel umgegangen (Re-Embedding)?
  • Wo liegen Bilder und Vektoren, gerade bei Foto-Uploads von Kunden? Das ist datenschutzrelevant.
Zum Mitnehmen

Du musst das nicht kaufen, um zu sehen, ob es trägt. Mit diesem Rezept steht ein Prototyp an einem Nachmittag:

Mini-Prototyp (eine Produktgruppe, ein Nachmittag):
1. Wähle 200–300 Artikel mit sauberen Produktbildern.
2. Nimm ein vortrainiertes Bild-Embedding-Modell (CLIP-artig) und bette jedes Bild ein
   -> pro Bild ein Vektor.
3. Lege die Vektoren in einen einfachen Index: FAISS lokal oder pgvector in Postgres.
4. Bette 20–30 Anfragebilder mit DEMSELBEN Modell ein, suche je die nächsten Nachbarn
   (Kosinus-Ähnlichkeit), gib die Top 5 aus.
5. Bewerte ehrlich: ist das richtige Produkt unter den Top 5? (Recall@5)
6. Erst dann entscheiden: reicht das Standardmodell, oder brauchst du Freistellen / Feinabstimmung?

Du willst, dass deine Kunden per Foto finden, was sie suchen — und fragst dich, ob das bei deinen Produkten trägt? Dann reden wir über eine deiner Produktgruppen, und ich sage dir ehrlich, ob ein Standardmodell reicht oder ob deine Nische ein feinabgestimmtes braucht.