diff --git a/haiku_rag_slim/haiku/rag/client.py b/haiku_rag_slim/haiku/rag/client.py index 056446fe..b2507493 100644 --- a/haiku_rag_slim/haiku/rag/client.py +++ b/haiku_rag_slim/haiku/rag/client.py @@ -1681,7 +1681,9 @@ class HaikuRAG: yield DownloadProgress(model=tokenizer_name, status="done") # Sentence-transformers embedder - if self._config.embeddings.model.provider == "sentence-transformers": + if ( + self._config.embeddings.model.provider == "sentence-transformers" + ): # pragma: no cover try: from sentence_transformers import ( # type: ignore[import-not-found] SentenceTransformer, @@ -1695,7 +1697,7 @@ class HaikuRAG: pass # HuggingFace reranker models - if self._config.reranking.model: + if self._config.reranking.model: # pragma: no cover provider = self._config.reranking.model.provider model_name = self._config.reranking.model.name diff --git a/haiku_rag_slim/haiku/rag/reranking/jina_local.py b/haiku_rag_slim/haiku/rag/reranking/jina_local.py index 2f8a228f..bbe97898 100644 --- a/haiku_rag_slim/haiku/rag/reranking/jina_local.py +++ b/haiku_rag_slim/haiku/rag/reranking/jina_local.py @@ -12,7 +12,7 @@ from haiku.rag.reranking.base import RerankerBase from haiku.rag.store.models.chunk import Chunk -class JinaLocalReranker(RerankerBase): +class JinaLocalReranker(RerankerBase): # pragma: no cover """Jina reranker using local model inference via transformers. Note: The Jina Reranker v3 model is licensed under CC BY-NC 4.0, diff --git a/tests/test_reranker.py b/tests/test_reranker.py index 74f19b6f..8d1d3f9f 100644 --- a/tests/test_reranker.py +++ b/tests/test_reranker.py @@ -235,6 +235,26 @@ class TestGetReranker: pytest.skip("Jina local dependencies not installed") +def test_jina_reranker_missing_api_key(monkeypatch): + monkeypatch.delenv("JINA_API_KEY", raising=False) + + from haiku.rag.reranking.jina import JinaReranker + + with pytest.raises(ValueError, match="JINA_API_KEY environment variable required"): + JinaReranker("jina-reranker-v3") + + +@pytest.mark.asyncio +async def test_jina_reranker_empty_chunks(monkeypatch): + monkeypatch.setenv("JINA_API_KEY", "test-api-key") + + from haiku.rag.reranking.jina import JinaReranker + + reranker = JinaReranker("jina-reranker-v3") + result = await reranker.rerank("query", [], top_n=2) + assert result == [] + + @pytest.mark.asyncio @pytest.mark.vcr() async def test_jina_reranker(monkeypatch):