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.
-
🎁 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
Pipeline
class and you can kick off the process by providingLabel
orMultiLabel
objects to thePipeline.eval()
method.The output is an
EvaluationResult
object 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
TableTextRetriever
andTableReader
our users have all the tools they need to query for relevant tables and perform Question Answering.The
TableTextRetriever
is 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. TheTableReader
is 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
debug
argument, 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.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/modeling
package.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_stores
document_store
todocument_stores
haystack.nodes
haystack.pipelines
pipeline
topipelines
haystack.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
Document
class as a replacement.The
text
field has been renamedcontent
to 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
/query
matches that of the primitive objects, only in JSON form.This means, there are similar breaking changes as described above for the
Answer
format 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
debug
anddebug_logs
params to standard pipelines by @tholor in Adddebug
anddebug_logs
params to standard pipelines #1586Models
TransformersAdamW
toAdamW
by @ZanSara in DPR training: RenameTransformersAdamW
toAdamW
#1613DocumentStores
delete_documents(filter=...)
across all document stores by @ZanSara in Standardizedelete_documents(filter=...)
across all document stores #1509scroll
param in ElasticsearchDocumentStore by @Timoeller in Allow setting ofscroll
param in ElasticsearchDocumentStore #1645skip_missing_embeddings
param) by @cvgoudar in Facilitate concurrent query / indexing in Elasticsearch with dense retrievers (newskip_missing_embeddings
param) #1762REST API
/documents/get_by_filters
endpoint by @ZanSara in Add/documents/get_by_filters
endpoint #1580on-failure
to all containers by @ZanSara in Add a restart policyon-failure
to all containers #1664/query
endpoint in REST API by @tholor in Fix usage of filters in/query
endpoint in REST API #1774UI / Demo
Documentation
Other Changes
haystack
package by @ZanSara in Refactoring of thehaystack
package #1624print_answers
by @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