Rag / ingest.py
srikarp's picture
Upload 3 files
5a0087a verified
Raw
History Blame Contribute Delete
2 kB
import os
from pathlib import Path
# Important: make sure dotenv is loaded so Cohere API key is available
from dotenv import load_dotenv
load_dotenv()
# Import the vector store function and path from main.py
from main import get_vector_store, FAISS_DIR
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import PyPDFLoader, TextLoader, Docx2txtLoader
def ingest_folder(folder_path):
vs = get_vector_store()
folder = Path(folder_path)
if not folder.exists():
print(f"Folder '{folder_path}' does not exist.")
return
docs_to_add = []
print(f"Scanning '{folder_path}' for documents...")
for file_path in folder.rglob("*"):
if not file_path.is_file():
continue
ext = file_path.suffix.lower()
try:
if ext == ".pdf":
loader = PyPDFLoader(str(file_path))
elif ext in (".txt", ".md"):
loader = TextLoader(str(file_path), encoding="utf-8")
elif ext == ".docx":
loader = Docx2txtLoader(str(file_path))
else:
continue
print(f"Loading {file_path.name}...")
docs = loader.load()
for d in docs:
d.metadata["source"] = file_path.name
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
chunks = splitter.split_documents(docs)
docs_to_add.extend(chunks)
except Exception as e:
print(f"Error loading {file_path.name}: {e}")
if docs_to_add:
print(f"Adding {len(docs_to_add)} chunks to FAISS index...")
vs.add_documents(docs_to_add)
vs.save_local(str(FAISS_DIR))
print("Done! Documents successfully indexed.")
else:
print("No new supported documents found to add.")
if __name__ == "__main__":
ingest_folder("docs")