- Categories:
字符串和二进制函数 (AI Functions)
SPLIT_TEXT_RECURSIVE_CHARACTER (SNOWFLAKE.CORTEX)¶
SPLIT_TEXT_RECURSIVE_CHARACTER 函数递归地将字符串拆分为较短的字符串,以便预处理文本,以与文本嵌入或搜索索引函数一起使用。该函数返回一个文本块数组,其中块是根据提供的输入参数从原始文本派生。
拆分算法尝试按照分隔符的提供顺序在分隔符上拆分文本,要么默认根据格式隐式拆分,要么以 separators 实参显式分割。然后,以递归方式对长度超过指定 chunk_size 的每个块应用拆分,直到所有块都不超过指定 chunk_size 为止。
例如,如果格式设置为 'none',则算法首先按大多数格式中表示分段符的“\n\n”序列进行拆分。在任何仍长于 chunk_size 字符的结果块中,函数会按表示换行符的“\n”字符进行拆分。重复此过程,直到每个块的字符数都少于 chunk_size。
语法¶
实参¶
必填:
'text_to_split'要拆分的文本。
'format'输入文本的格式,决定拆分算法中的默认分隔符。必须是以下其中一项:
none:没有格式特定的分隔符。只有separators字段中的分隔符用于拆分。markdown:除分隔符字段中的任何分隔符外,对标题、代码块和表进行分隔。
chunk_size一个整数,指定每个块中的最大字符数。该值必须大于零。
可选:
overlap一个整数,指定连续块之间要重叠的字符数。默认情况下,块没有重叠。如果已指定
overlap,则它必须小于chunk_size实参。重叠对于确保每个块都有与前一个块有关的一些上下文很有用。这有助于提高搜索结果或其他处理的质量。
separators一个有序的字符序列列表,除
format参数规定的任何分隔符外,在确定文本拆分位置时用作边界。此列表中的最后一项应该是通用分隔符,例如空字符串(允许在任意两个字符之间进行拆分),这样算法才能保证将文本拆分成所需大小的块。默认:["\n\n", "\n", " ", ""],表示任意两个字符(空字符串)之间的分段符、分行符和空格。
返回¶
返回一个字符串数组,包含从输入字符串中提取的文本块。
示例¶
简单用法¶
以下示例使用输入文本 hello world are you here 直接调用 SPLIT_TEXT_RECURSIVE_CHARACTER 函数。该函数将文本拆分为 15 个字符的块,块之间有 10 个字符的重叠。
使用 Markdown 格式化并将块数组展平成行的示例¶
以下示例创建表 sample_documents,每行都包含简短的 Markdown 文档,然后调用 SPLIT_TEXT_RECURSIVE_CHARACTER 函数拆分每个文档。该函数将文本拆分为 25 个字符的块,块之间有 10 个字符的重叠。