Text Splitter
Overview
Embeddingするまえにちょうどいい長さやChunkに分割するために使われる。
https://langchain-text-splitter.streamlit.app/ でいろんなケースを試してみるといい。
Types
- TextSplitter: Abstract class
- CharacterTextSplitter
- RecursiveCharacterTextSplitter:
from_language
を使うことで、対応するseparatorsによってSplitする。split_documents
を使ってdocumentを再分割することもできる - MarkdownHeaderTextSplitter: Markdownのヘッダーによって分割する。 metadataにそのヘッダー情報も入るのでいい。
- TokenTextSplitter
- 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: