Spaces:
Running
Running
Download scripts/build_bm25.py from Harshavard21/FinRAG: direct link, hf CLI and curl.
- Browser
- Download file 1.68 kB
-
https://huggingface.co/spaces/Harshavard21/FinRAG/resolve/main/scripts/build_bm25.py
- Command line
-
hf download hf://spaces/Harshavard21/FinRAG/scripts/build_bm25.py
-
curl -L -o build_bm25.py https://huggingface.co/spaces/Harshavard21/FinRAG/resolve/main/scripts/build_bm25.py
1.68 kB
| """ | |
| scripts/build_bm25.py | |
| ====================== | |
| Standalone script to verify Qdrant is healthy and build the BM25 index. | |
| Run this after ingestion is complete. | |
| """ | |
| import sys, os | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| from config.settings import settings | |
| from src.utils.logger import logger | |
| from src.vectorstore.qdrant_store import QdrantStore | |
| from src.vectorstore.bm25_index import BM25Index | |
| # --- Step 1: Verify Qdrant --- | |
| print("Checking Qdrant collection...") | |
| qdrant = QdrantStore() | |
| info = qdrant.get_collection_info() | |
| print(f"Qdrant status : {info['status']}") | |
| print(f"Vectors stored : {info.get('vectors_count', info.get('points_count', '?'))}") | |
| # --- Step 2: Scroll all index chunks from Qdrant to build BM25 --- | |
| print("\nScrolling all index chunks from Qdrant for BM25 build...") | |
| from qdrant_client.models import Filter, FieldCondition, MatchAny | |
| # We need Chunk-like objects. Let's just rebuild from the JSON cache. | |
| from src.ingestion.pipeline import IngestionPipeline | |
| from src.chunking.hierarchical_chunker import HierarchicalChunker | |
| pipeline = IngestionPipeline() | |
| documents = pipeline.run_all(force_reprocess=False) # loads from cache instantly | |
| chunker = HierarchicalChunker() | |
| chunked_docs = chunker.chunk_documents(documents) | |
| all_index_chunks = [] | |
| for cdoc in chunked_docs: | |
| all_index_chunks.extend(cdoc.all_index_chunks) | |
| print(f"Index chunks for BM25: {len(all_index_chunks)}") | |
| # --- Step 3: Build BM25 --- | |
| print("\nBuilding BM25 sparse index...") | |
| bm25 = BM25Index() | |
| bm25.build(all_index_chunks) | |
| print(f"\nBM25 index built over {len(all_index_chunks)} chunks") | |
| print("\nAll done! Run: streamlit run app/main.py") | |