Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: VERSIÓN PRELIMINAR de SQL Server 2025 (17.x)
Nota:
AI_GENERATE_CHUNKS
en SQL Server 2025 está actualmente en versión preliminar.
AI_GENERATE_CHUNKS
es una función con valores de tabla que crea "fragmentos" o fragmentos de texto basados en un tipo, tamaño y expresión de origen.
Nivel de compatibilidad 170
AI_GENERATE_CHUNKS
requiere que el nivel de compatibilidad sea al menos 170. Cuando el nivel es inferior a 170, el motor de base de datos no puede encontrar la AI_GENERATE_CHUNKS
función.
Para cambiar el nivel de compatibilidad de una base de datos, consulte Ver o cambiar el nivel de compatibilidad de una base de datos.
Sintaxis
Convenciones de sintaxis de Transact-SQL
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ [ , ] chunk_size = numeric_expression ]
[ [ , ] overlap = numeric_expression ]
[ [ , ] enable_chunk_set_id = numeric_expression]
)
Argumentos
de origen
Expresión de cualquier tipo de carácter (por ejemplo, nvarchar, varchar, nchar o char).
chunk_type
Literal de cadena que denomina el tipo o método para fragmentar el texto o documento y no puede ser NULL
ni un valor de una columna.
Valores aceptados para esta versión:
FIXED
chunk_size
Cuando chunk_type
es FIXED
, este parámetro establece el tamaño de recuento de caracteres y palabras de cada fragmento especificado como una variable, un literal o una expresión escalar de tipo tinyint, smallint, int o bigint.
chunk_size no puede ser NULL
, negativo o cero (0
).
solapar
El parámetro de superposición determina el porcentaje del texto anterior que se debe incluir en el fragmento actual. Este porcentaje se aplica al chunk_size
parámetro para calcular el tamaño en caracteres. El valor de superposición se puede especificar como una variable, un literal o una expresión escalar de tipo tinyint, smallint, int o bigint. Debe ser un número entero entre cero (0
) y 50, ambos incluidos, y no puede ser NULL o negativo. El valor predeterminado es cero (0
).
enable_chunk_set_id
Expresión int o bit que actúa como una marca para habilitar o deshabilitar la chunk_set_id
columna de salida; una columna que devuelve un número para ayudar al grupo a devolver fragmentos que pertenecen al mismo origen. Un valor de 1 habilita la columna. Si enable_chunk_set_id se omite, NULL o tiene un valor de 0, la chunk_set_id
columna está deshabilitada y no se devuelve.
Tipos de retorno
AI_GENERATE_CHUNKS
devuelve una tabla con las columnas siguientes:
Nombre de la columna | Tipo de dato | Descripción |
---|---|---|
chunk |
Igual que el tipo de datos de expresión de origen | Texto devuelto que se ha fragmentado de la expresión de origen. |
chunk_order |
Int | Secuencia de números ordenados relacionados con el orden en que se procesó cada fragmento a partir 1 de y aumentando por 1 . |
chunk_offset |
Int | Posición del fragmento del documento o datos de origen en relación con el inicio del proceso de fragmentación. |
chunk_length |
Int | Longitud de caracteres del fragmento de texto devuelto. |
chunk_set_id |
Int | Columna opcional que contiene un identificador que agrupa todos los fragmentos de una expresión de origen, un documento o una fila. Si varios documentos o filas se fragmentan en una sola transacción, cada uno recibe un valor diferente chunk_set_id . La visibilidad se controla mediante el enable_chunk_set_id parámetro . |
Ejemplo de devolución
Este es un ejemplo de los resultados devueltos de AI_GENERATE_CHUNKS
con los parámetros siguientes:
Tipo de fragmento de
FIXED
.Tamaño de fragmento de 50 caracteres.
La opción "chunk_set_id" está habilitada.
Texto de fragmento:
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.
fragmento | 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 |
Observaciones
AI_GENERATE_CHUNKS
se puede usar en una tabla con varias filas. Según el tamaño del fragmento y la cantidad de texto fragmentado, el conjunto de resultados indica cuándo inicia una nueva columna o documento con la chunk_set_id
columna. En el ejemplo siguiente, cambia chunk_set_id
cuando termina de fragmentar el texto de la primera fila y se mueve al segundo. Los valores de chunk_order
y chunk_offset
también se restablecen para indicar un nuevo punto 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
fragmento | 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 |
Ejemplos
Un. Fragmentar una columna de texto con el tipo FIJO y el tamaño de 100 caracteres
En el ejemplo siguiente se usa AI_GENERATE_CHUNKS
para fragmentar una columna de texto. Usa un chunk_type
de y un FIXED
de chunk_size
100 caracteres.
SELECT
c.chunk
FROM
docs_table t
CROSS APPLY
AI_GENERATE_CHUNKS(source = text_column, chunk_type = FIXED, chunk_size = 100) c
B. Fragmentación de una columna de texto con superposición
En el ejemplo siguiente se usa AI_GENERATE_CHUNKS
para fragmentar una columna de texto mediante superposición. Usa el chunk_type de FIXED, un chunk_size de 100 caracteres y una superposición del 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
C. Uso de AI_GENERATE_EMBEDDINGS con AI_GENERATE_CHUNKS
En este ejemplo se usa AI_GENERATE_EMBEDDINGS
con AI_GENERATE_CHUNKS
para crear incrustaciones a partir de fragmentos de texto y, a continuación, se insertan las matrices vectoriales devueltas desde el punto de conexión de inferencia del modelo de IA en una tabla.
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