Rag.Reranker behaviour (rag v0.3.4)

View Source

Behaviour for reranking retrieved results.

Rerankers improve retrieval quality by rescoring documents based on relevance to the query.

Usage

# Using Passthrough reranker (no reranking)
reranker = %Rag.Reranker.Passthrough{}
{:ok, docs} = Rag.Reranker.rerank(reranker, query, documents)

# Using LLM-based reranker
reranker = Rag.Reranker.LLM.new()
{:ok, docs} = Rag.Reranker.rerank(reranker, query, documents, top_k: 5)

Document Format

Documents should be maps with the following structure:

%{
  id: any(),           # Unique identifier
  content: String.t(), # The text content
  score: float(),      # Relevance score
  metadata: map()      # Additional metadata
}

Reranker Implementations

Summary

Callbacks

Rerank documents based on their relevance to the query.

Functions

Convenience function to rerank documents.

Types

document()

@type document() :: %{id: any(), content: String.t(), score: float(), metadata: map()}

Callbacks

rerank(reranker, query, documents, opts)

@callback rerank(
  reranker :: struct(),
  query :: String.t(),
  documents :: [document()],
  opts :: keyword()
) :: {:ok, [document()]} | {:error, term()}

Rerank documents based on their relevance to the query.

Parameters

  • reranker - The reranker struct implementing this behaviour
  • query - The search query string
  • documents - List of documents to rerank
  • opts - Additional options (implementation-specific)

Returns

  • {:ok, reranked_documents} - Documents sorted by relevance
  • {:error, reason} - If reranking fails

Functions

rerank(reranker, query, documents, opts \\ [])

@spec rerank(struct(), String.t(), [document()], keyword()) ::
  {:ok, [document()]} | {:error, term()}

Convenience function to rerank documents.

Delegates to the appropriate reranker implementation based on the struct type.

Examples

reranker = Rag.Reranker.LLM.new()
{:ok, docs} = Rag.Reranker.rerank(reranker, "What is Elixir?", documents)

# With options
{:ok, docs} = Rag.Reranker.rerank(reranker, query, documents, top_k: 5)