From 2569ed7f5daf1974fd85341d471f6215f775222a Mon Sep 17 00:00:00 2001 From: Julian Risch Date: Tue, 28 Jul 2026 14:23:27 +0200 Subject: [PATCH] chore: pin archived haystack-experimental, drop stale reference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `haystack-experimental` is archived; `0.19.0.post1` is its final release and the `ChatMessageStore` components were not adopted into Haystack core. Tutorial 48 genuinely needs those components, so pin the final release rather than removing the tutorial. Replace the beta notice with an archived notice and repoint the component links from the API reference pages (being removed) to the tagged source. guide_evaluation recommended `EvaluationHarness`, discontinued in haystack-experimental 0.7.0, and linked an example notebook that no longer exists. Drop the recommendation. Tutorial 47 needed no changes โ€” #475 already removed its experimental references. Co-Authored-By: Claude Opus 5 (1M context) --- index.toml | 2 +- tutorials/48_Conversational_RAG.ipynb | 16 +++++++++------- tutorials/guide_evaluation.ipynb | 2 -- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/index.toml b/index.toml index b5cce264..c1db7ecd 100644 --- a/index.toml +++ b/index.toml @@ -246,7 +246,7 @@ notebook = "48_Conversational_RAG.ipynb" aliases = [] completion_time = "20 min" created_at = 2025-12-30 -dependencies = ["haystack-experimental>=0.16.0", "datasets"] +dependencies = ["haystack-experimental==0.19.0.post1", "datasets"] featured = true [[tutorial]] diff --git a/tutorials/48_Conversational_RAG.ipynb b/tutorials/48_Conversational_RAG.ipynb index fe37f6bf..ed687f4c 100644 --- a/tutorials/48_Conversational_RAG.ipynb +++ b/tutorials/48_Conversational_RAG.ipynb @@ -11,7 +11,7 @@ "- **Level**: Advanced\n", "- **Time to complete**: 20 minutes\n", "- **Components Used**: [`Agent`](https://docs.haystack.deepset.ai/docs/agent), [`ChatPromptBuilder`](https://docs.haystack.deepset.ai/docs/chatpromptbuilder), [`InMemoryBM25Retriever`](https://docs.haystack.deepset.ai/docs/inmemorybm25retriever) [`OpenAIChatGenerator`](https://docs.haystack.deepset.ai/docs/openaichatgenerator)\n", - "- **Experimental Components Used**: [`ChatMessageStore`](https://docs.haystack.deepset.ai/reference/experimental-chatmessage-store-api), [`ChatMessageRetriever`](https://docs.haystack.deepset.ai/reference/experimental-retrievers-api#chatmessageretriever), [`ChatMessageWriter`](https://docs.haystack.deepset.ai/reference/experimental-writers-api)\n", + "- **Archived Components Used**: [`InMemoryChatMessageStore`](https://github.com/deepset-ai/haystack-experimental/blob/v0.19.0/haystack_experimental/chat_message_stores/in_memory.py), [`ChatMessageRetriever`](https://github.com/deepset-ai/haystack-experimental/blob/v0.19.0/haystack_experimental/components/retrievers/chat_message_retriever.py), [`ChatMessageWriter`](https://github.com/deepset-ai/haystack-experimental/blob/v0.19.0/haystack_experimental/components/writers/chat_message_writer.py)\n", "- **Prerequisites**: You need an [OpenAI API Key](https://platform.openai.com/api-keys)\n", "- **Goal**: After completing this tutorial, you'll have learned how to incorporate a conversational history into a RAG pipeline to enable multi-turn conversations grounded in documents.\n", "\n", @@ -22,9 +22,11 @@ "\n", "**Why is this useful?** By incorporating conversational memory, a RAG system can remember earlier parts of a conversation. This allows users to ask natural follow-up questions without restating context, while the pipeline continues to retrieve relevant information and generate accurate responses based on the full conversation history.\n", "\n", - "> ๐Ÿงช **Beta Feature Notice**:\n", + "> โš ๏ธ **Archived Feature Notice**:\n", ">\n", - "> The **ChatMessageStore** feature is currently in **beta**, available in the [haystack-experimental](https://github.com/deepset-ai/haystack-experimental) repository. We'd love your feedback, join the conversation in [this GitHub discussion](https://github.com/deepset-ai/haystack-experimental/discussions/420) and help us shape this feature!" + "> The **ChatMessageStore** components used here live in the [haystack-experimental](https://github.com/deepset-ai/haystack-experimental) package, which is now **archived and no longer maintained**. They were not adopted into Haystack core. This tutorial pins the final release, `haystack-experimental==0.19.0.post1`, which stays installable from PyPI but is only tested against the version of Haystack that was current in February 2026.\n", + ">\n", + "> If you are building something new, prefer keeping chat history in your own application state, or use a [memory store](https://docs.haystack.deepset.ai/docs/mem0memorystore) for persistence across sessions." ] }, { @@ -35,7 +37,7 @@ "source": [ "## Installation\n", "\n", - "Install Haystack, `haystack-experimental` and `datasets` with pip:" + "Install Haystack, the final `haystack-experimental` release and `datasets` with pip:" ] }, { @@ -48,7 +50,7 @@ "source": [ "%%bash\n", "\n", - "pip install -q haystack-ai \"haystack-experimental>=0.15.0\" datasets" + "pip install -q haystack-ai \"haystack-experimental==0.19.0.post1\" datasets" ] }, { @@ -108,7 +110,7 @@ "\n", "Conversation history is stored as `ChatMessage` objects in an `InMemoryChatMessageStore`. The `ChatMessageRetriever` reads past messages from the store, while the `ChatMessageWriter` appends new messages after each interaction. Together, these components allow the pipeline to persist and reuse chat history across multiple turns.\n", "\n", - "Import these components from the [haystack-experimental](https://github.com/deepset-ai/haystack-experimental) package:" + "Import these components from the archived [haystack-experimental](https://github.com/deepset-ai/haystack-experimental) package:" ] }, { @@ -473,7 +475,7 @@ "- delete_messages\n", "- delete_all_messages\n", "\n", - "For more information check out our ChatMessageStore docs at https://docs.haystack.deepset.ai/reference/experimental-chatmessage-store-api" + "For more information check out the `InMemoryChatMessageStore` source at https://github.com/deepset-ai/haystack-experimental/blob/v0.19.0/haystack_experimental/chat_message_stores/in_memory.py" ] }, { diff --git a/tutorials/guide_evaluation.ipynb b/tutorials/guide_evaluation.ipynb index 65f32d6c..5479b275 100644 --- a/tutorials/guide_evaluation.ipynb +++ b/tutorials/guide_evaluation.ipynb @@ -68,8 +68,6 @@ "\n", "For a comprehensive evaluation, make sure to evaluate specific steps in the pipeline (e.g., retrieval or generation) and the performance of the entire pipeline. To get inspiration on evaluating your pipeline, have a look at ๐Ÿง‘๐Ÿผโ€๐Ÿณ [Cookbook: Prompt Optimization with DSPy](https://github.com/deepset-ai/haystack-cookbook/blob/main/notebooks/prompt_optimization_with_dspy.ipynb), which explains the details of prompt optimization and evaluation, or read ๐Ÿ“š [Article: RAG Evaluation with Prometheus 2](https://haystack.deepset.ai/blog/rag-evaluation-with-prometheus-2), which explores using open LMs to evaluate with custom metrics.\n", "\n", - "If you're looking for a straightforward and efficient solution for RAG, consider using `EvaluationHarness`, introduced with Haystack 2.3 through [`haystack-experimental`](https://github.com/deepset-ai/haystack-experimental/tree/main). You can learn more by running the example ๐Ÿ’ป [Notebook: Evaluating RAG Pipelines with EvaluationHarness](https://github.com/deepset-ai/haystack-experimental/blob/main/examples/rag_eval_harness.ipynb).\n", - "\n", "## 5. Running Evaluation\n", "\n", "The objective of running evaluations is to measure your pipeline's performance and detect any regressions. To track progress, it is essential to establish baseline metrics using off-the-shelf approaches such as BM25 for keyword retrieval or \"sentence-transformers\" models for embeddings. Then, continue evaluating your pipeline with various parameters: adjust the `top_k` value, experiment with different embedding models, tweak the `temperature`, and benchmark the results to identify what works best for your use case. If labeled data is needed for evaluation, you can use datasets that include ground-truth documents and answers. Such datasets are available on [Hugging Face datasets](https://huggingface.co/datasets) or in the [haystack-evaluation](https://github.com/deepset-ai/haystack-evaluation/tree/main/datasets) repository.\n",