文字ごとに再帰的に分割
多くの開発者は、特定の文字リストをもとにドキュメントを分割するために、再帰的文字スプリッターを活用しています。デフォルトでは、段落、改行、スペース、空文字列の順に分割が試みられます(["\n\n", "\n", " ", ""])。
スプリッターはまず段落単位での分割を試み、chunk_size と chunk_overlap の条件を満たしているか確認します。条件を満たさない場合は、文単位、単語単位、そして文字単位へと順に分割を試みます。
実際には、ドキュメントに合った chunk_size と chunk_overlap の値を見つけるために、さまざまな組み合わせを試してみることが重要です。
この演習はコースの一部です
LangChainを使ったLLMアプリケーション開発
演習の手順
RecursiveCharacterTextSplitterからlangchain_text_splittersクラスをインポートします。RecursiveCharacterTextSplitter、separators=["\n", " ", ""]、chunk_size=24を指定してchunk_overlap=10のインスタンスを作成します。.split_text()メソッドを使ってquoteを分割し、チャンクとそれぞれのチャンク長を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import the recursive character splitter
from langchain_text_splitters import ____
quote = 'Words are flowing out like endless rain into a paper cup,\nthey slither while they pass,\nthey slip away across the universe.'
chunk_size = 24
chunk_overlap = 10
# Create an instance of the splitter class
splitter = RecursiveCharacterTextSplitter(
separators=____,
chunk_size=____,
chunk_overlap=____)
# Split the document and print the chunks
docs = splitter.____(quote)
print(docs)
print([len(doc) for doc in docs])