Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
AI_GENERATE_CHUNKS est une fonction table qui crée des « blocs » ou des fragments de texte basés sur un type, une taille et une expression source.
Niveau de compatibilité 170
AI_GENERATE_CHUNKS nécessite que le niveau de compatibilité soit au moins 170. Lorsque le niveau est inférieur à 170, le moteur de base de données ne peut pas trouver la AI_GENERATE_CHUNKS fonction.
Pour modifier le niveau de compatibilité d’une base de données, reportez-vous à Afficher ou modifier le niveau de compatibilité d’une base de données.
Syntaxe
Conventions de la syntaxe Transact-SQL
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ , chunk_size = numeric_expression ]
[ , overlap = numeric_expression ]
[ , enable_chunk_set_id = numeric_expression ]
)
Les arguments
source
Expression de n’importe quel type de caractère (par exemple, nvarchar, varchar, nchar ou char).
chunk_type
Littéral de chaîne nommant le type ou la méthode pour segmenter le texte/document et ne peut pas être NULL ou une valeur d’une colonne.
Valeurs acceptées pour cette version :
FIXED
chunk_size
Quand chunk_type c’est FIXEDle cas, ce paramètre définit la taille du nombre de caractères de chaque bloc spécifié sous la forme d’une variable, d’un littéral ou d’une expression scalaire de type tinyint, smallint, int ou bigint.
chunk_size ne peut pas être NULL, négatif ou zéro (0). Ce paramètre est également requis lors de l’utilisation d’un chunk_type objet FIXED.
chevauchement
Le paramètre de chevauchement détermine le pourcentage du texte précédent qui doit être inclus dans le bloc actuel. Ce pourcentage est appliqué au chunk_size paramètre pour calculer la taille en caractères. La valeur de chevauchement peut être spécifiée sous la forme d’une variable, d’un littéral ou d’une expression scalaire de type tinyint, smallint, int ou bigint. Il doit s’agir d’un nombre entier compris entre zéro (0) et 50, inclus et ne peut pas être NULL ou négatif. La valeur par défaut est zéro (0).
enable_chunk_set_id
Expression int ou bit qui sert d’indicateur pour activer ou désactiver la chunk_set_id colonne de sortie ; colonne qui retourne un nombre pour aider le groupe à retourner des blocs appartenant au même source. Valeur d’activation de 1 la colonne. Si enable_chunk_set_id est omis, NULLou a une valeur de 0, la chunk_set_id colonne est désactivée et n’est pas retournée.
Types de retour
AI_GENERATE_CHUNKS retourne une table avec les colonnes suivantes :
| Nom de colonne | Type de données | Descriptif |
|---|---|---|
chunk |
Identique au type de données d’expression source | Texte retourné qui a été segmenté à partir de l’expression source. |
chunk_order |
bigint | Séquence de nombres ordonnés qui concerne l’ordre de chaque bloc a été traitée à partir 1 de et d’augmentation par 1. |
chunk_offset |
bigint | Position du segment des données/documents sources par rapport au début du processus de segmentation. |
chunk_length |
Int | Longueur de caractère du bloc de texte retourné. |
chunk_set_id |
bigint | Colonne facultative qui contient un ID qui regroupe tous les blocs d’une expression source, d’un document ou d’une ligne. Si plusieurs documents ou lignes sont segmentés dans une seule transaction, ils reçoivent chacun une valeur différente chunk_set_id. La visibilité est contrôlée par le enable_chunk_set_id paramètre. |
Exemple de retour
Voici un exemple des résultats de retour avec AI_GENERATE_CHUNKS les paramètres suivants :
Type de bloc de
FIXED.Taille de bloc de 50 caractères.
L’option « chunk_set_id » est activée.
Texte de bloc :
All day long we seemed to dawdle through a country which was full of beauty of every kind. Sometimes we saw little towns or castles on the top of steep hills such as we see in old missals; sometimes we ran by rivers and streams which seemed from the wide stony margin on each side of them to be subject to great floods.
| morceau | chunk_order | chunk_offset | chunk_length | chunk_set_id |
|---|---|---|---|---|
All day long we seemed to dawdle through a country |
1 | 1 | 50 | 1 |
which was full of beauty of every kind. Sometimes |
2 | 51 | 50 | 1 |
we saw little towns or castles on the top of stee |
3 | 101 | 50 | 1 |
p hills such as we see in old missals; sometimes w |
4 | 151 | 50 | 1 |
e ran by rivers and streams which seemed from the |
5 | 201 | 50 | 1 |
wide stony margin on each side of them to be subje |
6 | 251 | 50 | 1 |
ct to great floods. |
7 | 301 | 19 | 1 |
Remarques
AI_GENERATE_CHUNKS peut être utilisé sur une table avec plusieurs lignes. En fonction de la taille du bloc et de la quantité de texte en cours de segmentation, le jeu de résultats indique quand il démarre une nouvelle colonne ou un document avec la chunk_set_id colonne. Dans l’exemple suivant, les chunk_set_id modifications sont apportées lorsqu’elles terminent la segmentation du texte de la première ligne et se déplacent vers la seconde. Valeurs pour chunk_order et chunk_offset réinitialisation pour indiquer un nouveau point de départ.
CREATE TABLE textchunk (text_id INT IDENTITY(1,1) PRIMARY KEY, text_to_chunk nvarchar(max));
GO
INSERT INTO textchunk (text_to_chunk)
VALUES
('All day long we seemed to dawdle through a country which was full of beauty of every kind. Sometimes we saw little towns or castles on the top of steep hills such as we see in old missals; sometimes we ran by rivers and streams which seemed from the wide stony margin on each side of them to be subject to great floods.'),
('My Friend, Welcome to the Carpathians. I am anxiously expecting you. Sleep well to-night. At three to-morrow the diligence will start for Bukovina; a place on it is kept for you. At the Borgo Pass my carriage will await you and will bring you to me. I trust that your journey from London has been a happy one, and that you will enjoy your stay in my beautiful land. Your friend, DRACULA')
GO
SELECT c.*
FROM textchunk t
CROSS APPLY
AI_GENERATE_CHUNKS(source = text_to_chunk, chunk_type = FIXED, chunk_size = 50, enable_chunk_set_id = 1) c
| morceau | chunk_order | chunk_offset | chunk_length | chunk_set_id |
|---|---|---|---|---|
All day long we seemed to dawdle through a country |
1 | 1 | 50 | 1 |
which was full of beauty of every kind. Sometimes |
2 | 51 | 50 | 1 |
we saw little towns or castles on the top of stee |
3 | 101 | 50 | 1 |
p hills such as we see in old missals; sometimes w |
4 | 151 | 50 | 1 |
e ran by rivers and streams which seemed from the |
5 | 201 | 50 | 1 |
wide stony margin on each side of them to be subje |
6 | 251 | 50 | 1 |
ct to great floods. |
7 | 301 | 19 | 1 |
My Friend, Welcome to the Carpathians. I am anxi |
1 | 1 | 50 | 2 |
ously expecting you. Sleep well to-night. At three |
2 | 51 | 50 | 2 |
to-morrow the diligence will start for Bukovina; |
3 | 101 | 50 | 2 |
a place on it is kept for you. At the Borgo Pass m |
4 | 151 | 50 | 2 |
y carriage will await you and will bring you to me |
5 | 201 | 50 | 2 |
. I trust that your journey from London has been a |
6 | 251 | 50 | 2 |
happy one, and that you will enjoy your stay in m |
7 | 301 | 50 | 2 |
y beautiful land. Your friend, DRACULA |
8 | 351 | 38 | 2 |
Exemples
Un. Segmenter une colonne de texte avec un type fixe et une taille de 100 caractères
L’exemple suivant utilise AI_GENERATE_CHUNKS pour segmenter une colonne de texte. Il utilise une chunk_type valeur de FIXED 100 caractères et une chunk_size valeur de 100 caractères.
SELECT c.chunk
FROM docs_table AS t
CROSS APPLY
AI_GENERATE_CHUNKS (SOURCE = text_column, CHUNK_TYPE = FIXED, CHUNK_SIZE = 100) AS c;
B. Segmenter une colonne de texte avec chevauchement
L’exemple suivant utilise AI_GENERATE_CHUNKS pour segmenter une colonne de texte à l’aide du chevauchement. Il utilise la chunk_type de FIXED, une chunk_size de 100 caractères et un chevauchement de 10 %.
SELECT c.chunk
FROM docs_table AS t
CROSS APPLY
AI_GENERATE_CHUNKS (SOURCE = text_column, CHUNK_TYPE = FIXED, CHUNK_SIZE = 100, OVERLAP = 10) AS c;
Chapitre C. Utiliser AI_GENERATE_EMBEDDINGS avec AI_GENERATE_CHUNKS
Cet exemple utilise AI_GENERATE_EMBEDDINGS pour AI_GENERATE_CHUNKS créer des incorporations à partir de blocs de texte, puis insère les tableaux de vecteurs retournés à partir du point de terminaison d’inférence du modèle IA dans une table.
INSERT INTO my_embeddings (chunked_text, vector_embeddings)
SELECT c.chunk,
AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyAzureOpenAIModel)
FROM table_with_text AS t
CROSS APPLY
AI_GENERATE_CHUNKS (SOURCE = t.text_to_chunk, CHUNK_TYPE = FIXED, CHUNK_SIZE = 100) AS c;