You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: proposals/text/4284-drop-basecomponent.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ Pipelines are the fundamental component of Haystack and one of its most powerful
17
17
18
18
However, as it currently stands, the `Pipeline` object is also imposing a number of limitations on its use, most of which are likely to be unnecessary. Some of these include:
19
19
20
-
- DAGs. DAGs are safe, but loops could enable many more usecases, like `Agents`.
20
+
- DAGs. DAGs are safe, but loops could enable many more use-cases, like `Agents`.
21
21
22
22
-`Pipeline` can select among branches, but cannot run such branches in parallel, except for some specific and inconsistent corner cases. For further reference and discussions on the topic, see:
23
23
-https://github.com/deepset-ai/haystack/pull/2593
@@ -26,7 +26,7 @@ However, as it currently stands, the `Pipeline` object is also imposing a number
26
26
27
27
-`Pipeline`s are forced to have one single input and one single output node, and the input node has to be called either `Query` or `Indexing`, which softly forbids any other type of pipeline.
28
28
29
-
- The fixed set of allowed inputs (`query`, `file_paths`, `labels`, `documents`, `meta`, `params` and `debug`) blocks several usecases, like summarization pipelines, translation pipelines, even some sort of generative pipelines.
29
+
- The fixed set of allowed inputs (`query`, `file_paths`, `labels`, `documents`, `meta`, `params` and `debug`) blocks several use-cases, like summarization pipelines, translation pipelines, even some sort of generative pipelines.
30
30
31
31
-`Pipeline`s are often required to have a `DocumentStore`_somewhere_ (see below), even in situation where it wouldn't be needed.
32
32
- For example, `Pipeline` has a `get_document_store()` method which iterates over all nodes looking for a `Retriever`.
@@ -728,7 +728,7 @@ Other features planned for addition are:
728
728
729
729
Parameters can be passed to nodes at several stages, and they have different priorities. Here they're listed from least priority to top priority.
730
730
731
-
1.**Node's default `__init__` parameters**: nodes's `__init__` can provide defaults. Those are used only if no other parameters are passed at any stage.
731
+
1.**Node's default `__init__` parameters**: node's `__init__` can provide defaults. Those are used only if no other parameters are passed at any stage.
732
732
2.**Node's `__init__` parameters**: at initialization, nodes might be given values for their parameters. These are stored within the node instance and, if the instance is reused in the pipeline several times, they will be the same on all of them
733
733
3.**Pipeline's `add_node()`**: When added to the pipeline, users can specify some parameters that have to be given only to that node specifically. They will override the node instance's parameters, but they will be applied only in that specific location of the pipeline and not be applied to other instances of the same node anywhere else in the graph.
734
734
4.**Pipeline's `run()`**: `run()` also accepts a dictionary of parameters that will override all conflicting parameters set at any level below, quite like Pipeline does today.
@@ -947,4 +947,4 @@ These changes are going to be release with Haystack 1.x in a hidden internal pac
947
947
We will progressively add nodes to this `haystack.v2` package and build a folder structure under it (`haystack.v2.nodes`, `haystack.v2.stores`, ...) version after version, until we believe the content of the package is usable. Documentation will be built in parallel and we will progressively start pushing users towards the 2.0 API.
948
948
Power users like dC and other Haystack experts will be able to test out these changes from the start and provide feedback while still in Haystack 1.x.
949
949
950
-
Once we're confident that the v2 version covers all of Haystack v1.x usecases, Haystack 2.0 will be released and the packages are going to be switched: the content of `haystack` will be moved into `haystack.v1` and deprecated, and the content of `haystack.v2` will me moved under `haystack`. A few 2.x versions later, `haystack.v1` will then be dropped.
950
+
Once we're confident that the v2 version covers all of Haystack v1.x use-cases, Haystack 2.0 will be released and the packages are going to be switched: the content of `haystack` will be moved into `haystack.v1` and deprecated, and the content of `haystack.v2` will me moved under `haystack`. A few 2.x versions later, `haystack.v1` will then be dropped.
Copy file name to clipboardExpand all lines: proposals/text/4370-documentstores-and-retrievers.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
9
9
Haystack's Document Stores are a very central component in Haystack and, as the name suggest, they were initially designed around the concept of `Document`.
10
10
11
-
As the framework grew, so did the number of Document Stores and their API, until the point where keeping them aligned aligned on the same feature set started to become a serious challenge.
11
+
As the framework grew, so did the number of Document Stores and their API, until the point where keeping them aligned on the same feature set started to become a serious challenge.
12
12
13
13
In this proposal we outline a reviewed design of the same concept.
14
14
@@ -101,7 +101,7 @@ class MyDocumentStore:
101
101
102
102
The contract is quite narrow to encourage the use of specialized nodes. `DocumentStore`s' primary focus should be storing documents: the fact that most vector stores also support retrieval should be outside of this abstraction and made available through methods that do not belong to the contract. This allows `Retriever`s to carry out their tasks while avoiding clutter on `DocumentStore`s that do not support some features.
103
103
104
-
Note also how the concept of `index` is not present anymore, as it it mostly ES-specific.
104
+
Note also how the concept of `index` is not present anymore, as it is mostly ES-specific.
105
105
106
106
For example, a `MemoryDocumentStore` could offer the following API:
Copy file name to clipboardExpand all lines: proposals/text/5540-llm-support-2.0.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -186,7 +186,7 @@ Such template names **cannot be changed at runtime**.
186
186
187
187
The design above derives from one Canals limitation: component’s sockets need to be all known the latest at `__init__` time, in order for the connections to be made and validated. Therefore, we need to know all the prompt variables before building the pipelines, because the prompt variables are inputs of the `run()` method.
188
188
189
-
However, earlier iterations of Canals did support so-called “true variadic” components: components that do not need to know what they will be connected to, and build the input sockets at need. Such components of course lack input validation, but enable usecases like the above.
189
+
However, earlier iterations of Canals did support so-called “true variadic” components: components that do not need to know what they will be connected to, and build the input sockets at need. Such components of course lack input validation, but enable use-cases like the above.
190
190
191
191
If we decide that Canals should support again such components, we would be able to rewrite `PromptBuilder` to take a prompt as its input parameter and just accept any other incoming input, on the assumption that users knows that they’re doing.
Copy file name to clipboardExpand all lines: proposals/text/6784-integrations-for-eval-framworks.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ Other LLM application frameworks such as LlamaIndex already provide support for
41
41
42
42
As with evaluation in Haystack 1.x, we reaffirm the core idea of implementing different pipelines for different concerns. We consider evaluation a separate process and consequently separate the execution of RAGand the metric calculation into two different pipelines. This allows for greater flexibility -for instance, the evaluation pipeline could contain an additional component that routes the inputs to different evaluator components based on certain criteria, etc. Another example would be the ability to convert the inputs from/to different formats before passing them to the evaluator.
43
43
44
-
A further advantage of this approach is that any tool we develop in the future to facilitate introspection and observability of pipelines can transparently be appled to evaluation as well.
44
+
A further advantage of this approach is that any tool we develop in the future to facilitate introspection and observability of pipelines can transparently be applied to evaluation as well.
45
45
46
46
The implementation of the three evaluator components should follow the general guidelines for custom component development. There are two approaches we could take:
0 commit comments