Article
· Déc 26, 2024 3m de lecture

Rechercher les limites du nouveau type de données VECTOR

Traduit du concours d'articles de la communauté espagnole.

Suite au dernier concours de programmation sur OEX j'ai eu une observation surprenante.
Il existait des applications presque exclusives basées sur l'IA en combinaison avec des modules Py précuits.
Mais en creusant plus profondément, tous les exemples utilisaient les mêmes éléments techniques d'IRIS.

Du point de vue d'IRIS, c'était à peu près la même chose que la recherche de texte
ou la recherche d'images ou d'autres motifs.  Cela s'est terminé par des méthodes presque échangeables.

Cela me rappelle ma situation privée à la maison. Ma femme et ma fille entretiennent
(selon moi) une incroyable collection de jupes, de chemises et de tous les autres vêtements. Mais à la fin
du jour c'est ma femme et ma fille avec qui je parle et avec qui je vis - 
peu importe l'enveloppement appliqué.

Retour au concours :
Beaucoup de présentations sophistiquées pour plus ou moins le même contenu technique IRIS.
Tout le monde courait sur la même autoroute. Personne n’a jamais touché aucune limite.

J'ai donc essayé de creuser plus profondément et de trouver les limites du type de données VECTOR.
Tous les vecteurs ont 2 paramètres de base
- TYPE DE DONNÉES statique : "entier" (ou "int"), "double", "décimal", "chaîne" et "horodatage".
- LEN (longueur) semi-dynamique : > 0 souvent également appelé POSITION ; un entier pur.

Ce paramètre LEN/POSITION est l'équivalent de ce que vous appelez les dimensions mathématiques d'un vecteur.
Bien sûr, dans l'univers d'Einstein, vous n'aurez peut-être besoin que de 4 dimensions ou moins
basé sur sa théorie de la relativité.
Même la théorie cosmologique des cordes apparue dans les années 60 ne dépasse pas les 11..12 dimensions.
Mais tous les jolis packages de solutions d'analyse de texte pré-préparés utilisent 238, 364, >1200, ....
dimensions et probablement plus.

Alors : Quelle est la limite fixée par IRIS aux positions possibles ?
La documentation officielle n'a pas de réponse.
Alors j'ai pris la fenêtre de mon terminal et j'ai essayé

for i=1:1 set $vector(test,i,"int")=i
;; very fast
<VECTOR>
zwrite i
i=65537

J'ai essayé avec tous les types de données : la limite est 65536

OK. La longueur des types numériques * 65536 est claire sous la limite magique <MAXSTRING> supérieure à 3 Mo.

MAIS: Que se passe-t-il avec le type "string" si sa taille a une dimension significative ?

Le résultat impressionnant : 
J'ai réussi avec 65536 positions et un STRING de 3.600.000 octets
La test_string fait quelques Ko sous <MAXSTRING>
Cependant!  Cela représente 225 000 Mo au total dans un seul VECTEUR !
Je n'arrive pas à imaginer comment cela pourrait être fait.

Sans aucun doute, gérer ce géant inhabituel prend du temps et il faut attendre suffisamment longtemps pour y accéder.
Mais cela démontre que DataType VECTOR est capable de répondre à toutes les exigences pratiques.
sans être limité par la conception.

Je vous souhaite beaucoup de succès dans votre travail avec les VECTOR.

Discussion (1)1
Connectez-vous ou inscrivez-vous pour continuer