文章预览
Jina 公司的 CEO 肖涵在 GitHub 上分享了一个令人印象深刻的代码片段 [1] ,这段代码是 Jina tokenizer 中使用的核心分词实现。这个正则表达式代码片段仅用了 50 余行,却能够高效地处理各种复杂度的文本内容进行分块。其性能之强劲令人惊讶,解析整本《爱丽丝梦游仙境》仅用了 2 毫秒,便产生了 1,204 个文本块。 const chunkRegex = new RegExp( "(" + // 1. Headings (Setext-style, Markdown, and HTML-style, with length constraints) `(?:^(?:[ #*=-]{1,${MAX_HEADING_LENGTH}}|\\w[^\\r\\n]{0,${MAX_HEADING_CONTENT_LENGTH}}\\r?\\n[-=]{2,${MAX_HEADING_UNDERLINE_LENGTH}}| ]{0,${MAX_HTML_HEADING_ATTRIBUTES_LENGTH}}>)[^\\r\\n]{1,${MAX_HEADING_CONTENT_LENGTH}}(?: )?(?:\\r?\\n|$))` + "|" + // New pattern for citations `(?:\\[[0-9]+\\][^\\r\\n]{1, ${MAX_STANDALONE_LINE_LENGTH} })` + "|" + // 2. List items (bulle
………………………………