docs(rerankers): align reranker config docs with v3 SDK source
This commit is contained in:
@@ -61,11 +61,13 @@ All rerankers share these common configuration parameters:
|
|||||||
|
|
||||||
### LLM Reranker
|
### LLM Reranker
|
||||||
|
|
||||||
| Parameter | Description | Type | Default |
|
| Parameter | Description | Type | Default |
|
||||||
| -------------- | --------------------------- | ------ | -------- |
|
| ----------- | -------------------------------------------------------------------------------------------- | ------ | -------------- |
|
||||||
| `llm.provider` | LLM provider for reranking | `str` | Required |
|
| `provider` | LLM provider (`openai`, `anthropic`, etc.) | `str` | `"openai"` |
|
||||||
| `llm.config` | LLM configuration object | `dict` | Required |
|
| `model` | LLM model to use for scoring | `str` | `"gpt-4o-mini"` |
|
||||||
| `top_n` | Number of results to return | `int` | `None` |
|
| `api_key` | API key for LLM provider | `str` | `None` |
|
||||||
|
| `top_k` | Number of results to return after reranking | `int` | `None` |
|
||||||
|
| `llm` | Optional nested LLM config (`{"provider": ..., "config": {...}}`) for provider-specific fields (e.g. `ollama_base_url`) | `dict` | `None` |
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ Provide only a single numerical score between 0.0 and 1.0. Do not include any ex
|
|||||||
|
|
||||||
## Custom Prompt Configuration
|
## Custom Prompt Configuration
|
||||||
|
|
||||||
|
<Warning>
|
||||||
|
The `scoring_prompt` field is **deprecated** and will be removed in a future version. Setting it still works but emits a `DeprecationWarning` at runtime. The field currently sets the system prompt used by the LLM; custom prompts may be exposed through a different API in a future release.
|
||||||
|
</Warning>
|
||||||
|
|
||||||
You can provide a custom prompt template using the `scoring_prompt` parameter:
|
You can provide a custom prompt template using the `scoring_prompt` parameter:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ os.environ["COHERE_API_KEY"] = "your-api-key"
|
|||||||
config = {
|
config = {
|
||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "cohere",
|
"provider": "cohere",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "rerank-english-v3.0",
|
"model": "rerank-english-v3.0",
|
||||||
@@ -110,7 +110,7 @@ For multilingual applications, use the multilingual model:
|
|||||||
|
|
||||||
```python Python
|
```python Python
|
||||||
config = {
|
config = {
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "cohere",
|
"provider": "cohere",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "rerank-multilingual-v3.0",
|
"model": "rerank-multilingual-v3.0",
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ m = Memory.from_config(config)
|
|||||||
| `device` | str | "cpu" | Device to run model on ("cpu", "cuda", "mps") |
|
| `device` | str | "cpu" | Device to run model on ("cpu", "cuda", "mps") |
|
||||||
| `batch_size` | int | 32 | Batch size for processing |
|
| `batch_size` | int | 32 | Batch size for processing |
|
||||||
| `max_length` | int | 512 | Maximum input sequence length |
|
| `max_length` | int | 512 | Maximum input sequence length |
|
||||||
| `trust_remote_code` | bool | False | Allow remote code execution |
|
| `normalize` | bool | True | Whether to normalize scores to [0, 1] range |
|
||||||
|
|
||||||
### Advanced Configuration
|
### Advanced Configuration
|
||||||
|
|
||||||
@@ -48,10 +48,7 @@ config = {
|
|||||||
"device": "cuda",
|
"device": "cuda",
|
||||||
"batch_size": 16,
|
"batch_size": 16,
|
||||||
"max_length": 512,
|
"max_length": 512,
|
||||||
"trust_remote_code": False,
|
"normalize": True
|
||||||
"model_kwargs": {
|
|
||||||
"torch_dtype": "float16"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,7 +151,7 @@ m.add("I enjoy reading science fiction books", user_id="alice")
|
|||||||
# Search with reranking
|
# Search with reranking
|
||||||
results = m.search(
|
results = m.search(
|
||||||
"What outdoor activities do I enjoy?",
|
"What outdoor activities do I enjoy?",
|
||||||
user_id="alice",
|
filters={"user_id": "alice"},
|
||||||
rerank=True
|
rerank=True
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -208,10 +205,7 @@ config = {
|
|||||||
"model": "BAAI/bge-reranker-base",
|
"model": "BAAI/bge-reranker-base",
|
||||||
"device": "cpu",
|
"device": "cpu",
|
||||||
"batch_size": 8, # Smaller batch size
|
"batch_size": 8, # Smaller batch size
|
||||||
"max_length": 256, # Shorter sequences
|
"max_length": 256 # Shorter sequences
|
||||||
"model_kwargs": {
|
|
||||||
"torch_dtype": "float16" # Half precision
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,7 +226,7 @@ config = {
|
|||||||
try:
|
try:
|
||||||
results = m.search(
|
results = m.search(
|
||||||
"test query",
|
"test query",
|
||||||
user_id="alice",
|
filters={"user_id": "alice"},
|
||||||
rerank=True
|
rerank=True
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -240,7 +234,7 @@ except Exception as e:
|
|||||||
# Fall back to vector search only
|
# Fall back to vector search only
|
||||||
results = m.search(
|
results = m.search(
|
||||||
"test query",
|
"test query",
|
||||||
user_id="alice",
|
filters={"user_id": "alice"},
|
||||||
rerank=False
|
rerank=False
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@@ -251,13 +245,13 @@ except Exception as e:
|
|||||||
|
|
||||||
```python
|
```python
|
||||||
# Use a private model from Hugging Face
|
# Use a private model from Hugging Face
|
||||||
|
# Set HF_TOKEN environment variable for private model access
|
||||||
config = {
|
config = {
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "huggingface",
|
"provider": "huggingface",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "your-org/custom-reranker",
|
"model": "your-org/custom-reranker",
|
||||||
"device": "cuda",
|
"device": "cuda"
|
||||||
"use_auth_token": "your-hf-token"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,13 +305,13 @@ config = {
|
|||||||
import os
|
import os
|
||||||
os.environ["TRANSFORMERS_CACHE"] = "/path/to/cache"
|
os.environ["TRANSFORMERS_CACHE"] = "/path/to/cache"
|
||||||
|
|
||||||
# Or use offline mode
|
# Or use offline mode by setting the environment variable
|
||||||
|
# TRANSFORMERS_OFFLINE=1 before running your script
|
||||||
config = {
|
config = {
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "huggingface",
|
"provider": "huggingface",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "BAAI/bge-reranker-base",
|
"model": "BAAI/bge-reranker-base"
|
||||||
"local_files_only": True
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ config = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "llm",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-4o-mini",
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
@@ -90,7 +90,7 @@ config = {
|
|||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "llm",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-4o-mini",
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
@@ -150,7 +150,7 @@ Score from 0.0 to 1.0. Provide only the numerical score."""
|
|||||||
|
|
||||||
config = {
|
config = {
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "llm",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "gpt-4o-mini",
|
"model": "gpt-4o-mini",
|
||||||
"provider": "openai",
|
"provider": "openai",
|
||||||
@@ -169,7 +169,7 @@ Use different LLM providers for reranking:
|
|||||||
# Using Anthropic Claude
|
# Using Anthropic Claude
|
||||||
anthropic_config = {
|
anthropic_config = {
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "llm",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "claude-3-haiku-20240307",
|
"model": "claude-3-haiku-20240307",
|
||||||
"provider": "anthropic",
|
"provider": "anthropic",
|
||||||
@@ -181,7 +181,7 @@ anthropic_config = {
|
|||||||
# Using local Ollama model
|
# Using local Ollama model
|
||||||
ollama_config = {
|
ollama_config = {
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "llm",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "llama2:7b",
|
"model": "llama2:7b",
|
||||||
"provider": "ollama",
|
"provider": "ollama",
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ m.add("I'm vegetarian", user_id="alice")
|
|||||||
# Search with LLM reranking
|
# Search with LLM reranking
|
||||||
results = m.search(
|
results = m.search(
|
||||||
"What foods should I avoid?",
|
"What foods should I avoid?",
|
||||||
user_id="alice",
|
filters={"user_id": "alice"},
|
||||||
rerank=True
|
rerank=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ config = {
|
|||||||
"model": "gpt-4o-mini"
|
"model": "gpt-4o-mini"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
||||||
@@ -60,7 +60,7 @@ For better performance, use GPU acceleration:
|
|||||||
|
|
||||||
```python Python
|
```python Python
|
||||||
config = {
|
config = {
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
||||||
@@ -80,7 +80,7 @@ from mem0 import Memory
|
|||||||
config = {
|
config = {
|
||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
||||||
@@ -117,7 +117,7 @@ You can use any HuggingFace cross-encoder model:
|
|||||||
```python Python
|
```python Python
|
||||||
# Using a different model
|
# Using a different model
|
||||||
config = {
|
config = {
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "cross-encoder/stsb-distilroberta-base",
|
"model": "cross-encoder/stsb-distilroberta-base",
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ config = {
|
|||||||
"model": "gpt-4o-mini"
|
"model": "gpt-4o-mini"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rerank": {
|
"reranker": {
|
||||||
"provider": "zero_entropy",
|
"provider": "zero_entropy",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "zerank-1", # or "zerank-1-small"
|
"model": "zerank-1", # or "zerank-1-small"
|
||||||
@@ -71,7 +71,7 @@ os.environ["ZERO_ENTROPY_API_KEY"] = "your-api-key"
|
|||||||
config = {
|
config = {
|
||||||
"vector_store": {"provider": "chroma"},
|
"vector_store": {"provider": "chroma"},
|
||||||
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
"llm": {"provider": "openai", "config": {"model": "gpt-4o-mini"}},
|
||||||
"rerank": {"provider": "zero_entropy", "config": {"model": "zerank-1"}}
|
"reranker": {"provider": "zero_entropy", "config": {"model": "zerank-1"}}
|
||||||
}
|
}
|
||||||
|
|
||||||
memory = Memory.from_config(config)
|
memory = Memory.from_config(config)
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ The number of candidates sent to the reranker significantly impacts performance:
|
|||||||
```python
|
```python
|
||||||
# Optimal candidate sizes for different rerankers
|
# Optimal candidate sizes for different rerankers
|
||||||
config_map = {
|
config_map = {
|
||||||
"cohere": {"initial_candidates": 100, "top_n": 10},
|
"cohere": {"initial_candidates": 100, "top_k": 10},
|
||||||
"sentence_transformer": {"initial_candidates": 50, "top_n": 10},
|
"sentence_transformer": {"initial_candidates": 50, "top_k": 10},
|
||||||
"huggingface": {"initial_candidates": 30, "top_n": 5},
|
"huggingface": {"initial_candidates": 30, "top_k": 5},
|
||||||
"llm_reranker": {"initial_candidates": 20, "top_n": 5}
|
"llm_reranker": {"initial_candidates": 20, "top_k": 5}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ config = {
|
|||||||
"config": {
|
"config": {
|
||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
||||||
"batch_size": 16, # Process multiple candidates at once
|
"batch_size": 16, # Process multiple candidates at once
|
||||||
"top_n": 10
|
"top_k": 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,7 @@ config = {
|
|||||||
"provider": "cohere",
|
"provider": "cohere",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "rerank-english-v3.0",
|
"model": "rerank-english-v3.0",
|
||||||
"top_n": 10,
|
"top_k": 10,
|
||||||
"max_chunks_per_doc": 10, # Limit chunk processing
|
"max_chunks_per_doc": 10, # Limit chunk processing
|
||||||
"return_documents": False # Reduce response size
|
"return_documents": False # Reduce response size
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ config = {
|
|||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
||||||
"device": "cuda", # Use GPU when available
|
"device": "cuda", # Use GPU when available
|
||||||
"batch_size": 32,
|
"batch_size": 32,
|
||||||
"top_n": 10,
|
"top_k": 10,
|
||||||
"max_length": 512 # Limit input length
|
"max_length": 512 # Limit input length
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,10 +107,9 @@ config = {
|
|||||||
"provider": "huggingface",
|
"provider": "huggingface",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "BAAI/bge-reranker-base",
|
"model": "BAAI/bge-reranker-base",
|
||||||
"use_fp16": True, # Half precision for speed
|
|
||||||
"max_length": 512,
|
"max_length": 512,
|
||||||
"batch_size": 8,
|
"batch_size": 8,
|
||||||
"top_n": 10
|
"top_k": 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,17 +123,11 @@ config = {
|
|||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "llm_reranker",
|
"provider": "llm_reranker",
|
||||||
"config": {
|
"config": {
|
||||||
"llm": {
|
"provider": "openai",
|
||||||
"provider": "openai",
|
"model": "gpt-4o-mini", # Faster than gpt-4o
|
||||||
"config": {
|
"temperature": 0.0, # Deterministic results
|
||||||
"model": "gpt-3.5-turbo", # Faster than gpt-4
|
"max_tokens": 100, # Limit response length
|
||||||
"temperature": 0, # Deterministic results
|
"top_k": 5 # Fewer results for faster processing
|
||||||
"max_tokens": 500 # Limit response length
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"batch_ranking": True, # Rank multiple at once
|
|
||||||
"top_n": 5, # Fewer results for faster processing
|
|
||||||
"timeout": 10 # Request timeout
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -201,12 +194,12 @@ class CachedReranker:
|
|||||||
### Model Caching
|
### Model Caching
|
||||||
```python
|
```python
|
||||||
# Pre-load models to avoid initialization overhead
|
# Pre-load models to avoid initialization overhead
|
||||||
|
# Set SENTENCE_TRANSFORMERS_HOME env var to control cache location
|
||||||
config = {
|
config = {
|
||||||
"reranker": {
|
"reranker": {
|
||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
||||||
"cache_folder": "/path/to/model/cache",
|
|
||||||
"device": "cuda"
|
"device": "cuda"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,14 +211,14 @@ config = {
|
|||||||
### Async Configuration
|
### Async Configuration
|
||||||
```python
|
```python
|
||||||
import asyncio
|
import asyncio
|
||||||
from mem0 import Memory
|
from mem0 import AsyncMemory
|
||||||
|
|
||||||
async def parallel_search(config, queries, user_id):
|
async def parallel_search(config, queries, user_id):
|
||||||
memory = Memory.from_config(config)
|
memory = AsyncMemory.from_config(config)
|
||||||
|
|
||||||
# Process multiple queries concurrently
|
# Process multiple queries concurrently
|
||||||
tasks = [
|
tasks = [
|
||||||
memory.search_async(query, user_id=user_id)
|
memory.search(query, filters={"user_id": user_id})
|
||||||
for query in queries
|
for query in queries
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -249,8 +242,7 @@ config = {
|
|||||||
"config": {
|
"config": {
|
||||||
"device": "cuda",
|
"device": "cuda",
|
||||||
"model": "cross-encoder/ms-marco-electra-base",
|
"model": "cross-encoder/ms-marco-electra-base",
|
||||||
"batch_size": 64, # Larger batch for GPU
|
"batch_size": 64 # Larger batch for GPU
|
||||||
"fp16": True # Half precision
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -268,8 +260,7 @@ config = {
|
|||||||
"provider": "sentence_transformer",
|
"provider": "sentence_transformer",
|
||||||
"config": {
|
"config": {
|
||||||
"device": "cpu",
|
"device": "cpu",
|
||||||
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2",
|
"model": "cross-encoder/ms-marco-MiniLM-L-6-v2"
|
||||||
"num_workers": 4 # Parallel processing
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user