Skip to main content
Version: 2.18

AnswerJoiner

Merges multiple answers from different Generators into a single list.

Most common position in a pipelineIn query pipelines, after Generators and, subsequently, components that return a list of answers such as AnswerBuilder
Mandatory run variables“answers”: A nested list of answers to be merged, received from the Generator. This input is variadic, meaning you can connect a variable number of components to it.
Output variables“answers”: A merged list of answers
API referenceJoiners
GitHub linkhttps://github.com/deepset-ai/haystack/blob/main/haystack/components/joiners/answer_joiner.py

Overvew​

AnswerJoiner joins input lists of Answer objects from multiple connections and returns them as one list.

You can optionally set the top_k parameter, which specifies the maximum number of answers to return. If you don’t set this parameter, the component returns all answers it receives.

Usage​

In this simple example pipeline, the AnswerJoiner merges answers from two instances of Generators:

python
from haystack.components.builders import AnswerBuilder
from haystack.components.joiners import AnswerJoiner

from haystack.core.pipeline import Pipeline

from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage

query = "What's Natural Language Processing?"
messages = [ChatMessage.from_system("You are a helpful, respectful and honest assistant. Be super concise."),
ChatMessage.from_user(query)]

pipe = Pipeline()
pipe.add_component("gpt-4o", OpenAIChatGenerator(model="gpt-4o"))
pipe.add_component("llama", OpenAIChatGenerator(model="gpt-3.5-turbo"))
pipe.add_component("aba", AnswerBuilder())
pipe.add_component("abb", AnswerBuilder())
pipe.add_component("joiner", AnswerJoiner())

pipe.connect("gpt-4o.replies", "aba")
pipe.connect("llama.replies", "abb")
pipe.connect("aba.answers", "joiner")
pipe.connect("abb.answers", "joiner")

results = pipe.run(data={"gpt-4o": {"messages": messages},
"llama": {"messages": messages},
"aba": {"query": query},
"abb": {"query": query}})