Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Förhandsversion av SQL Server 2025 (17.x)
AI_GENERATE_CHUNKS är en tabellvärdesfunktion som skapar "segment" eller fragment av text baserat på en typ, storlek och ett källuttryck.
Kompatibilitetsnivå 170
AI_GENERATE_CHUNKS kräver att kompatibilitetsnivån är minst 170. När nivån är mindre än 170 kan databasmotorn inte hitta AI_GENERATE_CHUNKS funktionen.
Om du vill ändra kompatibilitetsnivån för en databas läser du Visa eller ändra kompatibilitetsnivån för en databas.
Syntax
Transact-SQL syntaxkonventioner
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ , chunk_size = numeric_expression ]
[ , overlap = numeric_expression ]
[ , enable_chunk_set_id = numeric_expression ]
)
Argumentpunkter
källa
Ett uttryck av valfri teckentyp (till exempel nvarchar, varchar, nchar eller char).
chunk_type
En strängliteral som namnger typen eller metoden för att segmentera texten/dokumentet och får inte vara NULL eller ett värde från en kolumn.
Godkända värden för den här versionen:
FIXED
chunk_size
När chunk_type är FIXEDanger den här parametern teckenantalets storlek för varje segment som anges som en variabel, en literal eller ett skalärt uttryck av typen tinyint, smallint, int eller bigint.
chunk_size får inte vara NULL, negativt eller noll (0). Den här parametern krävs också när du använder en chunk_type av FIXED.
överlappa
Parametern överlappning avgör procentandelen av föregående text som ska ingå i det aktuella segmentet. Den här procentandelen tillämpas på parametern chunk_size för att beräkna storleken i tecken.
Överlappningsvärdet kan anges som en variabel, en literal eller ett skalärt uttryck av typen tinyint, smallint, int eller bigint. Det måste vara ett heltal mellan noll (0) och 50, inklusive och får inte vara NULL eller negativt. Standardvärdet är noll (0).
enable_chunk_set_id
Ett int - eller bituttryck som fungerar som en flagga för att aktivera eller inaktivera utdatakolumnen chunk_set_id . En kolumn som returnerar ett tal som hjälper gruppen att returnera segment som tillhör samma källa. Värdet 1 för aktiverar kolumnen. Om enable_chunk_set_id utelämnas, NULL, eller har värdet 0, chunk_set_id inaktiveras kolumnen och returneras inte.
Returtyper
AI_GENERATE_CHUNKS returnerar en tabell med följande kolumner:
| Kolumnnamn | Datatyp | Beskrivning |
|---|---|---|
chunk |
Samma som källuttrycksdatatyp | Returnerad text som segmenterades från källuttrycket. |
chunk_order |
bigint | En sekvens med ordnade tal som relaterar till den ordning som varje segment bearbetades från och med och ökade 1med 1 . |
chunk_offset |
bigint | Positionen för segmentet för källdata/-dokumentet i förhållande till början av segmenteringsprocessen. |
chunk_length |
Int | Teckenlängd för det returnerade textsegmentet. |
chunk_set_id |
bigint | En valfri kolumn som innehåller ett ID som grupperar alla segment i ett källuttryck, dokument eller rad. Om flera dokument eller rader segmenteras i en enda transaktion får var och en olika chunk_set_id. Synligheten styrs av parametern enable_chunk_set_id . |
Returexempel
Här är ett exempel på returresultatet för AI_GENERATE_CHUNKS med följande parametrar:
Segmenttyp av
FIXED.Segmentstorlek på 50 tecken.
"chunk_set_id" är aktiverat.
Segmenttext:
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.
| segment | 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 |
Anmärkningar
AI_GENERATE_CHUNKS kan användas i en tabell med flera rader. Beroende på segmentstorleken och mängden text som segmenteras anger resultatuppsättningen när en ny kolumn eller ett nytt dokument startas chunk_set_id med kolumnen. I följande exempel chunk_set_id ändras när den är klar med segmenteringen av texten på den första raden och flyttas till den andra. Värdena för och chunk_order återställs också för chunk_offset att indikera en ny startpunkt.
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
| segment | 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 |
Exempel
A. Segmentera en textkolumn med FAST typ och storlek på 100 tecken
I följande exempel används AI_GENERATE_CHUNKS för att segmentera en textkolumn. Den använder en chunk_type av FIXED och en chunk_size av 100 tecken.
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. Segmentera en textkolumn med överlappning
I följande exempel används AI_GENERATE_CHUNKS för att segmentera en textkolumn med överlappning. Den använder chunk_type fixed, en chunk_size på 100 tecken och en överlappning på 10 procent.
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. Använd AI_GENERATE_EMBEDDINGS med AI_GENERATE_CHUNKS
Det här exemplet använder AI_GENERATE_EMBEDDINGS med AI_GENERATE_CHUNKS för att skapa inbäddningar från textsegment och infogar sedan de returnerade vektormatriserna från AI-modellens slutsatsdragningsslutpunkt i en tabell.
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;