AgenticSingleRetriever
Iteratively deepens a single child's retrieval under LLM supervision.
Round 1 delegates to the child with no size override (its own configuration
drives). After each round but the last, the pool is judged; an insufficient
verdict's top_k becomes the next delegation's retrieval-size hint,
clamped to the remaining budget, with a progress guarantee that turns a
zero-progress request into the smallest one that can add a chunk.
A composite child interprets that hint under its own contract. The default
hybrid child keeps its configured budget and may therefore fill the pool
before the first judgement; raise max_chunks or choose a child that
honours the hint when deeper rounds are required.
Parameters
- enable_retrieve_then_expand : boolean, default=
False - Widen each retrieved chunk with its neighbouring chunks before the chunks are returned as the retriever's context.
- expand_window : integer, default=
3 - Total number of chunks in the expanded window, the retrieved one included. Odd values are centred exactly on the retrieved chunk; even values keep the extra chunk after it. Windows never leave the document, and overlapping windows merge into one concatenated chunk.
- children : array, default=
[{'component': 'ParallelRetriever', 'params': {'children': [{'component': 'BM25Retriever', 'params': {'b': 0.75, 'delta': 0.0, 'k1': 1.5, 'similarity_function': 'cosine', 'top_k': 5, 'vectorizer': {'component': 'BagOfWordsConverter', 'params': {'analyzer': 'word', 'custom_stop_words': None, 'drop_source_columns': False, 'lower_bound_ngrams': 1, 'lowercase': True, 'max_df': 1.0, 'max_features': None, 'min_df': 0.0, 'stop_words': None, 'strip_accents': None, 'upper_bound_ngrams': 1}}}}, {'component': 'DenseEmbeddingRetriever', 'params': {'embedding_model': {'component': 'ParaphraseMultilingualMiniLML12V2Embedding', 'params': {'batch_size': 32, 'device': 'CPU', 'normalize': True, 'overflow_strategy': 'truncate'}}, 'similarity_metric': 'cosine', 'top_k': 5}}], 'merge_strategy': 'round_robin'}}] - The single child retriever that is delegated to. The retriever is blind to its identity: the prompt never names it. Defaults to the default hybrid retriever; you can change it.
- max_chunks : integer, default=
10 - Maximum number of chunks the accumulated pool may hold.
- max_iters : integer, default=
3 - Maximum number of retrieval rounds. The final round is not judged, so there are at most this many minus one LLM calls.
- function_call_max_trials : integer, default=
3 - Maximum number of function-calling evaluation attempts, including the first. When the verdict is unusable or has no valid operation left, the evaluation is retried until this limit is reached.
- prompt : object
- The prompt used to judge whether the retrieved chunks suffice.
- llm_model : object
- The language model that judges retrieval sufficiency. Defaults to the default RAG function-calling LLM; you can change it.
Methods
retrieve(self, query: 'str', **kwargs: 'Any') -> 'Tuple[List[Chunk], Dict[str, Any]]'
AgenticSingleRetrieverRetrieve by delegating to the child and iteratively deepening.
Parameters
- query : str
- The search query string.
- **kwargs
- Unused; delegation sizes come from the LLM verdicts.
Returns
- Tuple[List[Chunk], Dict[str, Any]]
- The final pool (at most
max_chunkschunks) and this retriever's trace node, whosechildrenholds every delegated child node and whoseroundsholds one summary per retrieval round.
score_chunks(self, chunk_ids: 'List[int]', query: 'str') -> 'List[Tuple[int, float]]'
AgenticSingleRetrieverScore chunks by delegating to the single child.
Parameters
- chunk_ids : List[int]
- List of chunk IDs to score.
- query : str
- The search query string.
Returns
- List[Tuple[int, float]]
- A list of
(chunk_id, distance)tuples from the child.
add(self, child: DashAI.back.models.RAG.retrievers.base_retriever.BaseRetriever) -> None
CompositeRetrieverAdd a child retriever.
close(self) -> 'None'
AgenticRetrieverRelease the evaluation LLM and nested agentic children.
Returns
- None
- Nothing.
expand_retrieved_chunks(self, chunks: List[DashAI.back.models.RAG.documents.chunk.Chunk], window_size: int) -> List[DashAI.back.models.RAG.documents.chunk.Chunk]
BaseRetrieverExpand chunks into centred windows and merge overlapping windows.
get_children(self) -> List[DashAI.back.models.RAG.retrievers.base_retriever.BaseRetriever]
CompositeRetrieverReturn a copy of the children list.
get_credential(self, name: str)
ConfigObjectResolve a registered credential component by name.
Parameters
- name : str
- Credential component class name (e.g. "HuggingFaceCredential").
Returns
- BaseCredential
- An instance of the requested credential component.
get_id(self) -> int | None
BaseRetrieverReturn the database ID of this retriever, or None.
get_metadata(cls) -> Dict[str, Any]
BaseRetrieverReturn the UI metadata shared by every retriever.
Returns
- Dict[str, Any]
- Dictionary with the icon shown for the retriever in the frontend and, when declared, its representation template and the category the retriever pickers group it under.
get_representation(cls) -> DashAI.back.core.utils.MultilingualString | None
BaseRetrieverReturn the retriever's representation template, if any.
Returns
- MultilingualString | None
- The template with
{param}/{nested.param}placeholders, orNonewhen the frontend should fall back to the component description.
get_schema(cls) -> dict
ConfigObjectGenerates the component related Json Schema.
Returns
- dict
- Dictionary representing the Json Schema of the component.
get_schema_summary(self) -> DashAI.back.models.RAG.retrievers.retrieval_contracts.SchemaSummary
BaseRetrieverReturn a recursive, JSON-serializable summary of this retriever.
Returns
- SchemaSummary
{"class": ..., "params": ...}pluschildrenwhen present.
get_schema_summary_parameters(cls) -> Dict[str, str]
BaseRetrieverReturn a copy of the summary parameter mapping for the frontend.
init_model(self) -> None
BaseRetrieverCalled by the factory after inject_infra().
inject_infra(self, env_RAG_path: str | os.PathLike, chunks: Dict[int, Dict[int, DashAI.back.models.RAG.documents.chunk.Chunk]], persistence: Any, documents: Optional[Dict[int, DashAI.back.models.RAG.documents.source_document.SourceDocument]] = None) -> None
BaseRetrieverInject runtime infrastructure after schema validation.
load(self, filename: str = '') -> None
BaseRetrieverRestore the retriever's state from disk.
merge_expanded_chunks(self, chunks: List[DashAI.back.models.RAG.documents.chunk.Chunk]) -> List[DashAI.back.models.RAG.documents.chunk.Chunk]
BaseRetrieverMerge overlapping expanded units without widening plain chunks.
remove(self, child: DashAI.back.models.RAG.retrievers.base_retriever.BaseRetriever) -> None
CompositeRetrieverRemove a child retriever.
save(self, filename: str = '') -> None
BaseRetrieverPersist the retriever's state to disk.
set_id(self, id: int) -> None
BaseRetrieverAssign a database ID to this retriever.
set_trace_params(self, params: Dict[str, Any]) -> None
BaseRetrieverStore a JSON-serializable snapshot of this retriever's configuration.
Parameters
- params : Dict[str, Any]
- Raw construction parameters captured by the factory before any nested component reference is consumed. A deep copy is stored so later mutations of the original mapping cannot affect trace rendering.
validate_and_transform(self, raw_data: dict) -> dict
ConfigObjectIt takes the data given by the user to initialize the model and returns it with all the objects that the model needs to work.
Parameters
- raw_data : dict
- A dictionary with the data provided by the user to initialize the model.
Returns
- dict
- A validated dictionary with the necessary objects.