Concevoir des intégrations pour les charges de travail de base de données SQL
Les incorporations représentent des données sous forme de vecteurs afin que la similarité entre les parties de texte puisse être comparée. La façon dont vous concevez des incorporations affecte la pertinence, les performances et le coût quand des vecteurs sont générés et interrogés ultérieurement.
SQL Server fournit des fonctions IA intégrées qui prennent en charge l’incorporation de flux de travail. Les modèles de recherche vectorielle courants permettent de guider la préparation du texte avant la génération d’incorporations.
Comprendre comment les vecteurs sont créés
Mais que signifie le terme vecteur dans le contexte de l'intégration de l'IA avec une base de données SQL ?
Un modèle IA crée un vecteur, et non SQL lui-même. Le modèle a été entraîné pour lire du texte et retourner une liste de nombres qui représente la signification de ce texte.
Lorsque SQL envoie du texte à un modèle d’incorporation, le modèle retourne un vecteur, que SQL stocke pour une comparaison ultérieure avec d’autres vecteurs.
Par exemple, lorsque le texte « sac à dos de randonnée léger » est envoyé à un modèle incorporé, le modèle peut retourner :
[0.12, -0.87, 0.45, 0.31, …]
Une phrase connexe telle que « sac à dos compact pour les randonnées de jour » produirait une liste différente de nombres qui ressemblent :
[0.10, -0.85, 0.47, 0.29, …]
Étant donné que les vecteurs ressemblent, SQL peut traiter les deux parties de texte comme connexes, même si la formulation est différente.
Identifier les données à inclure dans les incorporations
Les incorporations fonctionnent mieux lorsqu’elles représentent du texte qui porte une signification sémantique, telle que des descriptions, des titres ou d’autres champs de texte de forme libre.
Les colonnes qui stockent des identificateurs, des valeurs numériques ou des métadonnées opérationnelles n’ajoutent généralement pas de valeur sémantique et doivent être exclues. La limitation des incorporations à du texte significatif réduit l’utilisation des jetons et améliore les résultats de similarité.
Les choix de conception à ce stade déterminent les informations capturées par les incorporations et la façon dont elles représentent les données sous-jacentes.
Contrôler la taille et la structure d’entrée
Les modèles incorporés fonctionnent sur l’entrée par jeton et imposent des limites sur la quantité de texte pouvant être traitée dans une seule requête. Un jeton est un petit morceau de texte, tel qu’un mot ou une partie d’un mot, que le modèle traite en tant qu’unité. Les valeurs de texte longues nécessitent souvent une division en unités plus petites.
SQL Server prend en charge ce modèle via des fonctions IA intégrées qui aident à préparer du texte pour l’incorporation de flux de travail. En contrôlant la taille d’entrée, vous pouvez conserver du texte dans les limites du modèle et vous assurer que chaque incorporation représente un élément de contenu clair et ciblé.
Une entrée bien structurée permet également d’éviter d’incorporer des idées non liées ensemble, ce qui peut réduire la qualité des résultats de similarité.
Concevoir des stratégies de segmentation
La segmentation définit la façon dont les valeurs de texte plus volumineuses sont divisées en segments plus petits. Une stratégie de segmentation équilibre le contexte et la précision.
Les blocs trop volumineux peuvent dépasser les limites de taille ou diluer la concentration sémantique. Les blocs trop petits peuvent perdre un contexte important. L’objectif consiste à préserver le sens tout en maintenant des segments efficaces à traiter.
Dans la pratique, la segmentation est définie par les règles que vous appliquez lors du fractionnement de texte dans SQL. Ces règles contrôlent généralement la quantité de texte dans chaque bloc, par exemple un nombre maximal de caractères et l’endroit où les fractionnements sont autorisés à se produire.
AI_GENERATE_CHUNKS(SOURCE = description, CHUNK_TYPE = FIXED, CHUNK_SIZE = 500)
En définissant des règles de segmentation directement dans SQL, près des tables sources, vous pouvez modifier la taille de bloc ou le comportement de fractionnement en ajustant la requête au lieu de modifier le code de l’application.
Appliquer la conception d’incorporation avec SQL
L’exemple suivant montre un modèle conceptuel qui prépare le texte pour la génération incorporée en le fractionnant en unités plus petites.
SELECT
id,
c.chunk
FROM dbo.documents
CROSS APPLY
AI_GENERATE_CHUNKS(SOURCE = description, CHUNK_TYPE = FIXED, CHUNK_SIZE = 500) AS c;
Dans cet exemple, le texte de la description colonne est divisé en blocs allant jusqu’à 500 caractères. Chaque bloc peut être transmis ultérieurement à une fonction d’incorporation, ce qui garantit que les incorporations représentent des parties prioritaires du contenu d’origine.
Par exemple, si une ligne contient le texte suivant dans la description colonne :
"Lightweight backpack designed for long day hikes in warm weather."
La fonction de segmentation peut produire plusieurs blocs tels que :
"Lightweight backpack designed for long day hikes""in warm weather."
Chaque bloc est retourné sous la forme d’une ligne distincte par la requête. Ces petits éléments peuvent ensuite être transmis individuellement à une fonction d’incorporation afin que chaque incorporation représente une partie ciblée du texte d’origine.
Conseil / Astuce
Un modèle de conception consiste à stocker des vecteurs dans une table distincte des données de texte source. Une table d’incorporations dédiée facilite le suivi de l'espace consommé par les vecteurs et la reconstruction des incorporations sans affecter les données d'origine.
Points clés à prendre
La qualité de l’incorporation dépend des décisions que vous prenez avant l’exécution d’un modèle. Choisir les colonnes appropriées et segmenter du texte long en segments ciblés avec AI_GENERATE_CHUNKS déterminer l’utilité de vos résultats de recherche vectorielle. Faire ces choix de conception dès le début permet d'éviter des modifications coûteuses lorsque vous passez à l'intégration de la génération et du stockage.