Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) Preview
AI_GENERATE_CHUNKS is een tabelwaardefunctie waarmee segmenten of fragmenten van tekst worden gemaakt op basis van een type, grootte en bronexpressie.
Compatibiliteitsniveau 170
AI_GENERATE_CHUNKS vereist dat het compatibiliteitsniveau ten minste 170 is. Wanneer het niveau kleiner is dan 170, kan de database-engine de AI_GENERATE_CHUNKS functie niet vinden.
Als u het compatibiliteitsniveau van een database wilt wijzigen, raadpleegt u Het compatibiliteitsniveau van een database weergeven of wijzigen.
Syntaxis
Transact-SQL syntaxis-conventies
AI_GENERATE_CHUNKS (source = text_expression
, chunk_type = FIXED
[ , chunk_size = numeric_expression ]
[ , overlap = numeric_expression ]
[ , enable_chunk_set_id = numeric_expression ]
)
Argumenten
bron
Een expressie van elk tekentype (bijvoorbeeld nvarchar, varchar, nchar of char).
chunk_type
Een letterlijke tekenreeks die het type of de methode noemt om de tekst/het document te segmenteren en kan geen waarde uit een kolom zijn NULL .
Geaccepteerde waarden voor deze release:
FIXED
chunk_size
Wanneer chunk_type is FIXED, stelt deze parameter het aantal tekens in van elk segment dat is opgegeven als een variabele, een letterlijke of een scalaire expressie van het type tinyint, smallint, int of bigint.
chunk_size kan niet, negatief of nul (NULL) zijn0. Deze parameter is ook vereist bij het gebruik van een chunk_type van FIXED.
overlappen
De overlappingsparameter bepaalt het percentage van de voorgaande tekst dat moet worden opgenomen in het huidige segment. Dit percentage wordt toegepast op de chunk_size parameter om de grootte in tekens te berekenen. De overlappingswaarde kan worden opgegeven als een variabele, een letterlijke of een scalaire expressie van het type tinyint, smallint, int of bigint. Het moet een geheel getal tussen nul (0) en 50, inclusief zijn en mag niet of negatief zijn NULL . De standaardwaarde is nul (0).
enable_chunk_set_id
Een int - of bitexpressie die als vlag fungeert om de chunk_set_id uitvoerkolom in of uit te schakelen; een kolom die een getal retourneert om geretourneerde segmenten te groeperen die behoren tot dezelfde bron. Een waarde waarmee 1 de kolom kan worden ingeschakeld. Als enable_chunk_set_id wordt weggelaten of NULLeen waarde 0heeft, wordt de chunk_set_id kolom uitgeschakeld en niet geretourneerd.
Retourtypen
AI_GENERATE_CHUNKS retourneert een tabel met de volgende kolommen:
| Kolomnaam | Gegevenstype | Beschrijving |
|---|---|---|
chunk |
Hetzelfde als het gegevenstype van de bronexpressie | Geretourneerde tekst die is gesegmenteerd uit de bronexpressie. |
chunk_order |
bigint | Een reeks geordende getallen die betrekking hebben op de volgorde die elk segment heeft verwerkt, beginnend met 1 en toenemend met 1. |
chunk_offset |
bigint | Positie van het segment van de brongegevens/het document ten opzichte van het begin van het segmenteringsproces. |
chunk_length |
Int | Tekenlengte van het geretourneerde tekstsegment. |
chunk_set_id |
bigint | Een optionele kolom met een id die alle segmenten van een bronexpressie, document of rij groepeert. Als meerdere documenten of rijen in één transactie zijn gesegmenteerd, krijgen ze elk een andere chunk_set_id. Zichtbaarheid wordt bepaald door de enable_chunk_set_id parameter. |
Voorbeeld van retourneren
Hier volgt een voorbeeld van de geretourneerde resultaten AI_GENERATE_CHUNKS met de volgende parameters:
Segmenttype van
FIXED.Segmentgrootte van 50 tekens.
De chunk_set_id is ingeschakeld.
Segmenttekst:
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.
| brok | 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 |
Opmerkingen
AI_GENERATE_CHUNKS kan worden gebruikt voor een tabel met meerdere rijen. Afhankelijk van de segmentgrootte en de hoeveelheid tekst die wordt gesegmenteerd, geeft de resultatenset aan wanneer er een nieuwe kolom of document met de chunk_set_id kolom wordt gestart. In het volgende voorbeeld worden de chunk_set_id wijzigingen gewijzigd wanneer de tekst van de eerste rij is gesegmenteerde en naar de tweede wordt verplaatst. De waarden voor chunk_order en chunk_offset opnieuw instellen om een nieuw beginpunt aan te geven.
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
| brok | 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 |
Voorbeelden
Eén. Een tekstkolom segment met vast type en grootte van 100 tekens
In het volgende voorbeeld wordt gebruikgemaakt AI_GENERATE_CHUNKS van het segmenteren van een tekstkolom. Het gebruikt een chunk_type van FIXED 100 tekens en een chunk_size van 100 tekens.
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. Een tekstkolom splitsen met overlapping
In het volgende voorbeeld wordt gebruikgemaakt AI_GENERATE_CHUNKS van het segmenteren van een tekstkolom met overlap. Het gebruikt de chunk_type van VAST, een chunk_size van 100 tekens en een overlapping van 10 procent.
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. AI_GENERATE_EMBEDDINGS gebruiken met AI_GENERATE_CHUNKS
In dit voorbeeld wordt gebruikgemaakt AI_GENERATE_EMBEDDINGSAI_GENERATE_CHUNKS van het maken van insluitingen op basis van tekstsegmenten en voegt u vervolgens de geretourneerde vectormatrices van het AI-modeldeductie-eindpunt in een tabel in.
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;