Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2025 (17.x)
Azure SQL Database
SQLdatabase in Microsoft Fabric
AI_GENERATE_CHUNKS é uma função com valor de tabela que cria "pedaços" ou fragmentos de texto com base em um tipo, tamanho e expressão de origem.
Nível de compatibilidade 170
AI_GENERATE_CHUNKS requer que o nível de compatibilidade seja pelo menos 170. Quando o nível é inferior a 170, o Mecanismo de Banco de Dados não consegue localizar a AI_GENERATE_CHUNKS função.
Para alterar o nível de compatibilidade de um banco de dados, consulte Exibir ou alterar o nível de compatibilidade de um banco de dados.
Sintaxe
Transact-SQL convenções de sintaxe
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ , chunk_size = numeric_expression ]
[ , overlap = numeric_expression ]
[ , enable_chunk_set_id = numeric_expression ]
)
Argumentos
fonte
Uma expressão de qualquer tipo de caractere (por exemplo, nvarchar, varchar, nchar ou char).
chunk_type
Um literal de cadeia de caracteres nomeando o tipo ou método para dividir o texto/documento e não pode ser NULL um valor de uma coluna.
Valores aceitos para esta versão:
FIXED
chunk_size
Quando chunk_type é FIXED, este parâmetro define o tamanho da contagem de caracteres de cada bloco especificado como uma variável, uma expressão literal ou escalar do tipo tinyint, smallint, int ou bigint.
chunk_size não pode ser NULL, negativo ou zero (0). Este parâmetro também é necessário ao usar um chunk_type de FIXED.
sobreposição
O parâmetro overlap determina a porcentagem do texto anterior que deve ser incluída no bloco atual. Essa porcentagem é aplicada ao chunk_size parâmetro para calcular o tamanho em caracteres. O valor de sobreposição pode ser especificado como uma variável, uma expressão literal ou escalar do tipo tinyint, smallint, int ou bigint. Deve ser um número inteiro entre zero (0) e 50, inclusive, e não pode ser NULL ou negativo. O valor padrão é zero (0).
enable_chunk_set_id
Uma expressão int ou bit que serve como um sinalizador para habilitar ou desabilitar a chunk_set_id coluna de saída, uma coluna que retorna um número para ajudar a agrupar partes retornadas pertencentes à mesma fonte. Um valor de 1 habilita a coluna. Se enable_chunk_set_id for omitido, NULLou tiver um valor de , a 0 coluna será desabilitada chunk_set_ide não retornada.
Tipos de devolução
AI_GENERATE_CHUNKS Retorna uma tabela com as seguintes colunas:
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
chunk |
O mesmo que o tipo de dados de expressão de origem | Texto retornado que foi fragmentado da expressão de origem. |
chunk_order |
bigint | Uma sequência de números ordenados que se relaciona com a ordem em que cada bloco foi processado começando com 1 e aumentando em 1. |
chunk_offset |
bigint | Posição do bloco dos dados/documento de origem em relação ao início do processo de fragmentação. |
chunk_length |
Int | Comprimento do caractere do bloco de texto retornado. |
chunk_set_id |
bigint | Uma coluna opcional que contém uma ID que agrupa todas as partes de uma expressão, documento ou linha de origem. Se vários documentos ou linhas forem agrupados em uma única transação, cada um receberá um chunk_set_idarquivo . A visibilidade é controlada pelo enable_chunk_set_id parâmetro. |
Exemplo de retorno
Aqui está um exemplo dos resultados de retorno de AI_GENERATE_CHUNKS com os seguintes parâmetros:
Tipo de bloco de
FIXED.Tamanho do bloco de 50 caracteres.
O 'chunk_set_id' está ativado.
Fragmentar o texto:
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.
| pedaço | 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 |
Observações
AI_GENERATE_CHUNKS pode ser usado em uma tabela com várias linhas. Dependendo do tamanho do bloco e da quantidade de texto a ser fragmentado, o conjunto de resultados indica quando inicia uma nova coluna ou documento com a chunk_set_id coluna. No exemplo a seguir, as chunk_set_id alterações quando ele termina de fragmentar o texto da primeira linha e se move para a segunda. Os valores para chunk_order e chunk_offset também redefinir para indicar um novo ponto de partida.
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
| pedaço | 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 |
Exemplos
Um. Fragmentar uma coluna de texto com tipo FIXO e tamanho de 100 caracteres
O exemplo a seguir usa AI_GENERATE_CHUNKS para dividir uma coluna de texto. Ele usa um chunk_type de FIXED e um chunk_size de 100 caracteres.
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. Fragmentar uma coluna de texto com sobreposição
O exemplo a seguir usa AI_GENERATE_CHUNKS para dividir uma coluna de texto usando sobreposição. Ele usa o chunk_type de FIXO, uma chunk_size de 100 caracteres e uma sobreposição de 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;
C. Use AI_GENERATE_EMBEDDINGS com AI_GENERATE_CHUNKS
Este exemplo usa AI_GENERATE_EMBEDDINGS com AI_GENERATE_CHUNKS para criar incorporações a partir de blocos de texto e, em seguida, insere as matrizes vetoriais retornadas do ponto de extremidade de inferência do modelo de IA em uma tabela.
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;