import uuid from langchain_core.documents import Document from langchain_text_splitters import RecursiveCharacterTextSplitter from app.core.config import settings def chunk_documents(documents: list[Document]) -> list[Document]: splitter = RecursiveCharacterTextSplitter( chunk_size=settings.CHUNK_SIZE, chunk_overlap=settings.CHUNK_OVERLAP, ) chunks = splitter.split_documents(documents) for index, chunk in enumerate(chunks): source = chunk.metadata.get("source", "unknown") chunk.metadata["chunk_index"] = index chunk.metadata["chunk_id"] = str(uuid.uuid5(uuid.NAMESPACE_URL, f"{source}:{index}:{chunk.page_content[:80]}")) return chunks