Spaces:
Runtime error
Runtime error
| import os | |
| import time | |
| from langchain_community.vectorstores import Chroma | |
| from langchain_community.embeddings import HuggingFaceEmbeddings | |
| from langchain_text_splitters import RecursiveCharacterTextSplitter | |
| from langchain_community.document_loaders import PyPDFLoader | |
| folder_path = "documents" | |
| def load_pdfs(folder_path): | |
| docs = [] | |
| for filename in os.listdir(folder_path): | |
| if filename.endswith(".pdf"): | |
| print(f"Processing: {filename}") | |
| loader = PyPDFLoader(os.path.join(folder_path, filename)) | |
| pages = loader.load() | |
| for page in pages: | |
| page.metadata["source"] = filename | |
| docs.extend(pages) | |
| print(f"Total documents loaded: {len(docs)}") | |
| return docs | |
| def split_documents(docs): | |
| text_splitter = RecursiveCharacterTextSplitter( | |
| chunk_size=500, | |
| chunk_overlap=50 | |
| ) | |
| chunks = text_splitter.split_documents(docs) | |
| print(f"Total chunks: {len(chunks)}") | |
| return chunks | |
| def create_vectorstore(docs): | |
| embedding = HuggingFaceEmbeddings( | |
| model_name="sentence-transformers/all-MiniLM-L6-v2" | |
| ) | |
| print("Creating vector DB...") | |
| start = time.time() | |
| vector_db = Chroma.from_documents( | |
| docs, | |
| embedding, | |
| persist_directory="./chroma_db" | |
| ) | |
| vector_db.persist() | |
| print(f"Done in {time.time() - start} sec") | |
| return vector_db | |
| def main(): | |
| docs = load_pdfs(folder_path) | |
| chunks = split_documents(docs) | |
| vector_db = create_vectorstore(chunks) | |
| print(f"Stored documents: {vector_db._collection.count()}") | |
| if __name__ == "__main__": | |
| main() |