Immich ist eine selbst gehostete, Docker-basierte Foto- und Videoverwaltungssoftware, mit der ihr eure Medien zentral speichern, organisieren und durchsuchen könnt – ähnlich wie Google Fotos, nur auf eurem eigenen Server. Eine besonders praktische Funktion ist die intelligente Suche, die semantische Bildsuche oder auch Kontextsuche. Mit Suchbegriffen wie z.B. “Schwarze Katze im Schnee” könnt ihr eure zuvor analysierte Medienbibliothek durchsuchen und passende Bilder finden, ohne dass diese vorher manuell verschlagwortet werden müssen.

Für die semantische Suche ist in Immich allerdings standardmäßig das CLIP-Modell ViT-B32__openai voreingestellt, welches nicht multilingual trainiert wurde. Bei deutschen Suchbegriffen fallen die Ergebnisse daher deutlich schlechter aus als bei einem mehrsprachigen Modell. Im Folgenden zeige ich euch, wie ihr die Suchqualität durch die Auswahl eines geeigneten CLIP-Modells verbessern könnt.

Das passende CLIP-Modell finden

Ich habe mir dafür die zur Verfügung stehenden CLIP-Modelle genauer angesehen. Bei der Auswahl sind neben der Suchqualität vor allem der Speicherbedarf und die Ausführungsgeschwindigkeit interessant.

Bei der ersten Suchanfrage muss Immich das benötigte CLIP-Modell in den Arbeitsspeicher laden. Dadurch dauert die erste Suche länger. Solange das Modell im Speicher bleibt, stehen die folgenden Suchanfragen wesentlich schneller zur Verfügung.

Der Speicherbedarf ist für mich ein wichtiger Faktor, da Immich auf meiner Synology DS723+ mit 16 GB RAM läuft. Auch die Prozessorleistung des NAS ist begrenzt.

Nach mehreren Versuchen mit unterschiedlichen Modellen bin ich bei ViT-B-32-SigLIP2-256__webli gelandet. Dieses Modell ist Multilingual und liefert auch bei deutschen Begriffen sehr gute Ergebnisse. Laut den Immich-Benchmarks benötigt es zwar mehr Arbeitsspeicher und hat eine etwas längere Ausführungszeit als das Standardmodell. In meiner praktischen Nutzung fällt der Geschwindigkeitsunterschied jedoch nicht auf.

Vergleich der beiden CLIP-Modelle

MerkmalMein ModellImmich-Standardmodell
ModellnameViT-B-32-SigLIP2-256__webliViT-B-32__openai
ModellfamilieSigLIP 2OpenAI CLIP
Bildauflösung256 × 256 Pixel224 × 224 Pixel
ModellgrößeBase, ViT-B-32Base, ViT-B-32
Mehrsprachige SucheJaPrimär Englisch
RAM im Benchmark3.061 MiB1.004 MiB
Ausführungszeit im Benchmark3,31 ms2,26 ms

Quelle: Immich-Dokumentation – CLIP-Modelle. Die Messwerte stammen aus dem Benchmark und sind nicht mit den tatsächlichen Suchzeiten auf meinem Synology NAS gleichzusetzen.

Suchqualität im Benchmark

TestkriteriumDein SigLIP2-ModellOpenAI CLIP
Suchqualität Englisch (Recall)82,28 %69,90 %
Suchqualität Deutsch (Recall)81,53 %24,13 %

Recall beschreibt, wie gut relevante Bilder in den Suchergebnissen wiedergefunden werden. Die Werte beziehen sich auf die standardisierten Tests von Immich.

Gerade bei deutschen Suchanfragen ist der Unterschied deutlich: Das mehrsprachige SigLIP2-Modell findet in den Tests wesentlich mehr relevante Bilder. Für mich ist das ein guter Kompromiss zwischen Suchqualität, Geschwindigkeit und Ressourcenbedarf.

Umstellung des CLIP-Modells in Immich

Zum Ändern des Modells öffnet ihr in Immich die “Verwaltung” > “Einstellungen” > “Einstellungen für maschinelles Lernen” > “Intelligente Suche”. Dort tragt ihr im Feld „CLIP-Modell“ den Namen des gewünschten Modells ein: ViT-B-32-SigLIP2-256__webli

Immich Einstellung CLIP-Modell machinelles Lernen

Im Anschluss müssen die “Smart-Search-Embeddings” neu berechnet werden, eure komplette Medienbibliothek wird dadurch analysiert. Die Fotos selbst werden dadurch nicht erneut importiert oder verändert. Dafür wechselt ihr in den Bereich “Server-Tasks” und klickt bei “Intelligente Suche” auf Alle. Je nach Größe eurer Fotobibliothek und Performance der Hardware kann die Analyse Stunden oder Tage dauern. Ihr könnt jederzeit den Fortschritt in der Warteschlange kontrollieren.

Erneute Analyse der Fotobibliothek in Immich für die semantische Suche

Ich habe das CLIP-Modell ViT-B-32-SigLIP2-256__webli jetzt seit über einem Jahr im Einsatz freue mich regelmäßig über die ausgesprochen guten Suchergebnisse. Die erste Suche dauert ca. fünf bis 8 Sekunden (bei aktuell etwa 90.000 Medien in unserer Familienbibliothek), jede weitere Suche ist meist nach etwa einer Sekunde abgeschlossen.

Pro-Tipp: CLIP-Modell länger im RAM behalten

Standardmäßig wird das CLIP-Modell nach 300 Sekunden (fünf Minuten) ohne Nutzung wieder aus dem Arbeitsspeicher entladen. Wenn ihr die intelligente Suche häufig verwendet und genügend RAM zur Verfügung habt, könnt ihr diesen Zeitraum verlängern. Die Einstellung betrifft den Docker Container immich-machine-learning und lässt sich über die Umgebungsvariable MACHINE_LEARNING_MODEL_TTL steuern:

WertVerhalten
300Standard: Entladen nach 5 Minuten
600Beispiel: Entladen nach 10 Minuten
0Modell dauerhaft im RAM behalten