Tutoriel : Comment nous avons construit un système de recherche vidéo inversée directement dans PostgreSQL

DEV - 14/01
Table des matières TL;DR Prérequis Comment le système vidéo inversé...

Table des matières

  1. TL;DR
  2. Conditions préalables
  3. Comment fonctionne le système de vidéo inversée
  4. Mise en œuvre
  5. Conclusion

TL;DR

Apprenez à créer un système de recherche vidéo inversée à l'aide de Mixpeek pour le traitement vidéo et la génération d'intégration, combiné à PostgreSQL en tant que base de données vectorielle (alimentée par pgvector et pgvectorscale) hébergée sur Timescale Cloud.

Avec ce système, vous pouvez interroger des données vidéo à l'aide de requêtes vidéo et textuelles pour récupérer des segments vidéo pertinents en fonction de la similarité sémantique.

Conditions préalables

  • Base de données PostgreSQL (nous utilisons Timescale Cloud)
  • Python3.7+
  • Compréhension de base des intégrations vectorielles
  • Clé API Mixpeek (inscrivez-vous sur mixpeek.com)

Comment fonctionne le système de vidéo inversée

Avant d'entrer dans les détails de la mise en œuvre, passons en revue l'architecture du système.

Architecture du système de recherche vidéo inversée

Processus d'ingestion vidéo

Le processus d'ingestion consiste à saisir les données vidéo sources dans une base de données vectorielle. Voici comment cela fonctionne :

  • Vidéo source : le processus commence par le téléchargement d'une vidéo source.
  • Morceaux vidéo : la vidéo est divisée en morceaux pour une création d'intégration optimisée à l'aide de l'outil d'indexation vidéo de Mixpeek.
  • Incorporations : l'outil d'indexation de Mixpeek extrait les fonctionnalités vidéo de chaque morceau vidéo pour générer des intégrations vectorielles à l'aide de l'un des modèles d'intégration qui y sont intégrés.
  • Base de données vectorielles : les intégrations vectorielles générées sont stockées dans une base de données qui prend en charge la recherche de similarité vectorielle : dans ce cas, PostgreSQL avec pgvector et pgvectorscale et hébergées sur Timescale Cloud. Cette base de données gère non seulement les recherches de similarité vectorielle, mais vous permet également de stocker des métadonnées, telles que les heures de début et de fin, ainsi que leurs intégrations.

Processus de récupération vidéo

  • Requête : l'utilisateur soumet une requête textuelle ou vidéo.
  • Embeddings de requêtes : Mixpeek convertit la requête en incorporations pour capturer sa signification sémantique.
  • Recherche de vecteurs : ces plongements sont ensuite comparés aux plongements stockés dans la base de données de vecteurs pour récupérer les correspondances les plus proches à l'aide de la recherche de similarité vectorielle.

Les piles technologiques Timescale et Mixpeek se complètent. Mixpeek génère les intégrations vectorielles, tandis que la base de données PostgreSQL de Timescale, optimisée par pgvector et pgvectorscale, assure un stockage, une gestion et une récupération optimisés des données vidéo et de leurs intégrations.

Mise en œuvre

Ce tutoriel est divisé en plusieurs sections. Vous pouvez également suivre ce cahier.

Importations et configuration

Configuration des variables d'environnement

Dans cette section, nous créons d'abord un.envfichier pour stocker nos variables d’environnement. Commençons par ces variables :

  • Obtenir unhttps://docs.mixpeek.com/overview/introductiondepuis votre compte Mixpeek. Si vous n'avez pas encore de compte, vous pouvez en créer un via cette page.
  • Ensuite, créez un service PostgreSQL pour vos données et intégrations en vous inscrivant à Timescale Cloud (c'est gratuit pendant 30 jours). Suivez les instructions de configuration dans le guide Mise en route avec Timescale.

Après avoir créé votre service de base de données, récupérez la chaîne de connexion fournie dans le tableau de bord.

Tableau de bord de connexion à la base de données dans l'interface utilisateur de Timescale

Stockez ces variables dans le.e...
[Courte citation de 8% de l'article original]

Loading...