import argparse import sys import os sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from dotenv import load_dotenv load_dotenv() from retrieval.ingest import ( ingest_all_dataset_files, clear_and_rebuild_index, ingest_folder ) from retrieval.faiss_store import index_size def main(): parser = argparse.ArgumentParser(description="Build AccessoryIQ FAISS index") parser.add_argument("--rebuild", action="store_true", help="Clear existing index and rebuild from scratch") parser.add_argument("--folder", type=str, default=None, help="Ingest only a specific subfolder") parser.add_argument("--sample", action="store_true", help="Also ingest sample data from ingest.py") args = parser.parse_args() print("\n" + "─"*50) print(" AccessoryIQ v2 — Index Builder") print("─"*50) print(f" Current index size: {index_size()} vectors") print("─"*50 + "\n") if args.rebuild: clear_and_rebuild_index() elif args.folder: path = f"data/manuals/{args.folder}" if not os.path.exists(path): print(f"[ERROR] Folder not found: {path}") sys.exit(1) ingest_folder(path) else: if args.sample: from retrieval.ingest import ingest_sample_data ingest_sample_data() ingest_all_dataset_files() final_size = index_size() print(f"\n{'─'*50}") print(f" ✓ Index build complete: {final_size} vectors") print(f"─"*50 + "\n") if __name__ == "__main__": main()