paint-brush
Comprendre les vecteurs incorporés pour la recherche basée sur l'IApar@picocreator
2,429 lectures
2,429 lectures

Comprendre les vecteurs incorporés pour la recherche basée sur l'IA

par picocreator7m2023/01/28
Read on Terminal Reader

Trop long; Pour lire

Les intégrations peuvent être utilisées pour la recherche ou d'autres tâches telles que la réponse aux questions, la classification de texte et la génération de texte. Un vecteur d'intégration représente la compréhension résumée du texte par le modèle d'IA. Cela peut être considéré comme un "résumé en N-mots" écrit dans un langage que seule l'IA peut comprendre. Il s'agit d'un saut majeur au-delà des simples recherches par mots-clés des moteurs de recherche classiques.
featured image - Comprendre les vecteurs incorporés pour la recherche basée sur l'IA
picocreator HackerNoon profile picture
0-item
1-item

Et dites adieu à la recherche par mots-clés


Alors que GPT 3+ ou ChatGPT, l'ingénierie rapide est plus facile à comprendre intuitivement. Avec de nombreux guides et exemples disponibles sur le web et les réseaux sociaux. Comme



Les intégrations nécessitent une programmation et sont moins comprises, en raison de divers comportements contre-intuitifs sur la façon dont cela fonctionne. Mais c'est un outil extrêmement puissant pour la recherche, ou à utiliser avec des modèles textuels existants, pour divers autres cas d'utilisation possibles.


Les intégrations sont sans doute un outil tout aussi puissant, au sein de la boîte à outils de l'IA, pour les modèles d'instruction. En raison de sa capacité à gérer les recherches sur différents mots et phrases, voire sur des langues entières. Se concentrer sur la recherche du document pertinent, pour toute requête.


Par exemple, il peut être utilisé pour accélérer la recherche et répondre à partir d'une documentation en anglais. En anglais ...

Demander à notre bot Q&A en anglais

Ou japonais...

En posant la même question en japonais, notez que notre documentation est uniquement en anglais

Ou tout autre langage pris en charge par le modèle d'IA.


L'intégration vectorielle peut être utilisée pour la recherche ou d'autres tâches telles que la réponse aux questions, la classification de texte et la génération de texte.


Notez que cet article se concentre sur l'aspect recherche, le processus de réponse est dans un article de suivi.


Qu'est-ce qu'un plongement vectoriel ?

Pour générer un vecteur d'intégration, on utilisera un modèle d'IA d'intégration, qui convertit n'importe quel texte (un gros document, une phrase ou même un mot) en un "tableau à N dimensions", appelé vecteur.


Par exemple une phrase comme How do I write a UI test script with Uilicious?


Peut être converti en un tableau (appelé vecteur) via le modèle OpenAI text-embedding-ada-002 : [0.010046141, -0.009800113, 0.014761676, -0.022538893, ... an a 1000+ numbers]


Ce vecteur représente la compréhension résumée du texte par le modèle d'IA. Cela peut être considéré comme un "résumé en N-mots" écrit dans un langage que seule l'IA peut comprendre.

Où les documents liés seront à une distance proche les uns des autres, en fonction de la compréhension du document par l'IA (et pas seulement de son texte).


Il s'agit d'un saut majeur au-delà des simples recherches de mots clés des moteurs de recherche classiques, car il peut gérer des variations dans la structure des phrases et la langue (à condition que le modèle d'IA soit formé pour comprendre ladite langue).


Prenons l'exemple suivant comme exemple hypothétique, simplifié de manière inexacte dans un espace à 2 dimensions afin qu'il soit plus facile à comprendre :



Qui peut être visuellement présenté comme suit dans l'espace 2D.


Par exemple, D1,2,3 sont tous des documents liés à l'utilisation d'Uilicious de différentes manières et sont regroupés dans un cluster


D4 et D5, étant simplement des liens et n'ayant aucune valeur inhérente au-delà, sont regroupés séparément dans un autre cluster.


De plus, D1 et D2 sont regroupés, car ils concernent les commandes de test Uilicious, utilisant notre propre langage de test basé sur JavaScript.


Alors que D3 est regroupé séparément, car il concerne l'utilisation directe du protocole de pilote Web sur notre infrastructure, qui est destiné à un cas d'utilisation et à un public différents.


De même, pour Q1 et Q2, malgré les différences drastiques dans la structure des phrases et la langue, parce qu'il s'agit essentiellement de la même question, les deux questions sont regroupées.


De plus, bien que la question puisse techniquement être interprétée dans les deux sens (en utilisant le script de test Uilicious ou le protocole webdriver), parce que la question implique l'utilisation de scripts de test Uilicious sur webdriver, son emplacement est "plus proche" de D1 et D2, et plus éloigné de D3.


Ainsi, malgré d'énormes chevauchements dans les mots-clés, ces nuances dans les groupements sont capturées par l'IA encodée dans les intégrations. Mettre en évidence sa différence distinctive avec la recherche par mot-clé


En réalité, cependant, au lieu d'un tableau à 2 dimensions trop simplifié qui est facile à comprendre pour les humains, une incorporation peut facilement être un tableau à plus de 1 000 dimensions. Ce tableau est unique au modèle d'IA spécifique utilisé et ne peut pas être mélangé avec les incorporations d'un autre modèle d'IA.



Remarques mathématiques : les mathématiques en dimension N ne sont pas compatibles avec les mathématiques 2/3D

Alors que les exemples simplifiés à 2 dimensions sont bons pour comprendre le concept de haut niveau de regroupement par rapport à une question (ou à un point de vue), ils ne représentent pas avec précision une N-dimensions.


En raison des mathématiques compliquées de la dimension N, vous pouvez avoir des situations où A peut être proche de B, B peut être proche de C, mais A et C peuvent être considérés comme éloignés l'un de l'autre. Ce qui est un piège extrêmement contre-intuitif.


De telles distances ne sont utiles que lorsqu'elles sont utilisées par rapport au même point et aux formules utilisées. Qui peut être calculé soit en utilisant


  • Distance euclidienne : également connue sous le nom de théorème de Pythagore sur les stéroïdes, c'est la mesure de distance la plus couramment utilisée et correspond à la distance en ligne droite entre deux points dans la N-sphère.
  • Cosinus Similitude : c'est une mesure de distance angulaire entre deux points dans une N-sphère, et est utile pour mesurer la similarité de documents ou d'autres vecteurs.
  • Manhattan ou Hamming Distance : ces deux métriques sont utilisées pour mesurer les différences entre deux vecteurs, et sont utiles pour mesurer la "distance d'édition" entre deux chaînes.


Alors que l'efficacité de chaque formule a ses avantages et ses inconvénients respectifs, pour différents cas d'utilisation. Pour la recherche textuelle, il est généralement admis que la distance euclidienne "fonctionne mieux" dans la plupart des cas, et "suffisamment bonne" pour les cas où d'autres méthodes se démarquent.


Tout cela, est utilisé en effet pour réduire les N-Dimensions, à une seule dimension (distance), par rapport à un seul point. En conséquence, cela signifierait que les regroupements peuvent / peuvent changer radicalement en fonction de la question posée.


Cette nature de "relativité" des distances rend les index de recherche de bases de données classiques inefficaces.

Si cela n'a aucun sens, c'est ainsi que l'espace à 4 dimensions est visualisé correctement avec les mathématiques N-Spheres.


Imaginez maintenant 1 000 dimensions ? Ouais ça n'a aucun sens.


Donc, sans faire dérailler ce sujet avec un article de doctorat, je résumerai cela en faisant simplement confiance aux professeurs de mathématiques.


Tout ce que nous devons comprendre, c'est qu'en général, plus la distance est proche entre deux points d'intégration de vecteurs, plus il est probable qu'ils soient pertinents l'un pour l'autre.

Du point de vue de la mise en œuvre pratique. Commencez par utiliser la distance euclidienne en premier. Avant d'envisager d'utiliser les autres formules qui sont affinées pour de meilleurs résultats par essais et erreurs pour votre cas d'utilisation (non recommandé).



Recherche de plongements avec une base de données vectorielle

Donc, étant donné que nous pouvons convertir divers documents en incorporations, nous pouvons maintenant les stocker dans une base de données et effectuer une recherche avec celle-ci.


Cependant, contrairement à une recherche de base de données SQL avec du texte, la recherche et les données recherchées constituent le vecteur qui s'incorpore lui-même. Cela signifie que les index de recherche de base de données traditionnels sont inefficaces lorsqu'il s'agit de rechercher des intégrations.


Nous pouvons avoir tous vos incorporations de documents, précalculés et stockés dans une base de données de recherche vectorielle. Qui peut ensuite être utilisé pour fournir une liste de correspondances, classées par la distance la plus proche.


Cela peut être fait en utilisant des bases de données vectorielles existantes telles que

  • REDIS : une base de données open-source populaire qui peut être utilisée pour stocker les vecteurs incorporés et les rechercher efficacement.
  • Annoy : une bibliothèque créée par Spotify qui utilise un algorithme optimisé pour rechercher rapidement les embeddings.
  • FAISS : une bibliothèque créée par Facebook qui fournit des algorithmes de recherche efficaces pour de grands ensembles de données.

Une chose importante à noter, la "technologie de base de données" de recherche vectorielle est relativement nouvelle. Là où une grande majorité des bases de données de recherche de vecteurs ont été conçues pour des cas d'utilisation trouvés dans des entreprises comme Facebook, Spotify ou Google, avec des ensembles d'enregistrements de l'ordre de millions ou de milliards. Et peut ne pas être optimisé pour les petits ensembles de données.


Cela va être un domaine en constante évolution dans les prochaines années, voici une "liste impressionnante" de github pour aider à suivre et à trouver les futures bases de données de recherche de vecteurs


En tant que tel, en général, nous avons constaté que pour de petits ensembles de données de (<10 000 ~ 100 000 incorporations), conserver l'ensemble de données d'intégration en mémoire et forcer brutalement la distance euclidienne au carré est "assez bon" pour de nombreux cas d'utilisation, et surpassera parfois les performances formelles. solutions de base de données (qui auront des frais généraux de disque/réseau) avec quelque chose comme ce qui suit.



L'inconvénient évident de cette approche est que l'ensemble de données doit être suffisamment petit pour tenir dans la mémoire sans surcharge.


Que vous utilisiez la recherche d'intégration locale en mémoire ou une base de données de recherche vectorielle formelle.


C'est ça!


L'intégration de la recherche n'est qu'un algorithme de tri et de classement qui fonctionne de manière flexible avec différentes langues et scénarios. La question pour vous en tant que lecteur est de savoir comment vous pouvez l'utiliser. Il peut être utilisé tel quel comme remplacement éventuel de la recherche Google, ou avec d'autres outils, du chat aux jeux. Les possibilités sont infinies et ouvertes à l'exploration.


~ Jusqu'à la prochaine fois 🖖 vivre longtemps et prospérer

Eugene Cheah @ tech-talk-cto.com


Publié à l'origine sur : https://substack.tech-talk-cto.com/p/introducing-ai-embeddings-and-how

Dream Big, avec ou sans encastrements


Toutes les images utilisées, avec leur attribution appropriée