Skip to content

Reranking

Re-order documents by semantic relevance to a query. Useful for improving RAG retrieval quality.

Quick Example

php
use Atlasphp\Atlas\Atlas;

$response = Atlas::rerank('cohere', 'rerank-v3.5')
    ->query('What is dependency injection?')
    ->documents([
        'Laravel uses a service container for dependency injection.',
        'PHP 8.2 introduced readonly classes.',
        'Dependency injection is a design pattern that removes hard-coded dependencies.',
        'Atlas is an AI execution layer for Laravel.',
    ])
    ->asReranked();

$top = $response->top();
echo $top->document;  // "Dependency injection is a design pattern..."
echo $top->score;     // 0.98

Basic Usage

php
$response = Atlas::rerank('cohere', 'rerank-v3.5')
    ->query('How do I configure providers?')
    ->documents($searchResults)
    ->asReranked();

// Get results sorted by relevance
foreach ($response->results as $result) {
    echo "{$result->index}: {$result->document} (score: {$result->score})\n";
}

Filtering Results

Top N

php
$response = Atlas::rerank('cohere', 'rerank-v3.5')
    ->query('Laravel routing')
    ->documents($docs)
    ->topN(5)
    ->asReranked();

// Only the top 5 results are returned

Minimum Score

php
$response = Atlas::rerank('cohere', 'rerank-v3.5')
    ->query('Laravel routing')
    ->documents($docs)
    ->minScore(0.5)
    ->asReranked();

// Only results scoring above 0.5 are returned

Max Tokens Per Document

php
$response = Atlas::rerank('cohere', 'rerank-v3.5')
    ->query('authentication')
    ->documents($longDocuments)
    ->maxTokensPerDoc(512)
    ->asReranked();

Re-ordering Original Items

Use reorder() to sort your original array by relevance:

php
$articles = Article::all()->toArray();
$texts = array_column($articles, 'content');

$response = Atlas::rerank('cohere', 'rerank-v3.5')
    ->query($userQuery)
    ->documents($texts)
    ->asReranked();

// Re-order articles by relevance
$sorted = $response->reorder($articles);

Response Methods

php
$response->results;          // All RerankResult objects
$response->top();            // Highest scoring result
$response->topN(3);          // Top 3 results
$response->aboveScore(0.7);  // Results above threshold
$response->indexes();        // Original indexes in relevance order
$response->reorder($items);  // Re-sort an array by relevance

Supported Providers

ProviderModels
Coherererank-v3.5, rerank-english-v3.0, rerank-multilingual-v3.0
Jinajina-reranker-v2-base-multilingual

RerankResponse

Property/MethodTypeDescription
resultsarray<RerankResult>Ranked results
metaarrayAdditional metadata
top()?RerankResultHighest scoring result
topN(int)arrayTop N results
aboveScore(float)arrayResults above threshold
indexes()arrayOriginal indexes sorted by relevance
reorder(array)arrayRe-sort items by relevance

RerankResult

PropertyTypeDescription
indexintOriginal document index
documentstringThe document text
scorefloatRelevance score (0-1)

Queue Support

php
Atlas::rerank('cohere', 'rerank-v3.5')
    ->query($searchQuery)
    ->documents($candidates)
    ->queue()
    ->asReranked()
    ->then(function ($response) {
        cache()->put("ranked:{$searchQuery}", $response->results, 3600);
    });

Builder Reference

MethodDescription
query(string)The search query
documents(array)Documents to rank
topN(int)Limit to top N results
maxTokensPerDoc(int)Max tokens per document
minScore(float)Minimum relevance score threshold
withProviderOptions(array)Provider-specific options
withMeta(array)Metadata for middleware/events
withMiddleware(array)Per-request provider middleware
queue()Dispatch to queue

Released under the MIT License.