From 55dc4bbdd26a5415c7dc38e44e868450d84ed3e4 Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Fri, 26 Sep 2025 19:24:43 +0300 Subject: [PATCH] Return an empty array when request en empty embedding --- src/haiku/rag/embeddings/ollama.py | 2 ++ src/haiku/rag/embeddings/openai.py | 2 ++ src/haiku/rag/embeddings/vllm.py | 2 ++ src/haiku/rag/embeddings/voyageai.py | 2 ++ 4 files changed, 8 insertions(+) diff --git a/src/haiku/rag/embeddings/ollama.py b/src/haiku/rag/embeddings/ollama.py index 2dbd8ea4..a7303ea7 100644 --- a/src/haiku/rag/embeddings/ollama.py +++ b/src/haiku/rag/embeddings/ollama.py @@ -7,6 +7,8 @@ from haiku.rag.embeddings.base import EmbedderBase class Embedder(EmbedderBase): async def embed(self, text: str | list[str]) -> list[float] | list[list[float]]: client = AsyncOpenAI(base_url=f"{Config.OLLAMA_BASE_URL}/v1", api_key="dummy") + if not text: + return [] response = await client.embeddings.create( model=self._model, input=text, diff --git a/src/haiku/rag/embeddings/openai.py b/src/haiku/rag/embeddings/openai.py index 14d9129a..5b0ea2ff 100644 --- a/src/haiku/rag/embeddings/openai.py +++ b/src/haiku/rag/embeddings/openai.py @@ -6,6 +6,8 @@ from haiku.rag.embeddings.base import EmbedderBase class Embedder(EmbedderBase): async def embed(self, text: str | list[str]) -> list[float] | list[list[float]]: client = AsyncOpenAI() + if not text: + return [] response = await client.embeddings.create( model=self._model, input=text, diff --git a/src/haiku/rag/embeddings/vllm.py b/src/haiku/rag/embeddings/vllm.py index cae33398..2d2f77bd 100644 --- a/src/haiku/rag/embeddings/vllm.py +++ b/src/haiku/rag/embeddings/vllm.py @@ -9,6 +9,8 @@ class Embedder(EmbedderBase): client = AsyncOpenAI( base_url=f"{Config.VLLM_EMBEDDINGS_BASE_URL}/v1", api_key="dummy" ) + if not text: + return [] response = await client.embeddings.create( model=self._model, input=text, diff --git a/src/haiku/rag/embeddings/voyageai.py b/src/haiku/rag/embeddings/voyageai.py index 4c0e7e89..60c8c6b3 100644 --- a/src/haiku/rag/embeddings/voyageai.py +++ b/src/haiku/rag/embeddings/voyageai.py @@ -6,6 +6,8 @@ try: class Embedder(EmbedderBase): async def embed(self, text: str | list[str]) -> list[float] | list[list[float]]: client = Client() + if not text: + return [] if isinstance(text, str): res = client.embed([text], model=self._model, output_dtype="float") return res.embeddings[0] # type: ignore[return-value]