| import logging | |
| from sentence_transformers import SentenceTransformer | |
| logger = logging.getLogger("Embedding-HuggingFace") | |
| class EmbeddingManager: | |
| """ | |
| EmbeddingManager phiên bản Hugging Face TỰ VẬN HÀNH. | |
| Sử dụng sentence-transformers để chạy trực tiếp trên CPU của Space. | |
| """ | |
| def __init__(self, model_name="nomic-ai/nomic-embed-text-v1.5"): | |
| logger.info(f"🚀 Đang khởi tạo mô hình nhúng local: {model_name}") | |
| # Chạy trên CPU để tiết kiệm tài nguyên và tương thích tốt trên HF Free | |
| self.model = SentenceTransformer(model_name, trust_remote_code=True) | |
| logger.info("✅ Khởi tạo mô hình nhúng thành công.") | |
| def get_embedding(self, text): | |
| try: | |
| # Prefix 'search_query: ' là bắt buộc đối với mô hình Nomic khi dùng cho RAG retrieval | |
| query_text = f"search_query: {text}" | |
| embedding = self.model.encode(query_text) | |
| return embedding.tolist() | |
| except Exception as e: | |
| logger.error(f"Lỗi khi nhúng câu hỏi tại local: {e}") | |
| raise e | |