codingwithadi's picture
Upload folder using huggingface_hub
81598c5 verified
"""
Local pplx-embed embedding provider.
Uses:
- perplexity-ai/pplx-embed-v1-0.6b for queries
- perplexity-ai/pplx-embed-context-v1-0.6b for documents
Two patches applied at import time:
1. transformers 4.57 crashes on models without additional_chat_templates folder β†’ catch 404
2. pplx-embed's st_quantize.py imports sentence_transformers.models.Module (removed in 3.x) β†’ add it back
"""
# ── Patch 1: transformers 4.57 list_repo_templates 404 crash ─
from transformers.utils import hub as _hub
import transformers.tokenization_utils_base as _tub
_orig_lrt = _hub.list_repo_templates
def _safe_lrt(*a, **kw):
try:
return _orig_lrt(*a, **kw)
except Exception:
return []
_hub.list_repo_templates = _safe_lrt
_tub.list_repo_templates = _safe_lrt
# ── Patch 2: sentence_transformers.models.Module missing ─────
import torch.nn as _nn
import sentence_transformers.models as _st_models
if not hasattr(_st_models, "Module"):
_st_models.Module = _nn.Module
from sentence_transformers import SentenceTransformer
import numpy as np
from openmark.embeddings.base import EmbeddingProvider
from openmark import config
class LocalEmbedder(EmbeddingProvider):
def __init__(self):
print("Loading pplx-embed query model...")
self._query_model = SentenceTransformer(config.PPLX_QUERY_MODEL, trust_remote_code=True)
print("Loading pplx-embed document model...")
self._doc_model = SentenceTransformer(config.PPLX_DOC_MODEL, trust_remote_code=True)
print("Local embedder ready.")
def embed_documents(self, texts: list[str]) -> list[list[float]]:
embeddings = self._doc_model.encode(texts, batch_size=32, show_progress_bar=True)
return embeddings.astype(float).tolist()
def embed_query(self, text: str) -> list[float]:
embedding = self._query_model.encode([text])
return embedding[0].astype(float).tolist()
@property
def dimension(self) -> int:
return 1024