from collections import Counter from db.parsers.bns.cleaner import BNSTextCleaner from db.parsers.bns.bns_parser import BNSParser from db.parsers.bns.chunker import ( LegalChunker, chunks_to_dicts ) from ingest import ( LegalIngestionPipeline ) # ===================================================== # LOAD BNS # ===================================================== with open( "../../pdfs/bns.txt", "r", encoding="utf8" ) as f: text = f.read() # ===================================================== # CLEAN # ===================================================== cleaner = BNSTextCleaner() text = cleaner.clean( text ) # ===================================================== # PARSE # ===================================================== parser = BNSParser() document = parser.parse( text ) # ===================================================== # CHUNK # ===================================================== chunker = LegalChunker() chunks = chunks_to_dicts( chunker.chunk_document( document ) ) # ===================================================== # STATS # ===================================================== print("\n========== CHUNK STATS ==========\n") print( f"Total Chunks: {len(chunks)}" ) levels = Counter( chunk["level"] for chunk in chunks ) for level, count in sorted( levels.items() ): print( f"{level}: {count}" ) # ===================================================== # INGEST # ===================================================== pipeline = ( LegalIngestionPipeline() ) # Optional: # wipe collection before indexing try: pipeline.store.client.delete_collection( collection_name="bns" ) print( "\nDeleted existing collection." ) except Exception: pass pipeline.ingest( chunks=chunks, batch_size=64 ) print( "\nBNS successfully indexed." )