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: 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