Partager via


AI_GENERATE_CHUNKS (Transact-SQL)

S’applique à : SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans 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.

Note

AI_GENERATE_CHUNKSest disponible dans Azure SQL Managed Instance avec la stratégie de mise à jourSQL Server 2025 ou Always-up-to-date.

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 = text_expression

Expression de n’importe quel type de caractère (par exemple, nvarchar, varchar, nchar ou char).

CHUNK_TYPE = RÉSOLU

Littéral de chaîne nommant le type ou la méthode pour segmenter le texte/document. Cette valeur ne peut pas être NULL ou une valeur d’une colonne.

Les valeurs acceptées sont les suivantes :

  • FIXED

CHUNK_SIZE = numeric_expression

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 requis lors de l’utilisation d’un CHUNK_TYPE objet FIXED.

CHEVAUCHEMENT = numeric_expression

Le OVERLAP paramètre 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 OVERLAP valeur 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 = numeric_expression

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 elle est omise, 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 , CHUNK_TYPEFIXEDun CHUNK_SIZE nombre 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;