YAML Metadata Warning: empty or missing yaml metadata in repo card (https://huggingface.co/docs/hub/model-cards#model-card-metadata)

Book Recommendation System with Sentence Transformers (all-MiniLM-L6-v2)

πŸ“Œ Overview

This repository hosts the quantized version of the all-MiniLM-L6-v2 model fine-tuned for book reccommendation tasks. The model has been trained on the Book_Genre dataset from Hugging Face. The model is quantized to Float16 (FP16) to optimize inference speed and efficiency while maintaining high performance.

πŸ— Model Details

  • Model Architecture: all-MiniLM-L6-v2
  • Task: Book Recommendation System
  • Dataset: Hugging Face's Book_Genre
  • Quantization: Float16 (FP16) for optimized inference
  • Fine-tuning Framework: Hugging Face Transformers

πŸš€ Usage

Installation

pip install transformers torch

Loading the Model

from sentence_transformers import SentenceTransformer, models
from huggingface_hub import hf_hub_download
from sentence_transformers.util import cos_sim
import torch
import ast

device = "cuda" if torch.cuda.is_available() else "cpu"

model_name = "AventIQ-AI/all-MiniLM-L6-v2-book-recommendation-system"
model = SentenceTransformer(model_name).to(device)

Question Answer Example

# Load the Embeddings CSV file
df_embeddings = pd.read_csv(csv_path)

# Convert embedding column (string) back to list
df_embeddings["embedding"] = df_embeddings["embedding"].apply(ast.literal_eval)

# Convert embeddings to tensor
book_embeddings = torch.tensor(df_embeddings["embedding"].tolist())

def get_book_recommendations(query, top_k=5):
    query_embedding = model.encode(query, convert_to_tensor=True)

    if query_embedding.ndim == 1:
        query_embedding = query_embedding.unsqueeze(0)

    if isinstance(book_embeddings, np.ndarray):
        book_embeddings_tensor = torch.tensor(book_embeddings, dtype=torch.float32)
    else:
        book_embeddings_tensor = book_embeddings  # If already tensor, use as is

    similarities = cos_sim(query_embedding, book_embeddings_tensor)

    similarities = similarities.squeeze(0)  # Remove extra dimension if necessary

    top_k_values, top_k_indices = torch.topk(similarities, k=top_k)

    recommended_titles = df_embeddings.iloc[top_k_indices.cpu().numpy()]['title'].tolist()
    recommended_scores = top_k_values.cpu().numpy().tolist()

    return list(zip(recommended_titles, recommended_scores))

# Example usage:
query = "A horror novel with ghosts and dark nights"
recommendations = get_book_recommendations(query, top_k=5)

print("Book Recommendations:")
for title, score in recommendations:
    print(f"{title} - Score: {score:.4f}")

⚑ Quantization Details

Post-training quantization was applied using PyTorch's built-in quantization framework. The model was quantized to Float16 (FP16) to reduce model size and improve inference efficiency while balancing accuracy.

Evaluation Metrics: NDCG

NDCG β†’ If close to 1, the ranking matches expected relevance. Our model's NDCG score is 0.82

πŸ”§ Fine-Tuning Details

Dataset

The Bookcorpus dataset was used for training and evaluation. The dataset consists of texts.

Training Configuration

  • Number of epochs: 3
  • warmup steps: 100
  • Evaluation strategy: steps

πŸ“‚ Repository Structure

.
β”œβ”€β”€ model/               # Contains the quantized model files
β”œβ”€β”€ tokenizer_config/    # Tokenizer configuration and vocabulary files
β”œβ”€β”€ model.safetensors/   # Quantized Model
β”œβ”€β”€ README.md            # Model documentation

⚠️ Limitations

  • The model may struggle for out of scope tasks.
  • Quantization may lead to slight degradation in accuracy compared to full-precision models.
  • Performance may vary across different writing styles and sentence structures.

🀝 Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request if you have suggestions or improvements.

Downloads last month
10
Safetensors
Model size
22.7M params
Tensor type
F16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Space using AventIQ-AI/all-MiniLM-L6-v2-book-recommendation-system 1