Bagikan melalui


AI_GENERATE_CHUNKS (Transact-SQL)

Berlaku untuk: SQL Server 2025 (17.x) Database SQL Azure SQL databasedi Microsoft Fabric

AI_GENERATE_CHUNKS adalah fungsi bernilai tabel yang membuat "potongan", atau fragmen teks berdasarkan jenis, ukuran, dan ekspresi sumber.

Tingkat kompatibilitas 170

AI_GENERATE_CHUNKS membutuhkan tingkat kompatibilitas setidaknya 170. Ketika tingkat kurang dari 170, Mesin Database tidak dapat menemukan AI_GENERATE_CHUNKS fungsi.

Untuk mengubah tingkat kompatibilitas database, lihat Menampilkan atau mengubah tingkat kompatibilitas database.

Sintaksis

Konvensi sintaks Transact-SQL

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

Argumen

sumber

Ekspresi jenis karakter apa pun (misalnya, nvarchar, varchar, nchar, atau char).

chunk_type

String yang secara harfiah memberi nama jenis atau metode untuk memotong teks/dokumen dan tidak boleh NULL atau nilai dari kolom.

Nilai yang diterima untuk rilis ini:

  • FIXED

chunk_size

Ketika chunk_type adalah FIXED, parameter ini mengatur ukuran jumlah karakter dari setiap gugus yang ditentukan sebagai variabel, harfiah, atau ekspresi skalar tipe kecil, smallint, int, atau bigint. chunk_size tidak boleh NULL, negatif, atau nol (0). Parameter ini juga diperlukan saat menggunakan chunk_type .FIXED

Tumpang tindih

Parameter tumpang tindih menentukan persentase teks sebelumnya yang harus disertakan dalam gugus saat ini. Persentase ini diterapkan ke chunk_size parameter untuk menghitung ukuran dalam karakter. Nilai tumpang tindih dapat ditentukan sebagai variabel, harfiah, atau ekspresi skalar jenis tinyint, smallint, int, atau bigint. Ini harus berupa bilangan buletin antara nol (0) dan 50, inklusif, dan tidak boleh NULL atau negatif. Nilai defaultnya adalah nol (0).

enable_chunk_set_id

Ekspresi int atau bit yang berfungsi sebagai bendera untuk mengaktifkan atau menonaktifkan chunk_set_id kolom output; kolom yang mengembalikan angka untuk membantu grup mengembalikan potongan milik sumber yang sama. Nilai 1 mengaktifkan kolom. Jika enable_chunk_set_id dihilangkan, NULL, atau memiliki nilai 0, kolom dinonaktifkan chunk_set_id dan tidak dikembalikan.

Tipe pengembalian

AI_GENERATE_CHUNKS mengembalikan tabel dengan kolom berikut:

Nama kolom Jenis data Deskripsi
chunk Sama seperti jenis data ekspresi sumber Teks yang dikembalikan yang dipotong dari ekspresi sumber.
chunk_order bigint Urutan angka yang diurutkan yang berkaitan dengan urutan setiap gugus diproses dimulai dengan dan meningkat oleh 11.
chunk_offset bigint Posisi potongan data/dokumen sumber sehubungan dengan awal proses penggugusan.
chunk_length Int Panjang karakter dari potongan teks yang dikembalikan.
chunk_set_id bigint Kolom opsional yang berisi ID yang mengelompokkan semua gugus ekspresi sumber, dokumen, atau baris. Jika beberapa dokumen atau baris dipotong dalam satu transaksi, masing-masing diberikan yang berbeda chunk_set_id. Visibilitas dikontrol oleh enable_chunk_set_id parameter .

Contoh pengembalian

Berikut adalah contoh hasil AI_GENERATE_CHUNKS pengembalian dengan parameter berikut:

  • Jenis potongan .FIXED

  • Ukuran potongan 50 karakter.

  • 'chunk_set_id' diaktifkan.

  • Teks potongan: 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.

potongan 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

Komentar

AI_GENERATE_CHUNKS dapat digunakan pada tabel dengan beberapa baris. Bergantung pada ukuran potongan dan jumlah teks yang dipotong, kumpulan hasil menunjukkan kapan memulai kolom atau dokumen baru dengan chunk_set_id kolom. Dalam contoh berikut, chunk_set_id perubahan ketika selesai memotong teks baris pertama dan berpindah ke baris kedua. Nilai untuk chunk_order dan chunk_offset juga mengatur ulang untuk menunjukkan titik awal baru.

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

Contoh

Sebuah. Memotong kolom teks dengan jenis TETAP dan ukuran 100 karakter

Contoh berikut menggunakan AI_GENERATE_CHUNKS untuk memotong kolom teks. Ini menggunakan chunk_type dari FIXED dan chunk_size 100 karakter.

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. Memotong kolom teks dengan tumpang tindih

Contoh berikut menggunakan AI_GENERATE_CHUNKS untuk memotong kolom teks menggunakan tumpang tindih. Ini menggunakan chunk_type FIXED, chunk_size 100 karakter, dan tumpang tindih 10 persen.

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. Menggunakan AI_GENERATE_EMBEDDINGS dengan AI_GENERATE_CHUNKS

Contoh ini menggunakan AI_GENERATE_EMBEDDINGS dengan AI_GENERATE_CHUNKS untuk membuat penyematan dari potongan teks lalu menyisipkan array vektor yang dikembalikan dari titik akhir inferensi model AI ke dalam tabel.

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;