| 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 | |