dynamic-rag-fastapi / src /splitter.py
ABDRauf's picture
Upload 31 files
305ef4d verified
Raw
History Blame Contribute Delete
1.14 kB
from langchain_text_splitters import RecursiveCharacterTextSplitter
from src.logger import logger
def split_text(docs, chunk_size=1000, chunk_overlap=200):
"""
Takes a list of LangChain Document objects and splits them into smaller,
manageable chunks for the vector database.
"""
logger.info(f"Starting text splitting: chunk_size={chunk_size}, overlap={chunk_overlap}")
try:
# Initialize the LangChain text splitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=chunk_overlap,
separators=["\n\n", "\n", " ", ""] # Splits by paragraph, then line, then word
)
# Split the documents
chunks = text_splitter.split_documents(docs)
logger.info(f"Successfully split the document into {len(chunks)} individual chunks.")
# Return the chunks so the embedding model can vectorize them
return chunks
except Exception as e:
logger.error(f"Text splitting failed: {str(e)}", exc_info=True)
raise e