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

Use Amazon Bedrock Models

You can use models hosted in your own Bedrock account.


You can use embedding models and LLMs hosted on Amazon Bedrock through Bedrock's API. You can connect to your Bedrock account using your Bedrock API key of IAM access key. For a full list of supported models, see Amazon Bedrock documentation.

Prerequisites

  • To connect using your Bedrock API key, you must have a valid API key.
  • To connect using your IAM access key, you must have a valid access key ID and secret access key for your Amazon region.

For details, see Amazon Bedrock model access and Amazon Bedrock documentation.

Using Bedrock Models

First, connect Haystack Enterprise Platform to Amazon Bedrock by passing your Bedrock API key or IAM access key on the Integrations page. You can do so for a single workspace or for the whole organization:

Add Workspace-Level Integration

  1. Click your profile icon and choose Settings.
  2. Go to Workspace>Integrations.
  3. Find the provider you want to connect and click Connect next to them.
  4. Enter the API key and any other required details.
  5. Click Connect. You can use this integration in pipelines and indexes in the current workspace.

Add Organization-Level Integration

  1. Click your profile icon and choose Settings.
  2. Go to Organization>Integrations.
  3. Find the provider you want to connect and click Connect next to them.
  4. Enter the API key and any other required details.
  5. Click Connect. You can use this integration in pipelines and indexes in all workspaces in the current organization.

Then, add a component that uses the Bedrock model to your pipeline. Here is a list of components by the model type they use:

  • Embedding models (used to calculate embeddings for text):
    • AmazonBedrockTextEmbedder: Calculates embeddings for text, such as query. Often used in query pipelines to embed query and then pass it to an embedding retriever.
    • AmazonBedrockDocumentEmbedder: Calculates embeddings for documents. Often used in indexes to embed documents and pass them to DocumentWriter.
      Embedding Models in Query Pipelines and Indexes

      The embedding model you use to embed documents in your indexing pipeline must be the same as the embedding model you use to embed the query in your query pipeline.

      This means the embedders for your indexing and query pipelines must match. For example, if you use CohereDocumentEmbedder to embed your documents, you should use CohereTextEmbedder with the same model to embed your queries.

  • LLMs:
    • LLM: Generates text, often used in RAG pipelines.
  • Rankers:
    • AmazonBedrockRanker: Ranks documents based on their similarity to the query using Amazon Bedrock models.
Legacy

The previously used AmazonBedrockGenerator, AmazonBedrockChatGenerator, DeepsetAmazonBedrockGenerator, and DeepsetAmazonBedrockChatGenerator are deprecated. Use the LLM component instead.

Usage Examples

This is an example of how to use embedding models and an LLM hosted on Bedrock in an index and a query pipeline (each in a separate tab):

components:
# ...
splitter:
type: haystack.components.preprocessors.document_splitter.DocumentSplitter
init_parameters:
split_by: word
split_length: 250
split_overlap: 30

document_embedder:
type: haystack_integrations.components.embedders.amazon_bedrock.document_embedder.AmazonBedrockDocumentEmbedder
init_parameters:
model: "cohere.embed-english-v3"

writer:
type: haystack.components.writers.document_writer.DocumentWriter
init_parameters:
document_store:
type: haystack_integrations.document_stores.opensearch.document_store.OpenSearchDocumentStore
init_parameters:
embedding_dim: 768
similarity: cosine
policy: OVERWRITE

connections: # Defines how the components are connected
# ...
- sender: splitter.documents
receiver: document_embedder.documents
- sender: document_embedder.documents
receiver: writer.documents