From 8c02e865c76c6ce43bb63b8f2a973c0c3f8f0dd9 Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Fri, 21 Nov 2025 16:27:16 +0200 Subject: [PATCH] Change default embedding model to qwen3-embedding:4b --- CHANGELOG.md | 9 +++++++-- docs/configuration.md | 10 +++++----- haiku_rag_slim/haiku/rag/config/loader.py | 4 ++-- haiku_rag_slim/haiku/rag/config/models.py | 4 ++-- tests/conftest.py | 4 ++-- tests/test_config_loader.py | 2 +- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e50da252..9fd14625 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,8 +17,13 @@ ### Changed -- **Evaluations**: Improved evaluation dataset naming and simplified evaluator -- configuration +- **BREAKING: Default Embedding Model**: Changed default embedding model from `qwen3-embedding` to `qwen3-embedding:4b` with vector dimension 2560 (previously 4096) + - New installations will use the smaller, more efficient 4B parameter model by default + - **Action required**: Existing databases created with the old default will be incompatible. Users must either: + - Explicitly set `embeddings.model: "qwen3-embedding"` and `embeddings.vector_dim: 4096` in their config to maintain compatibility with existing databases + - Or run `haiku-rag rebuild` to re-embed all documents with the new default + - This change provides better performance for most use cases while reducing resource requirements +- **Evaluations**: Improved evaluation dataset naming and simplified evaluator configuration - `EvalDataset` now accepts dataset name for better organization in Logfire - Added `--name` CLI parameter to override evaluation run names - Removed `IsInstance` evaluator, using only `LLMJudge` for QA evaluation diff --git a/docs/configuration.md b/docs/configuration.md index 8a1fdb23..96d2041b 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -36,8 +36,8 @@ environment: production embeddings: provider: ollama - model: qwen3-embedding - vector_dim: 4096 + model: qwen3-embedding:4b + vector_dim: 2560 qa: provider: ollama @@ -68,8 +68,8 @@ lancedb: embeddings: provider: ollama - model: qwen3-embedding - vector_dim: 4096 + model: qwen3-embedding:4b + vector_dim: 2560 reranking: provider: "" # Empty to disable, or mxbai, cohere, zeroentropy, vllm @@ -144,7 +144,7 @@ from haiku.rag.client import HaikuRAG # Create custom configuration custom_config = AppConfig( qa={"provider": "openai", "model": "gpt-4o"}, - embeddings={"provider": "ollama", "model": "qwen3-embedding"}, + embeddings={"provider": "ollama", "model": "qwen3-embedding:4b", "vector_dim": 2560}, processing={"chunk_size": 512} ) diff --git a/haiku_rag_slim/haiku/rag/config/loader.py b/haiku_rag_slim/haiku/rag/config/loader.py index 53ca6c3f..0b5cba9f 100644 --- a/haiku_rag_slim/haiku/rag/config/loader.py +++ b/haiku_rag_slim/haiku/rag/config/loader.py @@ -63,8 +63,8 @@ def generate_default_config() -> dict: "lancedb": {"uri": "", "api_key": "", "region": ""}, "embeddings": { "provider": "ollama", - "model": "qwen3-embedding", - "vector_dim": 4096, + "model": "qwen3-embedding:4b", + "vector_dim": 2560, }, "reranking": {"provider": "", "model": ""}, "qa": {"provider": "ollama", "model": "gpt-oss"}, diff --git a/haiku_rag_slim/haiku/rag/config/models.py b/haiku_rag_slim/haiku/rag/config/models.py index 59807bae..84d8bd03 100644 --- a/haiku_rag_slim/haiku/rag/config/models.py +++ b/haiku_rag_slim/haiku/rag/config/models.py @@ -26,8 +26,8 @@ class LanceDBConfig(BaseModel): class EmbeddingsConfig(BaseModel): provider: str = "ollama" - model: str = "qwen3-embedding" - vector_dim: int = 4096 + model: str = "qwen3-embedding:4b" + vector_dim: int = 2560 class RerankingConfig(BaseModel): diff --git a/tests/conftest.py b/tests/conftest.py index 133d8a23..81c9295e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -44,8 +44,8 @@ def temp_yaml_config(tmp_path, monkeypatch): }, "embeddings": { "provider": "ollama", - "model": "qwen3-embedding", - "vector_dim": 4096, + "model": "qwen3-embedding:4b", + "vector_dim": 2560, }, "qa": {"provider": "ollama", "model": "gpt-oss"}, } diff --git a/tests/test_config_loader.py b/tests/test_config_loader.py index 62611f5f..468e1a52 100644 --- a/tests/test_config_loader.py +++ b/tests/test_config_loader.py @@ -108,7 +108,7 @@ def test_generate_default_config(): assert "qa" in config assert "providers" in config assert config["embeddings"]["provider"] == "ollama" - assert config["embeddings"]["vector_dim"] == 4096 + assert config["embeddings"]["vector_dim"] == 2560 def test_config_precedence_cwd_over_user(tmp_path, monkeypatch):