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",