103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
import pytest
|
|
|
|
from haiku.rag.config import (
|
|
AppConfig,
|
|
EmbeddingsConfig,
|
|
OllamaConfig,
|
|
ProvidersConfig,
|
|
VLLMConfig,
|
|
)
|
|
from haiku.rag.config.models import ModelConfig
|
|
from haiku.rag.embeddings import get_embedder
|
|
|
|
|
|
def test_embedder_uses_config_from_get_embedder():
|
|
"""Test that embedders use the config passed to get_embedder."""
|
|
custom_config = AppConfig(
|
|
embeddings=EmbeddingsConfig(
|
|
model=ModelConfig(
|
|
provider="ollama",
|
|
name="custom-model",
|
|
),
|
|
vector_dim=512,
|
|
),
|
|
providers=ProvidersConfig(
|
|
ollama=OllamaConfig(base_url="http://custom-ollama:8080"),
|
|
vllm=VLLMConfig(embeddings_base_url="http://custom-vllm:9000"),
|
|
),
|
|
)
|
|
|
|
embedder = get_embedder(custom_config)
|
|
|
|
assert embedder._model == "custom-model"
|
|
assert embedder._vector_dim == 512
|
|
assert embedder._config.providers.ollama.base_url == "http://custom-ollama:8080"
|
|
|
|
|
|
def test_vllm_embedder_uses_config():
|
|
"""Test that vllm embedder uses the config passed to get_embedder."""
|
|
from haiku.rag.config.models import ModelConfig
|
|
|
|
custom_config = AppConfig(
|
|
embeddings=EmbeddingsConfig(
|
|
model=ModelConfig(
|
|
provider="vllm",
|
|
name="custom-vllm-model",
|
|
),
|
|
vector_dim=768,
|
|
),
|
|
providers=ProvidersConfig(
|
|
vllm=VLLMConfig(embeddings_base_url="http://custom-vllm:9001"),
|
|
),
|
|
)
|
|
|
|
embedder = get_embedder(custom_config)
|
|
|
|
assert embedder._model == "custom-vllm-model"
|
|
assert embedder._vector_dim == 768
|
|
assert (
|
|
embedder._config.providers.vllm.embeddings_base_url == "http://custom-vllm:9001"
|
|
)
|
|
|
|
|
|
def test_openai_embedder_uses_config():
|
|
"""Test that openai embedder uses the config passed to get_embedder."""
|
|
from haiku.rag.config.models import ModelConfig
|
|
|
|
custom_config = AppConfig(
|
|
embeddings=EmbeddingsConfig(
|
|
model=ModelConfig(
|
|
provider="openai",
|
|
name="text-embedding-3-large",
|
|
),
|
|
vector_dim=3072,
|
|
),
|
|
)
|
|
|
|
embedder = get_embedder(custom_config)
|
|
|
|
assert embedder._model == "text-embedding-3-large"
|
|
assert embedder._vector_dim == 3072
|
|
assert embedder._config == custom_config
|
|
|
|
|
|
@pytest.mark.skipif(
|
|
True, reason="VoyageAI is an optional dependency, may not be installed"
|
|
)
|
|
def test_voyageai_embedder_uses_config():
|
|
"""Test that voyageai embedder uses the config passed to get_embedder."""
|
|
custom_config = AppConfig(
|
|
embeddings=EmbeddingsConfig(
|
|
model=ModelConfig(
|
|
provider="voyageai",
|
|
name="voyage-large-2",
|
|
),
|
|
vector_dim=1536,
|
|
),
|
|
)
|
|
|
|
embedder = get_embedder(custom_config)
|
|
|
|
assert embedder._model == "voyage-large-2"
|
|
assert embedder._vector_dim == 1536
|
|
assert embedder._config == custom_config
|