1. A system for generating image tags, the system comprising: a processor; and computer storage memory having computer-executable instructions stored thereon which, when executed by the processor, implement a method for generating image tags, the method comprising: (1) receiving image data from a plurality of sources for an image, wherein the plurality of sources comprises at least one of a web page including the image, the image's metadata, and a search query that resulted in rendering the image; (2) analyzing the image data to identify one or more relevant text items associated with the image, wherein the one or more relevant text items is aggregated text associated with the image, and wherein the analyzing comprises a) extracting keyword and repetitive n-gram text from the image data associated with each of the plurality of sources, and b) aggregating the keyword and repetitive n-gram text from each of the plurality of sources into aggregated text; (3) generating a plurality of image tags based on the one or more relevant text items; (4) ranking the plurality of image tags to identify a set of ranked image tags to associate with the image, wherein ranking the plurality of image tags comprises supplying the plurality of image tags as an input to a machine learning model trained with user session logs to predict engagement of image tags wherein an output of the machine learning model is the set of ranked image tags, the ranked image tags comprising a subset of the plurality of image tags; and (5) in response to receiving a search query that prompts a search engine to provide at least the image for display, providing the image and one or more ranked image tags from the set of ranked image tags.