Replies: 3 comments 6 replies
-
|
Awesome! Onward and upward 🚀🚀🚀 |
Beta Was this translation helpful? Give feedback.
-
|
Very nice, quick question, when are you planning to release the master repo that has the ray>=1.9.1 change that resolves the log4j security issue? Many thanks |
Beta Was this translation helpful? Give feedback.
-
|
Hihi, Is it possible to upgrade Pillow from 8.3.2 to 9.0.0 because: Pillow package for python contains a flaw in pil/pdfparser.py that is triggered as carriage return characters are not properly handled in a regular expression. this may allow a context-dependent attacker to hang or slow down a python process using the library. Severity Source: CVSS V3 from RBS Many thanks, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
🎁 Haystack 1.0
We worked hard to bring you an early Christmas present: 1.0 is out! In the last months, we re-designed many essential parts of Haystack, introduced new features, and simplified many user-facing methods. We believe Haystack is now much easier to use and a solid base for many exciting upcoming features that we plan. This release is a major milestone on our journey with you, the community, and we want to thank you again for all the great contributions, discussions, questions, and bug reports that helped us to build a better Haystack. This journey has just started 🚀
⭐ Highlights
Improved Evaluation of Pipelines
Evaluation helps you find out how well your system is doing on your data. This includes Pipeline level evaluation to ensure that the system's output is really what you're after, but also Node level evaluation so that you can figure out whether it's your Reader or Retriever that is holding back the performance.
In this release, evaluation is much simpler and cleaner to perform. All the functionality is now baked into the
Pipelineclass and you can kick off the process by providingLabelorMultiLabelobjects to thePipeline.eval()method.The output is an
EvaluationResultobject which stores each Node's prediction for each sample in a PandasDataFrame- so you can easily inspect granular predictions and potential mistakes without re-running the whole thing. There is aEvaluationResult.calculate_metrics()method which will return the relevant metrics for your evaluation and you can print a convenient summary report via the new .If you'd like to start evaluating your own systems on your own data, check out our Evaluation Tutorial!
Table QA
A lot of valuable information is stored in tables - we've heard this again and again from the community. While they are an efficient structured data format, it hasn't been possible to search for table contents using traditional NLP techniques. But now, with the new
TableTextRetrieverandTableReaderour users have all the tools they need to query for relevant tables and perform Question Answering.The
TableTextRetrieveris the result of our team's research into table retrieval methods which you can read about in this paper that was presented at EMNLP 2021. Behind the scenes, it uses three transformer-based encoders - one for text passages, one for tables, and one for the query. However, in Haystack, you can swap it in for any other dense retrieval model and start working with tables. TheTableReaderis built upon the TAPAS model and when handed table containing Documents, it can return a single cell as an answer or perform an aggregation operation on a set of cells to form a final answer.Have a look at the Table QA documentation if you'd like to learn more or dive into the Table QA tutorial to start unlocking the information in your table data.
Improved Debugging of Pipelines & Nodes
We've made debugging much simpler and also more informative! As long as your node receives a boolean
debugargument, it can propagate its input, output or even some custom information to the output of the pipeline. It is now a built-in feature of all existing nodes and can also easily be inherited by your custom nodes.{'ESRetriever': {'input': {'debug': True, 'query': 'Who is the father of Arya Stark?', 'root_node': 'Query', 'top_k': 1}, 'output': {'documents': [<Document: {'content': "\n===In the Riverlands===\nThe Stark army reaches the Twins, a bridge strong", ...}>] ...}To find out more about this feature, check out debugging. To learn how to define custom debug information, have a look at custom debugging.
FARM Migration
Those of you following Haystack from its first days will know that Haystack first evolved out of the FARM framework. While FARM is designed to handle diverse NLP models and tasks, Haystack gives full end-to-end support to search and question answering use cases with a focus on coordinating all components that take a proof-of-concept into production.
Haystack has always relied on FARM for much lower-level processing and modeling. To reduce the implementation overhead and simplify debugging, we have migrated the relevant parts of FARM into the new
haystack/modelingpackage.Migration to v1.0
With the release of v1.0, we decided to make some bold changes.
We believe this has brought a significant improvement in usability and makes the project more future-proof.
While this does come with a few breaking changes, and we do our best to guide you on how to go from v0.x to v1.0.
For more details see the Migration Guide and if you need more guidance, just reach out via Slack.
New Package Structure & Changed Imports
Due to the ever-increasing number of Nodes and Document Stores being integrated into Haystack,
we felt the need to implement a repository structure that makes it easier to navigate to what you're looking for. We've also shortened the length of the imports.
haystack.document_storesdocument_storetodocument_storeshaystack.nodeshaystack.pipelinespipelinetopipelineshaystack.utils➡️ For the large majority of imports, the old style still works but this will be deprecated in future releases!
Primitive Objects
Instead of relying on dictionaries, Haystack now standardizes more of the inputs and outputs of Nodes using the following primitive classes:
With these, there is now support for data structures beyond text and the REST API schema is built around their structure.
Using these classes also allows for the autocompletion of fields in your IDE.
Tip: To see examples of these primitive classes being returned, have a look at Ready-Made Pipelines.
Many of the fields in these classes have also been renamed or removed.
You can see a more comprehensive list of them in this Github issue.
Below, we will go through a few cases that are likely to impact established workflows.
Input Document Format
This dictionary schema used to be the recommended way to prepare your data to be indexed.
Now we strongly recommend using our dedicated
Documentclass as a replacement.The
textfield has been renamedcontentto accommodate for cases where it is used for another data format,for example in Table QA.
Click here to see code example
v0.x:
v1.0:
From here, you can take the same steps to write Documents into your Document Store.
Response format of Reader
All Reader Nodes now return Answer objects instead of dictionaries.
Click here to see code example
v0.x:
v1.0:
Label Structure
The attributes of the Label object have gone through some changes.
To see their current structure see Label.
Click here to see code example
v0.x:
v1.0:
REST API Format
The response format for the
/querymatches that of the primitive objects, only in JSON form.This means, there are similar breaking changes as described above for the
Answerformat of a Reader.Particularly, the names of the offset fields have changed and need to be aligned to the new format when coming from Haystack v0.x.
For detailed examples and guidance see the Migration Guide.
Other breaking changes
🤓 Detailed Changes
Pipeline
debuganddebug_logsparams to standard pipelines by @tholor in Adddebuganddebug_logsparams to standard pipelines #1586Models
TransformersAdamWtoAdamWby @ZanSara in DPR training: RenameTransformersAdamWtoAdamW#1613DocumentStores
delete_documents(filter=...)across all document stores by @ZanSara in Standardizedelete_documents(filter=...)across all document stores #1509scrollparam in ElasticsearchDocumentStore by @Timoeller in Allow setting ofscrollparam in ElasticsearchDocumentStore #1645skip_missing_embeddingsparam) by @cvgoudar in Facilitate concurrent query / indexing in Elasticsearch with dense retrievers (newskip_missing_embeddingsparam) #1762REST API
/documents/get_by_filtersendpoint by @ZanSara in Add/documents/get_by_filtersendpoint #1580on-failureto all containers by @ZanSara in Add a restart policyon-failureto all containers #1664/queryendpoint in REST API by @tholor in Fix usage of filters in/queryendpoint in REST API #1774UI / Demo
Documentation
Other Changes
haystackpackage by @ZanSara in Refactoring of thehaystackpackage #1624print_answersby @ZanSara in Fixprint_answers#1743pipeline.eval()by @julian-risch in Update evaluation tutorial to cover the newpipeline.eval()#1765New Contributors
❤️ Thanks to all contributors and the whole community!
This discussion was created from the release 1.0.0.
Beta Was this translation helpful? Give feedback.
All reactions