Immich photo search depends most directly on the application server, queued preparation work, machine-learning inference, and PostgreSQL search state working as one pipeline.
Storage and networking still matter, but usually because they feed or delay that pipeline rather than because a faster disk or link directly makes semantic ranking smarter. For a private family library, the useful question is therefore not “which container uses the most CPU?” but “which component owns the missing stage between an original file and a permitted search result?”
The Server Connects Client Actions to Background Work
The application server is the front door for uploads, browsing, authentication, and search requests, and it also participates in launching or consuming background work. When this layer is unhealthy, many symptoms appear at once: clients may time out, jobs may not advance as expected, or completed data may not be returned to the user.
A self-hosting walkthrough that separates four Immich services helps make the dependency graph concrete. The application, machine-learning service, database, and queue system can live in one Compose stack while still representing different failure and performance roles.
Do not infer that the server process is the cause merely because every request passes through it. If API responses are healthy and the job queue advances but semantic results remain incomplete, follow the next dependency instead of adding CPU to the front-end service.
Queued Preparation Determines When Assets Become Eligible
Search cannot use information that has not been produced. New assets may need metadata extraction, thumbnail preparation, and search-specific analysis before they reach the same state as older indexed photos. Queue progress therefore controls freshness even when existing search remains healthy.
A deployment-oriented overview of the container stack is useful for separating persistent services from generated media and transient processing. The exact deployment may differ, but the dependency principle remains: a missing upstream preparation output can block a later search stage without corrupting the original photo.
This component is the leading suspect when new uploads lag while old searches still work. It becomes a weaker explanation after the relevant queues complete successfully for the same assets, at which point the database state, model relevance, filters, and permissions deserve more attention.
Machine Learning Creates the Semantic Representation
For contextual search, the machine-learning service turns image content and search text into comparable representations. Its model choice, inference speed, memory footprint, and availability affect how quickly new assets gain semantic search state and how useful certain natural-language queries can be.
A remote-compute example using remote Immich ML demonstrates that inference can be moved away from the main host. That flexibility also exposes a boundary: once ML is remote, network reachability and latency between services become part of indexing even though normal file browsing may remain local.
Machine learning is not the right explanation for every missing result. Filename, date, folder, album, or other metadata-oriented searches can depend on different state, and even a completed semantic index can rank an ambiguous visual query poorly. Separate index completion from relevance quality.
PostgreSQL Holds the Searchable Application State
The database ties assets to users, albums, metadata, configuration, and search-related records. A search request ultimately needs durable application state that identifies which assets are eligible and what indexed information is associated with them. Fast inference cannot compensate for missing or unhealthy database state.
Storage planning guidance that distinguishes database and derivative roles is valuable because it prevents all extra storage from being labeled as duplicate photos. Database growth, generated previews, model caches, and original media have different recovery value and different I/O patterns.
The database becomes a stronger performance suspect when query latency, connection waiting, or write activity rises together with slow searches while model jobs are already complete. It becomes a weaker suspect when a metadata lookup is fast but only one semantic phrase produces poor matches.
Trace One Known Photo Through the Whole Path
Choose one authorized reference photo with obvious metadata and visual content. Confirm the original opens, its preview displays, relevant background jobs finish, an exact metadata-oriented lookup finds it, and a simple semantic query retrieves it. Repeat with a second user only when permissions are part of the question.
The ZimaSpace explanation of Immich’s data path provides a useful framework for assigning each observation to the client, server, processing service, database, or storage layer instead of treating “Immich” as one opaque component.
Stop at the first failed stage. If the original cannot be read, investigate storage or access. If processing never completes, investigate the relevant worker and shared resources. If metadata search works but semantic search does not, focus on ML/index state or relevance. This staged test prevents unrelated upgrades from masking the actual dependency.
Tech & AI HUB
More to Read

Open Models Are Catching Frontier AI—Is 2026 the Year Local AI Becomes Good Enough?
Open models are getting good enough for more local AI workloads, while frontier cloud models remain useful for the hardest reasoning and agent tasks.

NVIDIA PAIR Turns Your Home Network Into a Local AI Cluster—Do You Still Need One Big GPU Server?
NVIDIA PAIR spreads local AI requests across multiple PCs, making compute more elastic while one home server can keep data and state persistent.

Why Does Immich Feel Faster on LAN Than on Remote Connections?
LAN requests usually take a shorter, lower-latency path. Remote access adds WAN capacity limits and may add DNS, TLS, proxy, VPN, or relay hops.

