Rag.Retriever.FullText (rag v0.3.4)
View SourceFull-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
@type t() :: %Rag.Retriever.FullText{repo: module()}
Functions
@spec retrieve(t(), String.t(), keyword()) :: {:ok, [Rag.Retriever.result()]} | {:error, term()}
Retrieve documents using full-text search.
Parameters
retriever- The FullText retriever structquery_text- Text query stringopts- 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: %{}}]}
@spec supports_embedding?() :: boolean()
Returns false - FullText retriever doesn't use embeddings.
@spec supports_text_query?() :: boolean()
Returns true - FullText retriever supports text queries.