fix(reranker): align llm_reranker default model with SDK default (#6703)
This commit is contained in:
@@ -52,7 +52,7 @@ All rerankers share these common configuration parameters:
|
|||||||
|
|
||||||
| Parameter | Description | Type | Default |
|
| Parameter | Description | Type | Default |
|
||||||
| ---------------- | ------------------------------------------ | ------- | ---------------------- |
|
| ---------------- | ------------------------------------------ | ------- | ---------------------- |
|
||||||
| `model` | LLM model to use for scoring | `str` | `"gpt-4o-mini"` |
|
| `model` | LLM model to use for scoring | `str` | `"gpt-5-mini"` |
|
||||||
| `provider` | LLM provider (`openai`, `anthropic`, etc.) | `str` | `"openai"` |
|
| `provider` | LLM provider (`openai`, `anthropic`, etc.) | `str` | `"openai"` |
|
||||||
| `api_key` | API key for LLM provider | `str` | `None` |
|
| `api_key` | API key for LLM provider | `str` | `None` |
|
||||||
| `temperature` | Temperature for LLM generation | `float` | `0.0` |
|
| `temperature` | Temperature for LLM generation | `float` | `0.0` |
|
||||||
@@ -114,7 +114,7 @@ The self-hosted [TypeScript SDK](/open-source/features/reranker-search#typescrip
|
|||||||
| `zero_entropy` | `pnpm add zeroentropy` | `zerank-1` | `apiKey`, `model`, `topK` |
|
| `zero_entropy` | `pnpm add zeroentropy` | `zerank-1` | `apiKey`, `model`, `topK` |
|
||||||
| `sentence_transformer` | `pnpm add @huggingface/transformers` | `Xenova/ms-marco-MiniLM-L-6-v2` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
| `sentence_transformer` | `pnpm add @huggingface/transformers` | `Xenova/ms-marco-MiniLM-L-6-v2` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
||||||
| `huggingface` | `pnpm add @huggingface/transformers` | `Xenova/bge-reranker-base` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
| `huggingface` | `pnpm add @huggingface/transformers` | `Xenova/bge-reranker-base` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
||||||
| `llm_reranker` | None (uses your LLM provider's own SDK) | `openai` / `gpt-4o-mini` | `provider`, `model`, `apiKey`, `llm` (nested override), `topK` |
|
| `llm_reranker` | None (uses your LLM provider's own SDK) | `openai` / `gpt-5-mini` | `provider`, `model`, `apiKey`, `llm` (nested override), `topK` |
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { Memory } from "mem0ai/oss";
|
import { Memory } from "mem0ai/oss";
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-openai-key",
|
"api_key": "your-openai-key",
|
||||||
"scoring_prompt": custom_prompt,
|
"scoring_prompt": custom_prompt,
|
||||||
"top_k": 5
|
"top_k": 5
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ os.environ["COHERE_API_KEY"] = "your-api-key"
|
|||||||
# Initialize memory with Cohere reranker
|
# Initialize memory with Cohere reranker
|
||||||
config = {
|
config = {
|
||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-5-mini"}},
|
||||||
"rerank": {
|
"rerank": {
|
||||||
"provider": "cohere",
|
"provider": "cohere",
|
||||||
"config": {
|
"config": {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-openai-api-key"
|
"api_key": "your-openai-api-key"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ m = Memory.from_config(config)
|
|||||||
| Parameter | Type | Default | Description |
|
| Parameter | Type | Default | Description |
|
||||||
|-----------|------|---------|-------------|
|
|-----------|------|---------|-------------|
|
||||||
| `provider` | str | `"openai"` | LLM provider (openai, anthropic, etc.) |
|
| `provider` | str | `"openai"` | LLM provider (openai, anthropic, etc.) |
|
||||||
| `model` | str | `"gpt-4o-mini"` | LLM model to use for reranking |
|
| `model` | str | `"gpt-5-mini"` | LLM model to use for reranking |
|
||||||
| `api_key` | str | None | API key for the LLM provider |
|
| `api_key` | str | None | API key for the LLM provider |
|
||||||
| `top_k` | int | None | Number of top documents to return after reranking |
|
| `top_k` | int | None | Number of top documents to return after reranking |
|
||||||
| `temperature` | float | 0.0 | LLM temperature for consistency |
|
| `temperature` | float | 0.0 | LLM temperature for consistency |
|
||||||
@@ -69,7 +69,7 @@ config = {
|
|||||||
|
|
||||||
## TypeScript (self-hosted)
|
## TypeScript (self-hosted)
|
||||||
|
|
||||||
The [TypeScript OSS SDK](/open-source/features/reranker-search#typescript-sdk) (`mem0ai/oss`) ships the LLM reranker under the provider name `llm_reranker`. It does **not** reuse the Memory's main `llm` instance; it builds its own LLM from the reranker's own config, defaulting to `openai` / `gpt-4o-mini`. Set `provider`/`model`/`apiKey` directly on `config`, or nest a fully separate `config.llm: { provider, config }` (its `provider`/`config` take priority over the top-level fields, which only backfill values missing from the nested config).
|
The [TypeScript OSS SDK](/open-source/features/reranker-search#typescript-sdk) (`mem0ai/oss`) ships the LLM reranker under the provider name `llm_reranker`. It does **not** reuse the Memory's main `llm` instance; it builds its own LLM from the reranker's own config, defaulting to `openai` / `gpt-5-mini`. Set `provider`/`model`/`apiKey` directly on `config`, or nest a fully separate `config.llm: { provider, config }` (its `provider`/`config` take priority over the top-level fields, which only backfill values missing from the nested config).
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { Memory } from "mem0ai/oss";
|
import { Memory } from "mem0ai/oss";
|
||||||
@@ -114,7 +114,7 @@ config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-openai-api-key",
|
"api_key": "your-openai-api-key",
|
||||||
"temperature": 0.0
|
"temperature": 0.0
|
||||||
}
|
}
|
||||||
@@ -170,15 +170,15 @@ config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "azure_openai",
|
"provider": "azure_openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-azure-api-key",
|
"api_key": "your-azure-api-key",
|
||||||
"llm": {
|
"llm": {
|
||||||
"provider": "azure_openai",
|
"provider": "azure_openai",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-azure-api-key",
|
"api_key": "your-azure-api-key",
|
||||||
"azure_endpoint": "https://your-resource.openai.azure.com/",
|
"azure_endpoint": "https://your-resource.openai.azure.com/",
|
||||||
"azure_deployment": "gpt-4o-mini-deployment"
|
"azure_deployment": "gpt-5-mini-deployment"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,7 +232,7 @@ config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-api-key",
|
"api_key": "your-api-key",
|
||||||
"scoring_prompt": custom_prompt
|
"scoring_prompt": custom_prompt
|
||||||
}
|
}
|
||||||
@@ -351,7 +351,7 @@ fast_config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-api-key",
|
"api_key": "your-api-key",
|
||||||
"top_k": 5,
|
"top_k": 5,
|
||||||
"temperature": 0.0
|
"temperature": 0.0
|
||||||
@@ -444,7 +444,7 @@ fallback_config = {
|
|||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-5-mini",
|
||||||
"api_key": "your-api-key"
|
"api_key": "your-api-key"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ config = {
|
|||||||
"llm": {
|
"llm": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "gpt-4o-mini"
|
"model": "gpt-5-mini"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rerank": {
|
"rerank": {
|
||||||
@@ -113,7 +113,7 @@ from mem0 import Memory
|
|||||||
# Initialize memory with local reranker
|
# Initialize memory with local reranker
|
||||||
config = {
|
config = {
|
||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-5-mini"}},
|
||||||
"rerank": {
|
"rerank": {
|
||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ config = {
|
|||||||
"llm": {
|
"llm": {
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "gpt-4o-mini"
|
"model": "gpt-5-mini"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rerank": {
|
"rerank": {
|
||||||
@@ -98,7 +98,7 @@ os.environ["ZERO_ENTROPY_API_KEY"] = "your-api-key"
|
|||||||
# Initialize memory with Zero Entropy reranker
|
# Initialize memory with Zero Entropy reranker
|
||||||
config = {
|
config = {
|
||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-5-mini"}},
|
||||||
"rerank": {"provider": "zero_entropy", "config": {"model": "zerank-1"}}
|
"rerank": {"provider": "zero_entropy", "config": {"model": "zerank-1"}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ const results = await memory.search("What movies do I like?", {
|
|||||||
|
|
||||||
### LLM reranker
|
### LLM reranker
|
||||||
|
|
||||||
To score with an LLM instead of a dedicated reranker, use the `llm_reranker` provider. It builds its own LLM from the reranker's config (defaulting to `openai` / `gpt-4o-mini`) rather than reusing the Memory's main `llm`:
|
To score with an LLM instead of a dedicated reranker, use the `llm_reranker` provider. It builds its own LLM from the reranker's config (defaulting to `openai` / `gpt-5-mini`) rather than reusing the Memory's main `llm`:
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
const memory = new Memory({
|
const memory = new Memory({
|
||||||
@@ -137,7 +137,7 @@ const memory = new Memory({
|
|||||||
| `zero_entropy` | `zerank-1` | `apiKey`, `model`, `topK` |
|
| `zero_entropy` | `zerank-1` | `apiKey`, `model`, `topK` |
|
||||||
| `sentence_transformer` | `Xenova/ms-marco-MiniLM-L-6-v2` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
| `sentence_transformer` | `Xenova/ms-marco-MiniLM-L-6-v2` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
||||||
| `huggingface` | `Xenova/bge-reranker-base` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
| `huggingface` | `Xenova/bge-reranker-base` | `model`, `device`, `maxLength`, `normalize`, `topK` |
|
||||||
| `llm_reranker` | `openai` / `gpt-4o-mini` | `provider`, `model`, `apiKey`, `llm` (nested override), `topK` |
|
| `llm_reranker` | `openai` / `gpt-5-mini` | `provider`, `model`, `apiKey`, `llm` (nested override), `topK` |
|
||||||
|
|
||||||
<Note>
|
<Note>
|
||||||
`rerank` is opt-in per search and a no-op when no `reranker` is configured. If the reranker call fails, Mem0 logs a warning and returns the original vector-ranked results.
|
`rerank` is opt-in per search and a no-op when no `reranker` is configured. If the reranker call fails, Mem0 logs a warning and returns the original vector-ranked results.
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ export class RerankerFactory {
|
|||||||
llmProvider = nested.provider || config.provider || "openai";
|
llmProvider = nested.provider || config.provider || "openai";
|
||||||
llmConfig = { ...(nested.config || {}) };
|
llmConfig = { ...(nested.config || {}) };
|
||||||
if (llmConfig.model === undefined) {
|
if (llmConfig.model === undefined) {
|
||||||
llmConfig.model = config.model ?? "gpt-4o-mini";
|
llmConfig.model = config.model ?? "gpt-5-mini";
|
||||||
}
|
}
|
||||||
if (llmConfig.temperature === undefined) {
|
if (llmConfig.temperature === undefined) {
|
||||||
llmConfig.temperature = config.temperature ?? 0.0;
|
llmConfig.temperature = config.temperature ?? 0.0;
|
||||||
@@ -261,7 +261,7 @@ export class RerankerFactory {
|
|||||||
} else {
|
} else {
|
||||||
llmProvider = config.provider || "openai";
|
llmProvider = config.provider || "openai";
|
||||||
llmConfig = {
|
llmConfig = {
|
||||||
model: config.model ?? "gpt-4o-mini",
|
model: config.model ?? "gpt-5-mini",
|
||||||
temperature: config.temperature ?? 0.0,
|
temperature: config.temperature ?? 0.0,
|
||||||
maxTokens: config.maxTokens ?? 100,
|
maxTokens: config.maxTokens ?? 100,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class LLMRerankerConfig(BaseRerankerConfig):
|
|||||||
Configuration for LLM-based reranker.
|
Configuration for LLM-based reranker.
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
model (str): LLM model to use for reranking. Defaults to "gpt-4o-mini".
|
model (str): LLM model to use for reranking. Defaults to "gpt-5-mini".
|
||||||
api_key (str): API key for the LLM provider.
|
api_key (str): API key for the LLM provider.
|
||||||
provider (str): LLM provider. Defaults to "openai".
|
provider (str): LLM provider. Defaults to "openai".
|
||||||
top_k (int): Number of top documents to return after reranking.
|
top_k (int): Number of top documents to return after reranking.
|
||||||
@@ -20,7 +20,7 @@ class LLMRerankerConfig(BaseRerankerConfig):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
model: str = Field(
|
model: str = Field(
|
||||||
default="gpt-4o-mini",
|
default="gpt-5-mini",
|
||||||
description="LLM model to use for reranking"
|
description="LLM model to use for reranking"
|
||||||
)
|
)
|
||||||
api_key: Optional[str] = Field(
|
api_key: Optional[str] = Field(
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class LLMReranker(BaseReranker):
|
|||||||
# Convert BaseRerankerConfig to LLMRerankerConfig with defaults
|
# Convert BaseRerankerConfig to LLMRerankerConfig with defaults
|
||||||
config = LLMRerankerConfig(
|
config = LLMRerankerConfig(
|
||||||
provider=getattr(config, 'provider', 'openai'),
|
provider=getattr(config, 'provider', 'openai'),
|
||||||
model=getattr(config, 'model', 'gpt-4o-mini'),
|
model=getattr(config, 'model', 'gpt-5-mini'),
|
||||||
api_key=getattr(config, 'api_key', None),
|
api_key=getattr(config, 'api_key', None),
|
||||||
top_k=getattr(config, 'top_k', None),
|
top_k=getattr(config, 'top_k', None),
|
||||||
temperature=0.0, # Default for reranking
|
temperature=0.0, # Default for reranking
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from mem0.reranker.llm_reranker import LLMReranker
|
|||||||
class TestLLMRerankerConfig:
|
class TestLLMRerankerConfig:
|
||||||
def test_default_config(self):
|
def test_default_config(self):
|
||||||
config = LLMRerankerConfig()
|
config = LLMRerankerConfig()
|
||||||
assert config.model == "gpt-4o-mini"
|
assert config.model == "gpt-5-mini"
|
||||||
assert config.provider == "openai"
|
assert config.provider == "openai"
|
||||||
assert config.temperature == 0.0
|
assert config.temperature == 0.0
|
||||||
assert config.max_tokens == 100
|
assert config.max_tokens == 100
|
||||||
|
|||||||
Reference in New Issue
Block a user