Spaces:
Sleeping
Sleeping
| from pathlib import Path | |
| import faiss | |
| import pandas as pd | |
| from sentence_transformers import SentenceTransformer | |
| import numpy as np | |
| INDEX_DIR = Path("data/index_text") | |
| INDEX_PATH = INDEX_DIR / "faiss.index" | |
| META_PATH = INDEX_DIR / "meta.parquet" | |
| MODEL_NAME = "sentence-transformers/all-MiniLM-L6-v2" | |
| def main(): | |
| # Load index + metadata | |
| index = faiss.read_index(str(INDEX_PATH)) | |
| meta = pd.read_parquet(META_PATH) | |
| # Load embedding model | |
| model = SentenceTransformer(MODEL_NAME) | |
| print("\nType a search query (or 'exit'):\n") | |
| while True: | |
| query = input("🔎 Query> ").strip() | |
| if query.lower() in {"exit", "quit"}: | |
| break | |
| # Embed query | |
| q_emb = model.encode( | |
| [query], | |
| normalize_embeddings=True | |
| ).astype("float32") | |
| # Search | |
| scores, idxs = index.search(q_emb, k=5) | |
| print("\nTop results:\n") | |
| for rank, (i, score) in enumerate(zip(idxs[0], scores[0]), 1): | |
| row = meta.iloc[i] | |
| print(f"{rank}. {row['title']}") | |
| print(f" item_id: {row['item_id']}") | |
| print(f" score: {score:.4f}\n") | |
| if __name__ == "__main__": | |
| main() | |