from typing import List from llama_index.core import Document, Settings, VectorStoreIndex from llama_index.core.embeddings import BaseEmbedding class KeywordEmbedding(BaseEmbedding): @classmethod def class_name(cls) -> str: return "KeywordEmbedding" def _vector(self, text: str) -> List[float]: lowered = text.lower() refund_signal = 1.0 if any( term in lowered for term in ("refund", "support", "handbook") ) else 0.0 release_signal = 1.0 if any( term in lowered for term in ("release", "deployment", "calendar") ) else 0.0 return [refund_signal, release_signal, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] def _get_text_embedding(self, text: str) -> List[float]: return self._vector(text) def _get_query_embedding(self, query: str) -> List[float]: return self._vector(query) async def _aget_query_embedding(self, query: str) -> List[float]: return self._get_query_embedding(query)