Le RAG appliqué aux vidéos : l'exemple de Vimeo
Vimeo a intégré à sa plate-forme un chatbot pour répondre à des questions sur les vidéos. Plusieurs aspects du service reposent sur du RAG.
Comment détecter l'identité de locuteurs dans une vidéo sans avoir recours à de la reconnaissance faciale ? Vimeo a dû traiter cet aspect dans le cadre de l'implémentation d'un chatbot.
Ledit chatbot permet aux utilisateurs de poser des questions à propos des vidéos. Fondé sur ChatGPT, il se nourrit, à plusieurs étages, de RAG (retrieval-augmented generation). C'est-à-dire de la récupération de contexte additionnel depuis une base de connaissances.
Cette base, vectorielle, comprend pour le moment exclusivement des éléments liés aux retranscriptions texte des vidéos. Vimeo a l'intention d'y ajouter des informations visuelles, mais le socle initial se prête bien à son focus sur les contenus de type "partage de savoirs" (réunions, cours, présentations, tutos...).
Pour chaque vidéo, la constitution de la base de connaissances se fait sur une approche itérative. Dans les grandes lignes, on élargit progressivement la fenêtre de contexte, à la faveur du regroupement de résultats proches.
Dans un premier temps, on génère des embeddings (représentations vectorielles) à partir de fragments de 100 à 200 mots. On en crée ensuite d'autres à partir de chunks de 500 mots qu'on demande à un LLM de réduire à 100 en se concentrant sur les détails (nombres, dates, noms des locuteurs...). À partir de cette matière, on crée une description de toute la vidéo, centrée sur les sujets les plus importants. L'ensemble est intégré dans la base vectorielle, chaque élément comprenant :
- La représentation textuelle du fragment (texte ou résumé)
- Son embedding
- Un double horodatage (début et fin du chunk + début et fin de chaque mot)
Détecter les locuteurs en 4 prompts
Pour pouvoir détecter les locuteurs sans reconnaissance faciale et en l'absence de métadonnées, Vimeo a cherché à convertir les retranscriptions en dialogues structurés. Première étape : clusteriser l'audio pour associer chaque phrase à un ID de locuteur.
Les transitions de parole apparaissent comme les moments les plus pertinents à analyser dans l'optique d'associer un nom à chaque ID. Vimeo les a donc isolées et a utilisé ChatGPT pour examiner le texte environnant. Avec quatre prompts lui demandant d'identifier :
Lire aussi : Du RAG aux agents, les choix GenAI de Doctolib
- Le nom du locuteur 2 à partir de ce qu'a dit le locuteur 1
- Le nom du locuteur 1 à partir de ce que le locuteur 2 dit juste après
- Si un locuteur se présente
- Le nom d'un locuteur spécifique sur la base de toutes les transitions qui peuvent lui être attribuées
Chaque identification vaut pour un vote. On applique ensuite une fonction décisionnelle qui détermine un niveau de confiance.
Un contexte "augmenté" pour sourcer les passages pertinents
Pour compléter ses réponses, le chatbot peut faire référence à des passages pertinents d'une vidéo. Vimeo a constaté que pour des raisons de performance, il était préférable de séparer ces deux tâches. En tout cas avec ChatGPT 3.5. Un prompt permet donc d'apporter une réponse et un autre, de faire référence aux passages pertinents. Ils s'appuient sur le même contexte, récupéré dans la base vectorielle. Le premier utilise la représentation textuelle ; le second, la version originale de la retranscription.
Pour rendre le deuxième prompt plus efficace, Vimeo vectorise la réponse du chatbot et examine sa similarité avec les éléments récupérés qui formaient le contexte de la question. Il en résulte un nouveau contexte constitué uniquement des éléments suffisamment similaires à la réponse.
Le RAG, aussi pour générer des questions
Pour guider les utilisateurs, le chatbot propose une liste de questions et de réponses générées au préalable - en l'occurrence, pendant le traitement de la retranscription. Sur le modèle de l'étape générant la description de la vidéo, on fournit au LLM tous les fragments résumés et on lui demande d'en extraire des paires question-réponse pertinentes.
Si un utilisateur a déjà posé une question (ou cliqué sur une question prégénérée), on essaye de lui en suggérer des liées. Pour s'assurer qu'elles puissent effectivement trouver réponse, on cadre l'exercice avec, là encore, du RAG. On vectorise d'abord la réponse du chatbot, puis on interroge la base pour récupérer le contexte similaire. Apparaissent ainsi des éléments qui n'étaient pas nécessairement proches de la question.
Illustration générée par IA
Sur le même thème
Voir tous les articles Data & IA