# import faiss # merged_index = faiss.read_index("/home/mshahidul/readctrl/data/vector_db/qwen_em/shard_0_en.faiss") # for i in range(1, 2): # next_index = faiss.read_index(f"/home/mshahidul/readctrl/data/vector_db/qwen_em/shard_{i}_en.faiss") # merged_index.merge_from(next_index) # faiss.write_index(merged_index, "/home/mshahidul/readctrl/data/vector_db/qwen_em/full_wikipedia_index.faiss") import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "2" import faiss import numpy as np import torch from sentence_transformers import SentenceTransformer # 1. Configuration model_id = "Qwen/Qwen3-Embedding-4B" index_path = "/home/mshahidul/readctrl/data/vector_db/qwen_em/full_wikipedia_index.faiss" # 2. Load the Index print("Loading Index...") index = faiss.read_index(index_path) print(f"Index loaded successfully.") print(f"Total vectors in index: {index.ntotal}") print(f"Vector dimension: {index.d}") # 3. Load Model for Querying print("Loading model for query embedding...") model = SentenceTransformer( model_id, trust_remote_code=True, device="cuda", model_kwargs={"torch_dtype": torch.bfloat16} ) # 4. Perform a Search query = "What is the capital of France?" # We must encode the query using the same model query_vector = model.encode([query], convert_to_numpy=True).astype('float32') k = 5 # Number of nearest neighbors to find distances, indices = index.search(query_vector, k) # 5. Review Results print("\n--- Search Results ---") print(f"Query: {query}") for i in range(k): print(f"Result {i+1}: Index ID {indices[0][i]}, Distance: {distances[0][i]:.4f}") if indices[0][0] == -1: print("\nError: The search returned -1. This usually means the index is empty or improperly trained.") else: print("\nSuccess: The index returned valid neighbors!")