rag-document-qa / src /ragassistant /documents.py
delcenjo's picture
Upload folder using huggingface_hub
b02371b verified
Raw
History Blame Contribute Delete
1.15 kB
from .config import CHUNK_OVERLAP, CHUNK_SIZE
def load_documents(corpus_dir):
documents = []
for path in sorted(corpus_dir.glob("*.md")):
documents.append({"source": path.name, "text": path.read_text(encoding="utf-8")})
return documents
def chunk_text(text, chunk_size=CHUNK_SIZE, overlap=CHUNK_OVERLAP):
paragraphs = [p.strip() for p in text.split("\n\n") if p.strip()]
chunks, current = [], ""
for paragraph in paragraphs:
if current and len(current) + len(paragraph) + 1 > chunk_size:
chunks.append(current)
current = (current[-overlap:] + " " + paragraph) if overlap else paragraph
else:
current = f"{current}\n{paragraph}".strip() if current else paragraph
if current:
chunks.append(current)
return chunks
def build_chunks(documents, chunk_size=CHUNK_SIZE, overlap=CHUNK_OVERLAP):
chunks = []
for document in documents:
for i, text in enumerate(chunk_text(document["text"], chunk_size, overlap)):
chunks.append({"id": f"{document['source']}#{i}", "source": document["source"], "text": text})
return chunks