Skip to content

Text Splitter

Overview

Embeddingするまえにちょうどいい長さやChunkに分割するために使われる。

https://langchain-text-splitter.streamlit.app/ でいろんなケースを試してみるといい。

Types

  1. TextSplitter: Abstract class
  2. CharacterTextSplitter
  3. RecursiveCharacterTextSplitter: from_languageを使うことで、対応するseparatorsによってSplitする。 split_documentsを使ってdocumentを再分割することもできる
  4. MarkdownHeaderTextSplitter: Markdownのヘッダーによって分割する。 metadataにそのヘッダー情報も入るのでいい。
  5. TokenTextSplitter
  6. SentenceTransformersTokenTextSplitter

Sample

from langchain.text_splitter import RecursiveCharacterTextSplitter


def text_split(texts):
    splitter = RecursiveCharacterTextSplitter(
        separators=None,
        chunk_size = 20,
        chunk_overlap = 0,
    )
    docs = splitter.create_documents(
        texts=texts,
    )
    return docs


if __name__ == "__main__":
    texts = [
        """
このくらい長いテキストを切ってみます。
さらにたくさんのテキストを入れます。
"""
    ]
    print(text_split(texts=texts))

Result:

[Document(page_content='このくらい長いテキストを切ってみます。', metadata={}), Document(page_content='さらにたくさんのテキストを入れます。', metadata={})]