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.