Rag.Retriever.FullText (rag v0.3.4)

View Source

Full-text retriever using PostgreSQL tsvector search.

This retriever uses PostgreSQL's built-in full-text search capabilities with ts_rank for relevance scoring.

Usage

# Create a fulltext retriever
retriever = %Rag.Retriever.FullText{repo: MyApp.Repo}

# Retrieve using a text query
{:ok, results} = Rag.Retriever.retrieve(retriever, "search terms", limit: 10)

Result Format

Returns results with a score field representing ts_rank:

  • score = PostgreSQL ts_rank value
  • Higher scores indicate better keyword matches
  • Typically ranges from 0.0 to 1.0

Search Features

  • Supports multiple search terms (combined with AND)
  • Uses English text search configuration
  • Orders results by relevance (ts_rank)

Summary

Functions

Retrieve documents using full-text search.

Returns false - FullText retriever doesn't use embeddings.

Returns true - FullText retriever supports text queries.

Types

t()

@type t() :: %Rag.Retriever.FullText{repo: module()}

Functions

retrieve(retriever, query_text, opts \\ [])

@spec retrieve(t(), String.t(), keyword()) ::
  {:ok, [Rag.Retriever.result()]} | {:error, term()}

Retrieve documents using full-text search.

Parameters

  • retriever - The FullText retriever struct
  • query_text - Text query string
  • opts - Options:
    • :limit - Maximum number of results (default: 10)

Returns

  • {:ok, results} - List of results with ts_rank scores
  • {:error, reason} - Error during retrieval

Examples

iex> retriever = %FullText{repo: MyRepo}
iex> FullText.retrieve(retriever, "machine learning", limit: 5)
{:ok, [%{id: 1, content: "...", score: 0.85, metadata: %{}}]}

supports_embedding?()

@spec supports_embedding?() :: boolean()

Returns false - FullText retriever doesn't use embeddings.

supports_text_query?()

@spec supports_text_query?() :: boolean()

Returns true - FullText retriever supports text queries.