More conservative chunking

This commit is contained in:
Mats Rauhala committed 2026-11-11 11:50:31 +02:00
1 parent f4a79b4251
commit cb1972225f
1 file changed
+5 -5
+5 -5
View File
@@ -26,7 +26,6 @@ import Data.Functor.Contravariant ((>$<))
import Data.Generics.Product (HasType, typed)
import Data.List (sortOn)
import Data.Map.Strict qualified as Map
import Data.Maybe (mapMaybe)
import Data.Ord (Down (..))
import Data.Text (Text)
import Data.Text qualified as T
@@ -194,10 +193,10 @@ hardWrap t
| T.null t = []
| otherwise = let (a, b) = T.splitAt (chunkMaxTokens * 3) t in a : hardWrap b
coalesceBlocks :: [Text] -> [Text]
coalesceBlocks blocks = reverse (go [] 0 blocks)
coalesceBlocks :: Int -> [Text] -> [Text]
coalesceBlocks titleSize blocks = reverse (go [] 0 blocks)
where
chunkMaxChars = chunkMaxTokens * 3
chunkMaxChars = (chunkMaxTokens * 3) - titleSize
go :: [Text] -> Int -> [Text] -> [Text]
go acc _ [] = [T.concat (reverse acc) | not (null acc)]
@@ -216,9 +215,10 @@ coalesceBlocks blocks = reverse (go [] 0 blocks)
chunkArticle :: Text -> Text -> [Text]
chunkArticle title_ html =
map (prefixTitle title_) (coalesceBlocks (extractBlocks html))
map (prefixTitle title_) (coalesceBlocks titleSize (extractBlocks html))
where
prefixTitle t chunk = "Title: " <> t <> "\n\n" <> chunk
titleSize = T.length ("Title: " <> title_)
processEntry ::
( MonadIO m,