Le Monde Caché des Index (Vectoriels)
Le Monde Caché des Index (Vectoriels) Révélé
Tout ce que vous avez toujours voulu savoir sur les index (vectoriels) mais que vous n’avez jamais osé demander.
Depuis la publication publique de ChatGPT, il ne se passe guère un jour sans qu’un nouveau contenu ne parle des LLM (Modèles de Langue à Large Echelle), des RAG (Génération Améliorée par Recherche) et des bases de données vectorielles. Le monde de la technologie est en effervescence devant les possibilités offertes par les LLM, considérés comme la dernière technologie qui va changer nos vies : pour le meilleur pour certains, pour le pire pour d’autres. Parmi eux, la Génération Améliorée par Recherche (RAG) s’est imposée comme une solution dynamique pour s’adapter au paysage en constante évolution des connaissances. Mais il y a un acteur essentiel dans les coulisses : les index et les bases de données vectorielles.
Alors que les LLM, les RAG et les bases de données vectorielles sont intensivement discutés, les (vectoriels) indexes qui soutiennent ces innovations sont moins connus. Dans cet article, nous démystifierons le concept d’index pour vous aider à comprendre comment un index facilite la recherche d’informations dans de vastes collections.
1. Qu’est-ce qu’un index ?
Nous avons tous connu une telle situation. Vous rendez visite à votre amie chez elle. La seule information qu’elle vous a donnée est “J’habite dans le quartier de Metro Town”. Lorsque vous arrivez dans ledit quartier de Metro Town :
Eh bien, sans aide, il vous faudra un certain temps pour trouver sa maison ! S’il y avait seulement une carte à l’entrée…
- Intelligence Artificielle Générative Un Game Changer pour les Ressources Humaines en 2024
- Considérez les risques avant de vous lancer dans les extensions AI
- Projections de partition AWS Amélioration des performances des requêtes Athena
C’est précisément de cela qu’il s’agit avec les indexes : comment trouver rapidement où se trouvent les personnes (ou les données).
Les pages jaunes sont un index qui vous permet de trouver le domicile des personnes en fonction de leur nom.
Un index est une structure de données conçue pour améliorer la rapidité des opérations de recherche de données. En d’autres termes, c’est la façon dont vous organisez les informations afin de pouvoir trouver rapidement ce que vous cherchez.
Les données sont indexées à l’aide de clés. L’ordre est basé sur les clés et plusieurs clés peuvent être utilisées. Dans les Pages jaunes, la première clé est le nom de famille et la deuxième est le prénom.
L’index ne stocke pas nécessairement l’ensemble des données. Il se concentre uniquement sur les parties critiques utilisées pour localiser rapidement et accéder à des données spécifiques parmi l’ensemble des données.
L’index à la fin du livre en est un bon exemple : il vous montre où trouver des pages en utilisant le mot, il associe donc chaque mot à des numéros de pages et non aux phrases elles-mêmes.
Les indexes sont derrière les moteurs de recherche et les bases de données : ils jouent un rôle crucial dans l’amélioration de l’efficacité et de la rapidité des opérations de recherche de données.
Le choix de l’organisation de vos données est crucial et dépend du contexte.
Par exemple, dans l’exemple des Pages jaunes, si les indexes étaient organisés par numéros de téléphone et que vous ne connaissiez que les noms, il serait assez difficile de trouver leurs adresses !
L’information est là, vous la trouverez finalement, mais le temps nécessaire vous empêchera même d’essayer. En revanche, avec les Pages jaunes, un simple coup d’œil à la page vous permet de savoir exactement si vous devez regarder en arrière ou en avant ! L’ordre lexicographique vous permet d’effectuer une recherche approximative logarithmique. C’est pourquoi le choix de l’index est essentiel.
En général, un index a un but très précis : il peut être conçu pour effectuer des insertions ou des récupérations rapides de données, ou une requête plus exotique comme une requête de plage (“récupérer toutes les données datées entre le 1er mai et le 15 août de cette année”). Le choix de l’opération à optimiser déterminera l’apparence de l’index.
La principale différence entre les bases de données de traitement transactionnel en ligne (OLTP) et les bases de données de traitement analytique en ligne (OLAP) réside dans le choix des opérations à optimiser : l’OLTP se concentre sur les opérations sur les lignes (comme la mise à jour d’une entrée), tandis que l’autre vise les opérations sur les colonnes (comme le calcul d’une moyenne, par exemple). Les deux bases de données n’utiliseront pas les mêmes indexes car elles ne visent pas les mêmes opérations.
1.1 Quelle est la différence entre les indexes et les structures de données ?
💡Une structure de données est une façon d’organiser et de stocker des données dans un ordinateur de manière à pouvoir y accéder et les manipuler efficacement. Expliqué de cette manière, il est parfois difficile de voir la différence entre les indexes et les structures de données, alors quelles sont les différences ? Les indexes se concentrent sur l’insertion, la recherche, le tri ou le filtrage des données. Les structures de données sont plus génériques.
Les indexes sont construits à l’aide de structures de données mais ne stockent généralement pas les données elles-mêmes.
Si vous considérez une base de données de films, vous ne voulez pas déplacer de gros fichiers à chaque fois que l’index est mis à jour : vous stockez un pointeur vers le fichier, pas le fichier lui-même. Un pointeur peut être considéré comme l’adresse du fichier sur le disque.
Maintenant que vous avez une idée générale de ce qu’est un index, concentrons-nous sur des exemples numériques. Voici quelques indexes communs (numériques) :
- Index inversé
- Indexes de hash
- Arbres-B
- Locality-sensitive-Hashing (LSH).
Pour mieux comprendre comment fonctionnent les indexes, explorons l’un des indexes les plus basiques : l’index inversé.
1.2 Index inversé
L’index inversé est un index standard utilisé dans les moteurs de recherche.
Il est conçu pour trouver rapidement où se trouve l’information : il vise à optimiser le temps de récupération.
En un mot, un index inversé fait correspondre les contenus à leurs emplacements, un peu comme l’index d’un livre. Il est souvent utilisé pour faire correspondre une caractéristique aux données qui la possèdent.
Par exemple, supposez que vous voulez savoir qui vit dans le même immeuble.
Tout d’abord, vous devriez avoir une table où, pour chaque nom, vous avez le bâtiment (la table qui vous aurait aidé à trouver Alice) :
Cette table est mise à jour chaque fois qu’une personne arrive ou quitte le quartier.
Si vous voulez savoir qui vit dans le bâtiment B dans cette table, vous devez parcourir toute la table.
Alors que c’est techniquement possible, cela ne sera pas scalable car le temps de calcul augmentera linéairement avec la taille de la table.
Pensez au nombre d’appartements dans le quartier : si vous voulez trouver toutes les personnes qui vivent dans le bâtiment B en vérifiant tous les profils un par un, cela prendra du temps !
Une autre solution est d’utiliser un index inversé : vous maintenez une table où les bâtiments sont utilisés comme clés et connectés aux personnes qui y habitent :
Cette table est maintenue simultanément à la précédente : le coût pour ajouter ou supprimer une personne nouvelle est légèrement plus élevé qu’avant, mais le temps de récupération a presque disparu !
Pour savoir qui vit dans le bâtiment B, il vous suffit d’accéder à la ligne de cette table “Building B” et d’obtenir votre résultat !
Un annuaire inversé est un index inversé de numéros de téléphone !
En pratique, les index inversés sont un peu plus complexes car ils manipulent des données plus complexes que la paire (utilisateur, intérêt). Les indexes sont généralement stockés sous forme de tables de hash.
Malgré leur relative simplicité, les index inversés sont parmi les indexes les plus couramment utilisés dans les moteurs de recherche.
1.3 Indexes et Bases de données
Les bases de données sont construites sur les indexes. Les indexes améliorent la récupération des données dans la base de données en stockant des pointeurs ou des références aux données de la base de données. Ils ne stockent pas les données réelles mais servent de moyen d’y accéder rapidement, améliorant ainsi considérablement les performances des requêtes.
La base de données est plus que l’index car elle constitue un système complet de gestion des données. Elle stocke, organise et gère les données réelles, garantit l’intégrité des données, gère les transactions et propose toute une gamme de fonctionnalités au-delà de l’indexation, ce qui en fait un hub central pour le stockage et la manipulation des données. Bien que les indexes accélèrent la récupération des données dans les bases de données, les bases de données servent d’écosystème complet pour le stockage, la gestion et la récupération des données.
En résumé, les index sont comme des panneaux indicateurs dans une base de données, indiquant le chemin vers les données que vous recherchez. En revanche, les bases de données sont les dépôts où résident réellement les données et sont équipées de divers outils et fonctionnalités pour gérer et manipuler ces données.
En fonction de votre cas d’utilisation, vous n’avez peut-être pas besoin d’une base de données complète mais seulement des index, car la superposition qui gère les données peut être coûteuse.
2. Indexes vectoriels et bases de données vectorielles
2.1 Qu’est-ce qu’un index vectoriel ?
En bref, un index vectoriel est un index où les clés sont des vecteurs.
Dans notre exemple d’index inversé, les clés étaient des mots (loisirs et noms). Dans les index vectoriels, nous manipulons des vecteurs : des séquences de nombres de taille fixe.

Je sais, je sais, je peux vous entendre dire : “Je suis nul en maths, je ne veux pas utiliser de vecteurs”.
Ne vous inquiétez pas, vous n’avez pas besoin d’être bon en maths pour comprendre les index vectoriels.
Tout ce que vous devez savoir, c’est que l’utilisation de vecteurs vous permet de vous appuyer sur des opérations puissantes et optimisées.
La première question que vous pouvez vous poser est : “Qu’est-ce qui est si intéressant dans vos vecteurs” ?
Prenons l’exemple où vous avez enfin trouvé Alice chez elle, et maintenant vous voulez trouver quelque chose à manger. Vous voulez peut-être trouver le restaurant le plus proche. Vous recherchez une liste de restaurants et vous vous retrouvez avec un tableau de restaurants, de spécialités et d’adresses. Regardons les informations que vous pouvez trouver :
Cela ne semble pas utile, n’est-ce pas ? Votre seule option est de parcourir la liste, de lire les adresses une par une et d’évaluer manuellement la proximité avec vous. Nous pourrions essayer d’automatiser le classement du lieu le plus proche, mais le calcul des distances en fonction des adresses brutes est difficile (deux rues peuvent être proches mais avoir des noms différents).
Cependant, imaginez maintenant que vous disposez d’un tableau avec les positions GPS représentant la latitude et la longitude exactes de chaque restaurant :
Chaque position est un vecteur de taille 2. Avec ces vecteurs, vous pouvez facilement calculer la distance jusqu’à votre propre position avec une opération mathématique simple et rapide. Ensuite, vous pouvez rapidement récupérer les plus proches, en d’autres termes, ceux ayant la plus petite distance par rapport à vous !
Maintenant, vous pouvez facilement trouver le restaurant le plus proche de vous !
Le point intéressant est que, en indexant directement le tableau par le vecteur (la position GPS dans cet exemple), nous pouvons optimiser l’index de manière à ce que la recherche des entrées avec la plus faible distance soit extrêmement rapide.
Les index vectoriels sont des index spécialisés conçus pour récupérer efficacement des vecteurs qui sont les plus proches ou les plus similaires à un vecteur donné. Ces index reposent sur des opérations mathématiques optimisées pour identifier efficacement les vecteurs les plus similaires.
Dans notre exemple, la distance utilisée était la distance classique, mais il existe des index pour toutes les distances ou similarités existantes, comme la similarité cosinus.
Le hachage sensible à la localité (LSH) est l’un des index les plus largement utilisés pour trouver les k points de données les plus similaires dans un ensemble de données, et il fonctionne avec différentes distances ou similarités.
“C’est bien, mais je n’utilise pas de vecteurs dans ma base de données”.
C’est la partie excitante: vous pouvez transformer n’importe quoi en vecteur.
Prendre simplement la représentation binaire serait inefficace car cela peut contenir du bruit, il est donc essentiel de trouver une représentation qui préserve les caractéristiques des données.
Représenter différentes informations sous forme de vecteur pour utiliser des index vectoriels est devenu une méthode standard pour améliorer l’efficacité d’un système. La vectorisation est devenue un art.
Par exemple, si vous disposez d’un ensemble de données d’images et que vous souhaitez une base de données où vous pouvez trouver les images les plus similaires à une image donnée, vous pouvez utiliser le descripteur SIFT des images.
2.2 Quelle est la différence entre les index vectoriels et les bases de données vectorielles ?
La différence entre les index vectoriels et les bases de données vectorielles est la même que celle entre les index et les bases de données : les index sont destinés à trouver rapidement où se trouvent les données, tandis que les bases de données vectorielles utilisent des index vectoriels pour effectuer rapidement les requêtes de récupération, mais elles stockent également et gèrent les données tout en fournissant des opérations et des propriétés supplémentaires.
3. Quel est le lien entre LLMs et RAGs ?
Maintenant que vous en avez appris davantage sur les index vectoriels, vous vous demandez peut-être pourquoi tant de discussions sur les LLMs et les RAGs ont également abordé les index vectoriels. Pour comprendre pourquoi, expliquons d’abord rapidement ce qu’est la génération augmentée de récupération, ou RAG. AG sert de solution astucieuse à l’une des limitations inhérentes des LLMs, à savoir leurs connaissances limitées.
Les LLMs ne sont conscients que des données sur lesquelles ils ont été formés. Une technique pour augmenter leurs connaissances est l’ingénierie des prompts, où des données supplémentaires sont intégrées dans le prompt de la requête : “Étant donné ces données {données}, répondez à cette question : {question}”.
Bien que cette approche soit efficace, elle fait face à un nouveau défi : l’évolutivité. Non seulement la taille du prompt est limitée, mais plus vous incluez de données, plus la requête devient coûteuse.
Pour surmonter cela, la génération augmentée de récupération limite la quantité de données en n’insérant que les données les plus similaires, c’est là que les index vectoriels entrent en jeu !
Voici comment cela fonctionne : tous les documents sont transformés initialement en vecteurs à l’aide des LLMs (1). Pour être plus précis, la partie encodeur des LLMs est utilisée.
Ces vecteurs sont utilisés comme clés pour indexer les documents dans un index vectoriel (2).
Lors d’une requête, la requête est vectorisée en utilisant les LLMs (3). Le vecteur résultant est ensuite interrogé dans l’index vectoriel pour récupérer les documents les plus similaires (4). Ces documents sont ensuite utilisés pour répondre à la requête à l’aide de l’ingénierie des prompts (5).
C’est tout !
Comme vous pouvez le constater, de la même manière que les LLMs, l’index vectoriel occupe une place centrale dans les RAGs.
Certaines personnes préfèrent utiliser une base de données vectorielle au lieu d’un index vectoriel. C’est une option lorsque vous voulez réutiliser les mêmes données dans plusieurs applications. Cependant, si votre préoccupation principale est l’efficacité de la récupération ou la flexibilité dans la définition de l’index pour chaque application, un seul index vectoriel est souvent plus simple et plus rapide à déployer.
Conclusion
Félicitations aux courageux qui ont lu jusqu’ici ! Je pense que vous disposez maintenant de toutes les connaissances nécessaires pour participer à ces discussions passionnantes sur les LLMs et les RAGs.
Les indexes jouent un rôle central dans la récupération de données. Comme la récupération de données est susceptible de rester un composant clé des technologies de données, il est primordial de comprendre ce que sont les indexes, y compris les indexes vectoriels.
Si vous souhaitez en savoir plus sur des indexes plus avancés, je vous suggère de lire mon article sur le LSH. Si vous souhaitez apprendre quelque chose de plus pratique et que vous êtes curieux de découvrir la génération augmentée de récupération en temps réel (RAG) en action, envisagez d’explorer l’application LLM, où vous pouvez découvrir directement la puissance de ces technologies.
We will continue to update IPGirl; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- L’Ascension et la Chute de Prompt Engineering Mode éphémère ou Avenir ?
- Une meilleure façon d’évaluer les LLM
- Les principaux articles importants de LLM pour la semaine du 06/11 au 12/11
- Créez vos propres GPT avec les GPT de ChatGPT!
- Cette recherche en intelligence artificielle d’Adobe propose un modèle de reconstruction (LRM) à grande échelle qui prédit le modèle 3D d’un objet à partir d’une seule image en moins de 5 secondes.
- Les modèles corporels 3D ont maintenant du son Meta AI présente un modèle d’intelligence artificielle capable de générer un son spatial 3D précis pour l’ensemble du corps humain.
- Google AI propose E3-TTS, une solution simple et efficace de texte à speech basée sur la diffusion