Sdílet prostřednictvím


AI_GENERATE_CHUNKS (Transact-SQL)

Platí na: SQL Server 2025 (17.x) Azure SQL DatabaseSQL database in Microsoft Fabric

AI_GENERATE_CHUNKS je funkce s hodnotou tabulky, která vytváří "bloky" nebo fragmenty textu na základě typu, velikosti a zdrojového výrazu.

Úroveň kompatibility 170

AI_GENERATE_CHUNKS vyžaduje úroveň kompatibility minimálně 170. Pokud je úroveň menší než 170, databázový stroj nemůže najít AI_GENERATE_CHUNKS funkci.

Pokud chcete změnit úroveň kompatibility databáze, přečtěte si článek Zobrazení nebo změna úrovně kompatibility databáze.

Syntaxe

Transact-SQL konvence syntaxe

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

Argumenty

zdroj

Výraz libovolného typu znaku (například nvarchar, varchar, nchar nebo char).

chunk_type

Řetězcový literál pojmenování typu nebo metody pro vytvoření bloku textu nebo dokumentu a nemůže být NULL nebo hodnota ze sloupce.

Přijaté hodnoty pro tuto verzi:

  • FIXED

chunk_size

Pokud chunk_type je tento FIXEDparametr, nastaví velikost počtu znaků každého bloku určeného jako proměnná, literál nebo skalární výraz typu tinyint, smallint, int nebo bigint. chunk_size nemůže být NULL, záporná ani nula (0). Tento parametr je také vyžadován při použití parametru chunk_typeFIXED.

překrytí

Parametr překrytí určuje procento předchozího textu, které by mělo být zahrnuto v aktuálním bloku dat. Toto procento se použije u parametru chunk_size k výpočtu velikosti znaků. Hodnotu překrytí je možné zadat jako proměnnou, literál nebo skalární výraz typu tinyint, smallint, int nebo bigint. Musí to být celé číslo mezi nulou (0) a 50 včetně a nesmí být NULL ani záporné. Výchozí hodnota je nula (0).

enable_chunk_set_id

Int nebo bitový výraz, který slouží jako příznak pro povolení nebo zakázání výstupního chunk_set_id sloupce; sloupec, který vrací číslo, které pomáhá seskupit vrácené bloky dat patřící do stejného zdroje. Hodnota 1 povolí sloupec. Pokud enable_chunk_set_id vynecháte nebo NULLmá hodnotu 0, chunk_set_id sloupec je zakázaný a nevrácený.

Návratové typy

AI_GENERATE_CHUNKS vrátí tabulku s následujícími sloupci:

Název sloupce Datový typ Popis
chunk Stejný jako datový typ zdrojového výrazu Vrátil text, který byl blokován ze zdrojového výrazu.
chunk_order bigint Posloupnost seřazených čísel, která se vztahují k pořadí, které se jednotlivé bloky dat zpracovávají, počínaje 1 a se zvyšující o 1.
chunk_offset bigint Umístění bloku zdrojových dat nebo dokumentu vzhledem k začátku procesu vytváření bloků dat.
chunk_length Int Délka znaku vráceného textového bloku
chunk_set_id bigint Volitelný sloupec obsahující ID, který seskupuje všechny bloky zdrojového výrazu, dokumentu nebo řádku. Pokud je v jedné transakci blokováno více dokumentů nebo řádků, každý z nich má jiný chunk_set_id. Viditelnost je řízena parametrem enable_chunk_set_id .

Příklad vrácení

Tady je příklad vrácených AI_GENERATE_CHUNKS výsledků s následujícími parametry:

  • Typ FIXEDbloku dat .

  • Velikost bloku bloku je 50 znaků.

  • Je povolená možnost chunk_set_id.

  • Text bloku dat: 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.

kus 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

Poznámky

AI_GENERATE_CHUNKS lze použít v tabulce s více řádky. V závislosti na velikosti bloku dat a množství textu, který je blokovaný, sada výsledků označuje, kdy spustí nový sloupec nebo dokument se sloupcem chunk_set_id . V následujícím příkladu se chunk_set_id změny po dokončení bloků textu prvního řádku a přesunou se na druhý. Hodnoty pro chunk_order a chunk_offset také resetovat tak, aby označily nový výchozí bod.

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

Příklady

A. Vytvoření bloku textového sloupce s typem FIXED a velikostí 100 znaků

Následující příklad používá AI_GENERATE_CHUNKS k vytvoření bloku textového sloupce. Používá chunk_typeFIXED 100 znaků.chunk_size

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. Vytvoření bloku textového sloupce s překrytím

Následující příklad používá AI_GENERATE_CHUNKS k vytvoření bloku textového sloupce s použitím překrytí. Používá chunk_type funkce FIXED, chunk_size 100 znaků a překrytí 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. Použití AI_GENERATE_EMBEDDINGS s AI_GENERATE_CHUNKS

Tento příklad používá AI_GENERATE_EMBEDDINGSAI_GENERATE_CHUNKS k vytvoření vkládání z textových bloků a následné vložení vrácených vektorových polí z koncového bodu odvozování modelu AI do tabulky.

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;