Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: SQL Server 2025 (17.x)
Azure SQL Database
SQL Database в Microsoft Fabric
AI_GENERATE_CHUNKS — это табличное значение функция, которая создает фрагменты текста или фрагменты текста на основе типа, размера и исходного выражения.
Уровень совместимости 170
AI_GENERATE_CHUNKS Требуется, чтобы уровень совместимости был не менее 170. Если уровень меньше 170, ядро СУБД не может найти функцию AI_GENERATE_CHUNKS .
Чтобы изменить уровень совместимости базы данных, ознакомьтесь с разделом "Просмотр" или изменение уровня совместимости базы данных.
Синтаксис
Соглашения о синтаксисе Transact-SQL
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ , chunk_size = numeric_expression ]
[ , overlap = numeric_expression ]
[ , enable_chunk_set_id = numeric_expression ]
)
Аргументы
источник
Выражение любого типа символа (например, nvarchar, varchar, nchar или char).
chunk_type
Строковый литерал, именующий тип или метод для блокирования текста или документа и не может быть NULL или значением из столбца.
Принятые значения для этого выпуска:
FIXED
chunk_size
Если chunk_type это FIXEDтак, этот параметр задает размер количества символов каждого блока, указанного как переменная, литерал или скалярное выражение типа tinyint, smallint, int или bigint.
chunk_size не может быть NULL, отрицательным или нулевым (0). Этот параметр также требуется при использовании chunk_typeFIXED.
перекрытие
Параметр перекрытия определяет процент предыдущего текста, который должен быть включен в текущий блок. Этот процент применяется к chunk_size параметру для вычисления размера символов.
Перекрывающееся значение можно указать как переменную, литерал или скалярное выражение типа tinyint, smallint, int или bigint. Оно должно быть целым числом от нуля (0) до 50, включительно и не может быть NULL или отрицательным. Значение по умолчанию равно нулю (0).
enable_chunk_set_id
Целочисленное или битовое выражение, которое служит флагом для включения или отключения chunk_set_id выходного столбца; столбец, возвращающий число, чтобы помочь группе возвращаемых блоков, принадлежащих тому же источнику. Значение 1 включает столбец. Если enable_chunk_set_id опущен или NULLимеет значение 0, chunk_set_id столбец отключен и не возвращается.
Типы возвращаемых данных
AI_GENERATE_CHUNKS возвращает таблицу со следующими столбцами:
| Имя столбца | Тип данных | Описание |
|---|---|---|
chunk |
То же, что и тип данных исходного выражения | Возвращен текст, который был фрагментирован из исходного выражения. |
chunk_order |
bigint | Последовательность упорядоченных чисел, которая связана с порядком обработки каждого блока, начиная с 1 и увеличения 1. |
chunk_offset |
bigint | Позиция блока исходных данных или документа относительно начала процесса блокирования. |
chunk_length |
int | Длина символа возвращаемого фрагмента текста. |
chunk_set_id |
bigint |
Необязательный столбец, содержащий идентификатор, который группирует все блоки исходного выражения, документа или строки. Если несколько документов или строк блокируются в одной транзакции, они имеют разные chunk_set_idзначения. Видимость управляется параметром enable_chunk_set_id . |
Пример возврата
Ниже приведен пример возвращаемых результатов AI_GENERATE_CHUNKS со следующими параметрами:
Тип
FIXEDблока .Размер блока в 50 символов.
Включена chunk_set_id.
Фрагмент текста:
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.
| кусок | 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 | Сто пятьдесят один | 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 |
Замечания
AI_GENERATE_CHUNKS можно использовать в таблице с несколькими строками. В зависимости от размера блока и объема фрагментированного текста результирующий набор указывает, когда он запускает новый столбец или документ с столбцом chunk_set_id . В следующем примере изменения при chunk_set_id завершении фрагментирования текста первой строки и переход на второй. Значения для chunk_order и chunk_offset сброса, чтобы указать новую начальную точку.
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
| кусок | 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 | Сто пятьдесят один | 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 | Сто пятьдесят один | 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 |
Примеры
А. Блокирование текстового столбца с фиксированным типом и размером 100 символов
В следующем примере используется AI_GENERATE_CHUNKS блокирование текстового столбца. Он использует chunk_typeFIXED 100 символов и chunk_size 100 символов.
SELECT c.chunk
FROM docs_table AS t
CROSS APPLY
AI_GENERATE_CHUNKS (SOURCE = text_column, CHUNK_TYPE = FIXED, CHUNK_SIZE = 100) AS c;
В. Блокирование текстового столбца с перекрытием
В следующем примере используется AI_GENERATE_CHUNKS блокирование текстового столбца с помощью перекрытия. Он использует chunk_type FIXED, chunk_size 100 символов и перекрывающийся 10 процентов.
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;
С. Использование AI_GENERATE_EMBEDDINGS с AI_GENERATE_CHUNKS
В этом примере используется AI_GENERATE_EMBEDDINGS для AI_GENERATE_CHUNKS создания внедренных фрагментов текста, а затем вставляет возвращенные массивы векторов из конечной точки вывода модели ИИ в таблицу.
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;