Générer des emboîtements

Dans cette section, vous allez découvrir l'une des options les plus pratiques disponibles pour générer des embeddings pour le texte, qui est basée sur le cadre SentenceTransformers.

Travailler avec SentenceTransformers est le chemin recommandé pendant que vous explorez et vous familiarisez avec l'utilisation des embeddings, car les modèles disponibles sous ce cadre peuvent être installés sur votre ordinateur, fonctionnent raisonnablement bien sans GPU, et sont gratuits.

Installer des transformateurs de phrases

Le framework SentenceTransformers est installé en tant que paquetage Python. Assurez-vous que votre environnement virtuel Python est activé, puis exécutez la commande suivante dans votre terminal pour installer ce framework :

Comme toujours, chaque fois que vous ajoutez de nouvelles dépendances à votre projet, il est bon de mettre à jour votre fichier d'exigences :

Sélection d'un modèle

La tâche suivante consiste à choisir un modèle d'apprentissage automatique à utiliser pour la génération d'encastrements. La documentation contient une liste de modèles pré-entraînés. SentenceTransformers étant un cadre très populaire, il existe également des modèles compatibles créés par des chercheurs qui ne sont pas directement associés à ce cadre. Pour voir une liste complète des modèles qui peuvent être utilisés, vous pouvez consulter le tag SentenceTransformers sur HuggingFace.

Pour les besoins de ce tutoriel, il n'est pas nécessaire de trop réfléchir à la sélection du modèle, car n'importe quel modèle suffira. La documentation de SentenceTransformers contient la note suivante concernant les modèles pré-entraînés :

"Les modèles all-* ont été formés sur toutes les données d'apprentissage disponibles (plus d'un milliard de paires d'apprentissage) et sont conçus comme des modèles à usage général. Le modèle tout-mpnet-base-v2 offre la meilleure qualité, tandis que le modèle tout-MiniLM-L6-v2 est 5 fois plus rapide et offre toujours une bonne qualité."

Cela semble indiquer que leur modèle all-MiniLM-L6-v2 est un bon choix qui offre un bon compromis entre la vitesse et la qualité, nous allons donc utiliser ce modèle. Localisez ce modèle dans le tableau et cliquez sur l'icône "info" pour obtenir des informations à son sujet.

Un détail intéressant qu'il convient de connaître à propos du modèle choisi est la longueur des encastrements générés ou, en d'autres termes, le nombre de nombres ou de dimensions que les vecteurs résultants auront. Ce point est important car il a une incidence directe sur le volume de stockage dont vous aurez besoin. Dans le cas de all-MiniLM-L6-v2, les vecteurs générés ont 384 dimensions.

Chargement du modèle

Le code Python suivant montre comment le modèle est chargé. Vous pouvez essayer ceci dans un shell Python.

La première fois que vous effectuez cette opération, le modèle est téléchargé et installé dans votre environnement virtuel, de sorte que l'appel peut mettre un certain temps à revenir. Une fois le modèle installé, son instanciation ne devrait pas prendre beaucoup de temps.

Générer des emboîtements

Le modèle étant instancié, vous êtes maintenant prêt à générer un encastrement. Pour ce faire, transmettez le texte source à la méthode model.encode():

Le résultat est un tableau contenant tous les nombres qui composent l'intégration. Comme vous vous en souvenez, les encastrements générés par le modèle choisi ont 384 dimensions, ce qui correspond à la longueur du tableau embedding.

Prêt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même