Skip to main content
For the complete documentation index for agents and LLMs, see llms.txt.

OpenSearchBM25Retriever

Retrieve documents from an OpenSearchDocumentStore using the keyword-based BM25 algorithm.

Key Features

  • Keyword-based full-text retrieval using BM25 scoring.
  • Configurable number of results with top_k.
  • Supports fuzzy matching for handling typos and misspellings.
  • Supports metadata filtering to narrow down the search space.
  • Supports custom OpenSearch queries for advanced use cases.
  • Configurable filter policy (replace or merge) for runtime filters.

Configuration

  1. Drag the OpenSearchBM25Retriever component onto the canvas from the Component Library.
  2. Click on the component to open the configuration panel.
  3. On the General tab:
    • Configure the OpenSearchDocumentStore with your OpenSearch instance details.
    • Set top_k to control the maximum number of documents to retrieve.
  4. Go to the Advanced tab to configure fuzziness, all_terms_must_match, scale_score, filter_policy, and custom_query.

Connections

OpenSearchBM25Retriever receives the user query as a text string, typically from the Input component. It sends retrieved documents to downstream components such as PromptBuilder or a ranker.

Source Code

To check this component's source code, open bm25_retriever.py in the Haystack Core Integrations repository.

Usage Examples

Basic Configuration

  OpenSearchBM25Retriever:
type: haystack_integrations.components.retrievers.opensearch.bm25_retriever.OpenSearchBM25Retriever
init_parameters:
filters:
fuzziness: 0
top_k: 10
scale_score: false
all_terms_must_match: false
filter_policy: replace
custom_query:
raise_on_failure: true
document_store:
type: haystack_integrations.document_stores.opensearch.document_store.OpenSearchDocumentStore
init_parameters:
hosts:
index: my-index
embedding_dim: 768

Using the Component in a Pipeline

# haystack-pipeline
components:
OpenSearchBM25Retriever:
type: haystack_integrations.components.retrievers.opensearch.bm25_retriever.OpenSearchBM25Retriever
init_parameters:
filters:
fuzziness: 0
top_k: 10
scale_score: false
all_terms_must_match: false
filter_policy: replace
raise_on_failure: true
document_store:
type: haystack_integrations.document_stores.opensearch.document_store.OpenSearchDocumentStore
init_parameters:
hosts:
index: my-index
max_chunk_bytes: 104857600
embedding_dim: 768
return_embedding: false
create_index: true

connections: []

max_runs_per_component: 100

metadata: {}

inputs:
query:
- OpenSearchBM25Retriever.query

outputs:
documents: OpenSearchBM25Retriever.documents

Parameters

Inputs

ParameterTypeDescription
querystrThe text query to search for.
filtersOptional[Dict[str, Any]]Filters to apply to the search results.
top_kOptional[int]The maximum number of documents to return.
fuzzinessOptional[Union[int, str]]Fuzziness for the BM25 query to allow for typos.
scale_scoreOptional[bool]Whether to scale the document scores.
custom_queryOptional[Dict[str, Any]]A custom OpenSearch query to override the default BM25 query.
all_terms_must_matchOptional[bool]Whether all query terms must be present in the matching documents.

Outputs

ParameterTypeDescription
documentsList[Document]The retrieved documents.

Init Parameters

These are the parameters you can configure in Pipeline Builder:

ParameterTypeDefaultDescription
document_storeOpenSearchDocumentStoreAn instance of OpenSearchDocumentStore.
filtersOptional[Dict[str, Any]]NoneDefault filters applied when running the retriever.
fuzzinessUnion[int, str]0Fuzziness for matching. Use "AUTO" for automatic fuzziness based on term length.
top_kint10The maximum number of documents to retrieve.
scale_scoreboolFalseWhether to scale scores to the range 0 to 1.
all_terms_must_matchboolFalseIf True, all query terms must appear in matching documents.
filter_policyUnion[str, FilterPolicy]FilterPolicy.REPLACEPolicy for how runtime filters are applied relative to init-time filters.
custom_queryOptional[Dict[str, Any]]NoneA custom OpenSearch query structure.
raise_on_failureboolTrueWhether to raise an error when a query fails.

Run Method Parameters

These are the parameters you can configure for the component's run() method. This means you can pass these parameters at query time through the API, in Playground, or when running a job. For details, see Modify Pipeline Parameters at Query Time.

ParameterTypeDefaultDescription
querystrThe text query to search for.
filtersOptional[Dict[str, Any]]NoneFilters to apply at query time.
all_terms_must_matchOptional[bool]NoneOverride the init-time setting.
top_kOptional[int]NoneOverride the init-time top_k setting.
fuzzinessOptional[Union[int, str]]NoneOverride the init-time fuzziness setting.
scale_scoreOptional[bool]NoneOverride the init-time scale_score setting.
custom_queryOptional[Dict[str, Any]]NoneOverride the init-time custom query.