Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
AI_GENERATE_CHUNKS è una funzione con valori di tabella che crea "blocchi" o frammenti di testo in base a un tipo, alle dimensioni e all'espressione di origine.
Livello di compatibilità 170
AI_GENERATE_CHUNKS richiede che il livello di compatibilità sia almeno 170. Quando il livello è minore di 170, il motore di database non riesce a trovare la AI_GENERATE_CHUNKS funzione.
Per modificare il livello di compatibilità di un database, vedere Visualizzare o modificare il livello di compatibilità di un database.
Sintassi
Convenzioni relative alla sintassi Transact-SQL
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ , chunk_size = numeric_expression ]
[ , overlap = numeric_expression ]
[ , enable_chunk_set_id = numeric_expression ]
)
Argomenti
origine
Espressione di qualsiasi tipo di carattere, ad esempio nvarchar, varchar, nchar o char.
chunk_type
Valore letterale stringa che denomina il tipo o il metodo per suddividere il testo/documento e non può essere NULL o un valore da una colonna.
Valori accettati per questa versione:
FIXED
chunk_size
Quando chunk_type è FIXED, questo parametro imposta le dimensioni del numero di caratteri di ogni blocco specificato come variabile, un valore letterale o un'espressione scalare di tipo tinyint, smallint, int o bigint.
chunk_size non può essere NULL, negativo o zero (0). Questo parametro è necessario anche quando si usa un chunk_type di FIXED.
sovrapposizione
Il parametro di sovrapposizione determina la percentuale del testo precedente che deve essere incluso nel blocco corrente. Questa percentuale viene applicata al chunk_size parametro per calcolare le dimensioni in caratteri. Il valore di sovrapposizione può essere specificato come variabile, un valore letterale o un'espressione scalare di tipo tinyint, smallint, int o bigint. Deve essere un numero intero compreso tra zero (0) e 50, inclusivo e non può essere NULL o negativo. Il valore predefinito è zero (0).
enable_chunk_set_id
Espressione int o bit che funge da flag per abilitare o disabilitare la chunk_set_id colonna di output. Una colonna che restituisce un numero che consente di raggruppare blocchi restituiti appartenenti alla stessa origine. Un valore di 1 abilita la colonna. Se enable_chunk_set_id viene omesso, NULLo ha un valore , 0la chunk_set_id colonna è disabilitata e non viene restituita.
Tipi restituiti
AI_GENERATE_CHUNKS restituisce una tabella con le colonne seguenti:
| Nome della colonna | Tipo di dati | Descrizione |
|---|---|---|
chunk |
Uguale al tipo di dati dell'espressione di origine | Testo restituito in blocchi dall'espressione di origine. |
chunk_order |
bigint | Una sequenza di numeri ordinati correlati all'ordine in cui ogni blocco è stato elaborato a partire da 1 e aumentando da 1. |
chunk_offset |
bigint | Posizione del blocco dei dati o del documento di origine in relazione all'inizio del processo di suddivisione in blocchi. |
chunk_length |
Int | Lunghezza carattere del blocco di testo restituito. |
chunk_set_id |
bigint |
Colonna facoltativa che contiene un ID che raggruppa tutti i blocchi di un'espressione di origine, un documento o una riga. Se più documenti o righe vengono suddivisi in una singola transazione, ognuno ha un valore diverso chunk_set_id. La visibilità è controllata dal enable_chunk_set_id parametro . |
Esempio restituito
Ecco un esempio dei risultati restituiti di AI_GENERATE_CHUNKS con i parametri seguenti:
Tipo di blocco di
FIXED.Dimensione blocco di 50 caratteri.
L'opzione 'chunk_set_id' è abilitata.
Testo blocco:
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.
| blocco | 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 |
Osservazioni:
AI_GENERATE_CHUNKS può essere usato in una tabella con più righe. A seconda delle dimensioni del blocco e della quantità di testo in blocchi, il set di risultati indica quando avvia una nuova colonna o documento con la chunk_set_id colonna. Nell'esempio seguente le chunk_set_id modifiche vengono apportate al termine della suddivisione in blocchi del testo della prima riga e vengono spostate al secondo. I valori per chunk_order e chunk_offset reimpostano anche per indicare un nuovo punto di partenza.
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
| blocco | 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 |
Esempi
Un. Suddividere una colonna di testo con tipo FISSO e dimensioni pari a 100 caratteri
Nell'esempio seguente viene AI_GENERATE_CHUNKS usato per suddividere in blocchi una colonna di testo. Usa un chunk_type valore di FIXED e un chunk_size di 100 caratteri.
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. Suddividere una colonna di testo con sovrapposizione
Nell'esempio seguente viene AI_GENERATE_CHUNKS usato per suddividere in blocchi una colonna di testo usando la sovrapposizione. Usa la chunk_type di FIXED, un chunk_size di 100 caratteri e una sovrapposizione del 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;
C. Usare AI_GENERATE_EMBEDDINGS con AI_GENERATE_CHUNKS
Questo esempio usa AI_GENERATE_EMBEDDINGS con AI_GENERATE_CHUNKS per creare incorporamenti da blocchi di testo e quindi inserisce le matrici vettoriali restituite dall'endpoint di inferenza del modello di intelligenza artificiale in una tabella.
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;