Udostępnij za pośrednictwem


AI_GENERATE_CHUNKS (Transact-SQL) (wersja zapoznawcza)

Dotyczy: SQL Server 2025 (wersja zapoznawcza 17.x)

Uwaga / Notatka

AI_GENERATE_CHUNKS program SQL Server 2025 jest obecnie w wersji zapoznawczej.

AI_GENERATE_CHUNKS to funkcja wartości tabeli, która tworzy "fragmenty" lub fragmenty tekstu na podstawie typu, rozmiaru i wyrażenia źródłowego.

Poziom zgodności 170

AI_GENERATE_CHUNKS wymaga, aby poziom zgodności był co najmniej 170. Jeśli poziom jest mniejszy niż 170, aparat bazy danych nie może odnaleźć AI_GENERATE_CHUNKS funkcji.

Aby zmienić poziom zgodności bazy danych, zobacz Wyświetlanie lub zmienianie poziomu zgodności bazy danych.

Składnia

Transact-SQL konwencje składni

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

Argumenty (w programowaniu)

źródło

Wyrażenie dowolnego typu znaku (na przykład nvarchar, varchar, nchar lub char).

chunk_type

Literał ciągu nazewnictwa typu lub metody do fragmentowania tekstu/dokumentu i nie może być NULL ani wartością z kolumny.

Zaakceptowane wartości dla tej wersji:

  • FIXED

chunk_size

Gdy chunk_type parametr ma FIXEDwartość , ustawia rozmiar liczby znaków każdego fragmentu określonego jako zmienna, literał lub wyrażenie skalarne typu tinyint, smallint, int lub bigint. chunk_size nie może być NULL, ujemna lub zero (0). Ten parametr jest również wymagany w przypadku używania FIXEDelementu chunk_type .

zachodzić na siebie

Parametr nakładający się określa wartość procentową poprzedniego tekstu, który powinien zostać uwzględniony w bieżącym fragcie. Ta wartość procentowa jest stosowana do parametru w celu obliczenia rozmiaru chunk_size w znakach. Nakładające się wartości można określić jako zmienną, literał lub wyrażenie skalarne typu tinyint, smallint, int lub bigint. Musi to być liczba całkowita z zakresu od zera (0) do 50, włącznie i nie może być NULL ani ujemna. Wartość domyślna to zero (0).

enable_chunk_set_id

Wyrażenie typu int lub bit , które służy jako flaga umożliwiająca włączenie lub wyłączenie chunk_set_id kolumny wyjściowej; kolumna zwracająca liczbę, która ułatwia grupowanie zwracanych fragmentów należących do tego samego źródła. Wartość parametru 1 umożliwia kolumnę. Jeśli enable_chunk_set_id zostanie pominięta, NULLlub ma wartość 0, kolumna chunk_set_id jest wyłączona i nie jest zwracana.

Typy zwracane

AI_GENERATE_CHUNKS zwraca tabelę z następującymi kolumnami:

Nazwa kolumny Typ danych Opis
chunk Taki sam jak typ danych wyrażenia źródłowego Zwrócony tekst, który został fragmentowany z wyrażenia źródłowego.
chunk_order bigint Sekwencja uporządkowanych liczb odnoszących się do kolejności przetwarzania każdego fragmentu, zaczynając od 1 i zwiększająca się o 1wartość .
chunk_offset bigint Pozycja fragmentu danych/dokumentu źródłowego w odniesieniu do początku procesu fragmentowania.
chunk_length Int Długość znaków zwracanego fragmentu tekstu.
chunk_set_id bigint Opcjonalna kolumna zawierająca identyfikator grupujący wszystkie fragmenty wyrażenia źródłowego, dokumentu lub wiersza. Jeśli wiele dokumentów lub wierszy jest fragmentowanych w jednej transakcji, każda z nich ma inny chunk_set_idelement . Widoczność jest kontrolowana enable_chunk_set_id przez parametr .

Przykład zwracany

Oto przykład zwracanych wyników AI_GENERATE_CHUNKS z następującymi parametrami:

  • Typ fragmentu .FIXED

  • Rozmiar fragmentu wynosi 50 znaków.

  • Opcja "chunk_set_id" jest włączona.

  • Tekst fragmentu: 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.

kawałek 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

Uwagi

AI_GENERATE_CHUNKS można używać w tabeli z wieloma wierszami. W zależności od rozmiaru fragmentu i ilości fragmentu tekstu zestaw wyników wskazuje, kiedy rozpoczyna nową kolumnę lub dokument z kolumną chunk_set_id . W poniższym przykładzie chunk_set_id zmiany po zakończeniu fragmentowania tekstu pierwszego wiersza i przechodzą do drugiego. Wartości i chunk_orderchunk_offset resetuj, aby wskazać nowy punkt początkowy.

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
kawałek 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

Przykłady

Odp. Fragmentowanie kolumny tekstowej o stałym typie i rozmiarze 100 znaków

W poniższym przykładzie użyto AI_GENERATE_CHUNKS metody do fragmentowania kolumny tekstowej. Używa symbolu chunk_type i FIXEDchunk_size z 100 znaków.

SELECT
    c.chunk
FROM
   docs_table t
CROSS APPLY
   AI_GENERATE_CHUNKS(source = text_column, chunk_type = FIXED, chunk_size = 100) c

B. Fragmentowanie kolumny tekstowej z nakładającymi się na siebie

W poniższym przykładzie użyto AI_GENERATE_CHUNKS metody do fragmentowania kolumny tekstowej przy użyciu nakładania się. Używa chunk_type STAŁYCH, chunk_size 100 znaków i nakładają się na siebie 10 procent.

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. Używanie AI_GENERATE_EMBEDDINGS z AI_GENERATE_CHUNKS

W tym przykładzie użyto polecenia AI_GENERATE_EMBEDDINGS , AI_GENERATE_CHUNKS aby utworzyć osadzanie z fragmentów tekstu, a następnie wstawia zwracane tablice wektorowe z punktu końcowego wnioskowania modelu sztucznej inteligencji do tabeli.

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