Condividi tramite


AI_GENERATE_CHUNKS (Transact-SQL) (anteprima)

Si applica a: Anteprima di SQL Server 2025 (17.x)

Annotazioni

AI_GENERATE_CHUNKS in SQL Server 2025 è attualmente in anteprima.

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 conteggio di caratteri/parole 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).

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 inclusi 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. Il valore 1 abilita la colonna. Se enable_chunk_set_id viene omesso, NULL o ha un valore pari a 0, la chunk_set_id colonna viene disabilitata e non 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 Int Una sequenza di numeri ordinati correlati all'ordine in cui ogni blocco è stato elaborato a partire da 1 e aumentando da 1.
chunk_offset Int 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 Int 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 t
CROSS APPLY
   AI_GENERATE_CHUNKS(source = text_column, chunk_type = FIXED, chunk_size = 100) 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 t
CROSS APPLY
   AI_GENERATE_CHUNKS(source = text_column, chunk_type = FIXED, chunk_size = 100, overlap = 10) 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 t
CROSS APPLY
    AI_GENERATE_CHUNKS(source = t.text_to_chunk, chunk_type = FIXED, chunk_size = 100) c