Haystack v0.6.0 introduces DAG-based Pipelines, an OpenDistro DocumentStore, and new QA pipeline types including Generative and FAQ.
$ git clone --branch v0.6.0 https://github.com/deepset-ai/haystack.git # already have the repo? check out this version: $ git checkout v0.6.0
from haystack.pipeline import Pipeline, JoinDocuments
class QueryClassifier:
outgoing_edges = 2
def run(self, **kwargs):
if '?' in kwargs['query']:
return (kwargs, 'output_1')
else:
return (kwargs, 'output_2')
pipe = Pipeline()
pipe.add_node(component=QueryClassifier(), name='QueryClassifier', inputs=['Query'])
pipe.add_node(component=es_retriever, name='ESRetriever', inputs=['QueryClassifier.output_1'])
pipe.add_node(component=dpr_retriever, name='DPRRetriever', inputs=['QueryClassifier.output_2'])
pipe.add_node(component=JoinDocuments(join_mode='concatenate'), name='JoinResults', inputs=['ESRetriever', 'DPRRetriever'])
pipe.add_node(component=reader, name='QAReader', inputs=['JoinResults'])
res = pipe.run(query='What did Einstein work on?', top_k_retriever=1) from haystack.pipeline import GenerativeQAPipeline pipe = GenerativeQAPipeline(generator=rag_generator, retriever=retriever) res = pipe.run(query='What causes aurora borealis?', top_k_retriever=3)
- ›Adds Pipeline class with add_node(), run(), draw(), and set_node() methods for composing search pipelines as Directed Acyclic Graphs (DAGs) with Retrievers, Readers, Generators, and custom nodes.
- ›Adds JoinDocuments(join_mode=...) node with score aggregation support to merge results from multiple Retrievers in a single Pipeline.
- ›Adds
ExtractiveQAPipeline,DocumentSearchPipeline,GenerativeQAPipeline, and FAQPipeline default pipeline classes inhaystack.pipeline, replacing the deprecated Finder class. - ›Adds
OpenDistroElasticsearchDocumentStoreto support Open Distro / AWS-hosted Elasticsearch deployments. - ›Adds
refresh_typeparameter to ElasticsearchDocumentStore.update_embeddings().
+7 moreshow less
- ›Adds
return_embeddingparameter to get_all_documents(). - ›Adds
update_existing_documentssupport to the SQL and FAISS DocumentStores. - ›Adds
filtersparameter to delete_all_documents(). - ›Adds MAP (Mean Average Precision) retriever metric for open-domain evaluation.
- ›Enables dynamic parameter updates for FARMReader at inference time.
- ›Adds GPU support for the RAG generator.
- ›Scales dot-product scores into probabilities in DocumentStore.
- !All
questionparameters are renamed toqueryacross Readers, Retrievers, and other components (including the predict() methods of Readers); any code passingquestion=keyword arguments will break.