Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: Предварительная версия SQL Server 2025 (17.x)
Замечание
AI_GENERATE_CHUNKS
в SQL Server 2025 в настоящее время находится в предварительной версии.
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_type
FIXED
.
перекрытие
Параметр перекрытия определяет процент предыдущего текста, который должен быть включен в текущий блок. Этот процент применяется к 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_type
FIXED
100 символов и chunk_size
100 символов.
SELECT
c.chunk
FROM
docs_table t
CROSS APPLY
AI_GENERATE_CHUNKS(source = text_column, chunk_type = FIXED, chunk_size = 100) c
В. Блокирование текстового столбца с перекрытием
В следующем примере используется AI_GENERATE_CHUNKS
блокирование текстового столбца с помощью перекрытия. Он использует chunk_type FIXED, chunk_size 100 символов и перекрывающийся 10 процентов.
SELECT
c.chunk
FROM
docs_table t
CROSS APPLY
AI_GENERATE_CHUNKS(source = text_column, chunk_type = FIXED, chunk_size = 100, overlap = 10) 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 t
CROSS APPLY
AI_GENERATE_CHUNKS(source = t.text_to_chunk, chunk_type = FIXED, chunk_size = 100) c