RAGのためのテキスト分割関数

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

で分割されたチャンクを返すようにして処理が終わる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です