Freigeben über


AI_GENERATE_CHUNKS (Transact-SQL)

Gilt für: SQL Server 2025 (17.x) Azure SQL DatabaseSQL database in Microsoft Fabric

AI_GENERATE_CHUNKS ist eine Tabellenwertfunktion, die "Blöcke" oder Fragmente von Text basierend auf einem Typ, einer Größe und einem Quellausdruck erstellt.

Kompatibilitätsebene 170

AI_GENERATE_CHUNKS erfordert, dass die Kompatibilitätsstufe mindestens 170 ist. Wenn die Ebene kleiner als 170 ist, kann das Datenbankmodul die AI_GENERATE_CHUNKS Funktion nicht finden.

Informationen zum Ändern der Kompatibilitätsebene einer Datenbank finden Sie unter "Anzeigen" oder "Ändern der Kompatibilitätsebene einer Datenbank".

Syntax

Transact-SQL-Syntaxkonventionen

AI_GENERATE_CHUNKS (source = text_expression
                    , chunk_type = FIXED
                   [ , chunk_size = numeric_expression ]
                   [ , overlap = numeric_expression ]
                   [ , enable_chunk_set_id = numeric_expression ]
)

Argumente

Quelle

Ein Ausdruck eines beliebigen Zeichentyps (z. B . nvarchar, varchar, nchar oder char).

chunk_type

Ein Zeichenfolgenliteral, das den Typ oder die Methode benennt, um den Text/das Dokument zu blöcken und kann nicht oder ein Wert aus einer Spalte sein NULL .

Akzeptierte Werte für diese Version:

  • FIXED

chunk_size

Ist chunk_type dies FIXEDder Fall, legt dieser Parameter die Zeichenanzahl der einzelnen Blöcke fest, die als Variable, ein Literal oder einen skalaren Ausdruck vom Typ "tinyint", "smallint", " int" oder "bigint" angegeben sind. chunk_size darf weder negativ noch null (NULL) sein0. Dieser Parameter ist auch erforderlich , wenn eins chunk_type verwendet FIXEDwird.

Überlappung

Der Überlappungsparameter bestimmt den Prozentsatz des vorhergehenden Texts, der im aktuellen Abschnitt enthalten sein soll. Dieser Prozentsatz wird auf den chunk_size Parameter angewendet, um die Größe in Zeichen zu berechnen. Der Überlappungswert kann als Variable, ein Literal oder ein skalarer Ausdruck vom Typ "tinyint", "smallint", "int" oder "bigint" angegeben werden. Es muss eine ganze Zahl zwischen Null (0) und 50 (einschließlich) sein und darf nicht oder negativ sein NULL . Der Standardwert ist Null (0).

enable_chunk_set_id

Ein Int - oder Bitausdruck , der als Kennzeichnung dient, um die Ausgabespalte zu aktivieren oder zu deaktivieren. Eine Spalte, die chunk_set_id eine Zahl zurückgibt, um zurückgegebene Blöcke zu gruppieren, die derselben Quelle angehören. Ein Wert, der 1 die Spalte aktiviert. Wenn enable_chunk_set_id ausgelassen wird oder NULLeinen Wert aufweist 0, wird die chunk_set_id Spalte deaktiviert und nicht zurückgegeben.

Rückgabetypen

AI_GENERATE_CHUNKS gibt eine Tabelle mit den folgenden Spalten zurück:

Spaltenname Datentyp BESCHREIBUNG
chunk Identisch mit dem Datenquellenausdruck-Datentyp Zurückgegebener Text, der aus dem Quellausdruck geblockt wurde.
chunk_order bigint Eine Abfolge sortierter Zahlen, die sich auf die Reihenfolge beziehen, in der die einzelnen Blöcke beginnend mit 1 und aufsteigend verarbeitet 1wurden.
chunk_offset bigint Position des Abschnitts der Quelldaten/des Dokuments im Verhältnis zum Anfang des Blockierungsprozesses.
chunk_length Int Zeichenlänge des zurückgegebenen Textabschnitts.
chunk_set_id bigint Eine optionale Spalte , die eine ID enthält, die alle Blöcke eines Quellausdrucks, Dokuments oder einer Zeile gruppiert. Wenn mehrere Dokumente oder Zeilen in einer einzelnen Transaktion unterteilt sind, erhalten sie jeweils eine andere chunk_set_id. Die Sichtbarkeit wird durch den enable_chunk_set_id Parameter gesteuert.

Rückgabebeispiel

Hier ist ein Beispiel für die Rückgabeergebnisse AI_GENERATE_CHUNKS mit den folgenden Parametern:

  • Blocktyp von FIXED.

  • Blockgröße von 50 Zeichen.

  • Die Chunk_set_id ist aktiviert.

  • Blocktext: 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.

Block 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

Bemerkungen

AI_GENERATE_CHUNKS kann in einer Tabelle mit mehreren Zeilen verwendet werden. Abhängig von der Blockgröße und der Textmenge, die geblockt wird, gibt das Resultset an, wann eine neue Spalte oder ein neues Dokument mit der chunk_set_id Spalte gestartet wird. Im folgenden Beispiel werden die chunk_set_id Änderungen geändert, wenn der Text der ersten Zeile abläuft und zur zweiten verschoben wird. Die Werte für chunk_order und chunk_offset zurücksetzen, um einen neuen Ausgangspunkt anzugeben.

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

Beispiele

Ein. Abschnitt einer Textspalte mit FESTEM Typ und Größe von 100 Zeichen

Im folgenden Beispiel wird ein Abschnitt einer Textspalte verwendet AI_GENERATE_CHUNKS . Es verwendet eine chunk_type von FIXED und eine chunk_size von 100 Zeichen.

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. Abschnitt einer Textspalte mit Überlappung

Im folgenden Beispiel wird AI_GENERATE_CHUNKS eine Textspalte mithilfe von Überlappungen unterteilt. Es verwendet die chunk_type von FIXED, eine chunk_size von 100 Zeichen und eine Überlappung von 10 Prozent.

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. Verwenden von AI_GENERATE_EMBEDDINGS mit AI_GENERATE_CHUNKS

In diesem Beispiel werden AI_GENERATE_EMBEDDINGSAI_GENERATE_CHUNKS Einbettungen aus Textblöcken erstellt und anschließend die zurückgegebenen Vektorarrays aus dem KI-Modell eingefügt, in die der Endpunkt abgeleitet wird.

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;