RAGのためのテキスト分割関数
文章となる文字列をチャンクという塊に分割し
分けたものをベクトル化してDBに入れる
このためチャンクに分ける分割関数を作成する
# テキスト分割関数
def split_text(text):
chunk_size = 200
overlap = 50
chunks = []
start = 0
while start < len(text):
end = start + chunk_size
chunks.append(text[start:end])
start += chunk_size - overlap
return chunks
以下解説
chunk_size = 200
チャンクサイズの設定
overlap = 50
塊の許容範囲の設定
これにより1000文字なら
最初の200文字をチャンクにして
次のチャンクは151〜350が1つのチャンクになる
Overlapは重なりの意味なので
50被っているようになる
start = 0
while start < len(text):
で
Startがテキストの文字数より小さい間はループを続ける
end = start + chunk_size
が終了地点の設定
つまりチャンクサイズの200より上になれば終わり
chunks.append(text[start:end])
で文字を
chunks = []
へ
append(text[start:end])
によって追加していく
そして
start += chunk_size - overlap
で次のスタート地点の設定
chunk_size - overlap
の計算で
200−50
となって
150から開始地点となる
最後に
return chunks
で分割されたチャンクを返すようにして処理が終わる