I have followed this example for setting up an Elasticsearch cluster for image similarity search: https://github.com/radoondas/flask-elastic-image-search
Not being familiar with elasticsearch, I blindly followed this example which includes have an ML node with a pretrained model. It works well. However, I suspect that we are not actually using the ML node.
I extract the dense vectors in my application and then index them, and I also extract the vectors in my application when I query. I do not use elasticsearch to extract the dense vectors.
Is there any "magic" that makes elasticsearch use the pretrained model behind the scenes when I index a dense vector or perform a KNN query? Or is the pretrained model and ML node all extra stuff we don't need in our implementation?
I have learned that the pre-trained model in elasticsearch can be used to generate embeddings (for a similarity search) from text, so my current setup does not actually use it. I will be exploring if I can use the model in ES to generate vectors for the images, until them I will continue generating all embeddings within my application.