📘 **TELUS Agriculture & Consumer Goods** 如何通过 **Haystack Agents** 转变促销交易

塑造 Haystack 2.0

即将推出的 Haystack 版本详情以及如何提供反馈

自 Haystack v1.15 以来,我们一直在后台缓慢引入 Haystack 的新组件和功能,为 Haystack 2.0(或 v2)做准备。在过去几个月里,我们在 Haystack API 的新设计上付出了努力,现在我们希望开始让 Haystack 社区参与我们的思考过程,并逐步收集您的意见和反馈。在本文中,我们想重点介绍 v2 Haystack API 设计的进展、新设计想要实现的目标以及我们目前的考虑。

❓ 新的 2.0 版本意味着什么?

Haystack v2 将是对 Haystack 节点和管道设计的重大更新。 我们相信管道概念是构建 LLM 应用程序的基本要求和最佳选择。因此,管道和节点将继续成为 Haystack v2 的基础。然而,一般的管道结构、节点 API 以及 DocumentStore 和 Retriever 之间的连接将发生变化。因此,这对 Haystack 用户来说将是一个破坏性更改。

🏆 Haystack 2.0 背后的动机

在 deepset,我们投入了大量思考和精力,以保持 Haystack 成为一个健壮、用户友好且可用于生产的 LLM 框架。 随着我们多年来收集 Haystack 社区的反馈,并观察到 NLP 领域的进展,如 LLM 和 Agents,我们看到有必要在 Haystack v2 中更新管道结构,以更好地满足用户的需求和最先进的 NLP 方法。

准备就绪后,Haystack v2 将引入许多改进和灵活性,最重要的是,它将使 Haystack 用户更容易实现 Haystack 的自定义和扩展。新的管道结构将允许更灵活、更健壮、更强大的管道。随着我们改变管道结构,我们将把所有组件适配到新结构,因此,将重写其中许多组件。这次更新为我们提供了一个机会来增强管道结构,以便更好地利用 LLM,改进我们的 Agent 和 Memory 实现,更好地定义 DocumentStore 和 Retriever 之间的连接,等等。

📍 Haystack 2.0 的当前状态

Haystack v2 仍在开发中。 我们正在与社区持续互动,定义更强大、更健壮的 LLM 框架的要求,并实现与 NLP 进展相符的新 Haystack API。

虽然仍处于 Beta 阶段,但您可以在 Haystack 仓库的 preview 包中找到目前已实现的功能。要了解组件将如何以及何时迁移,请查看 Migrate Components to Pipeline v2 的路线图项,我们在其中跟踪有关 Haystack v2 的问题和 PR。有关 v2 当前状态的详细概述,请查看 Sara 关于 Haystack v2 的演示文稿

此外,这是迄今为止塑造 Haystack v2 设计的全部提案列表

⭐ Haystack 2.0 的亮点

  • 管道 **Nodes** 现在将称为 **Components**。

  • 新的管道结构将为 LLM 提供更好的支持。 组件之间的灵活连接将引入新的机制,例如并行分支和循环,从而扩展管道的功能。组件将控制管道的输入和输出。因此,具有动态输入参数的组件(例如使用带有变量的提示的组件)将轻松集成到管道中。总体而言,这些改进不仅可以改善线性工作流,还可以确保管道与 LLM 的性质无缝对齐。

    以下是在 Haystack v2 中 RAG 管道可能的样子。👇🏼

    请记住,这些组件仍在开发中,并正在“ Haystack 2.0 中的 LLM 支持”提案中讨论。

    Representation of a RAG pipeline in Haystack v2
    Haystack v2 中 RAG 管道的表示

  • Components API 将发生变化。 组件将定义其所有输入和输出的名称和类型。新 API 将降低复杂性,并使创建自定义组件(例如第三方 API 和数据库的 Haystack 集成)变得更加容易。组件之间的连接将在查询时进行验证,Haystack 将生成更好的错误消息,并提供有关如何修复错误的说明。

  • Retrievers 将针对 DocumentStore 进行自定义,而不是针对检索方法。 每个 DocumentStore 将拥有自己的 Retriever,该 Retriever 将高度专业化,适用于该特定 DocumentStore,处理其所有要求,而不受通用接口的限制。集成新的 DocumentStore 将会更容易,并且专用 Retriever 将能够更快地适应 DocumentStore 的新功能。

  • Embedder 将作为一个单独的组件,而不是 Retriever 的一部分。 Retrievers 将不再负责创建 embeddings,新的 Embedder 组件将处理 embeddings 的创建。Retriever 类将被简化,并且添加对新 embedding 提供商和方法的支持将更加直接。

  • 管道序列化将更加灵活,并针对人类进行优化。 将使用 JSON、TOML、HCL 作为序列化格式。将能够序列化和反序列化共享相同组件实例的管道。

➡️ 下一步是什么?

随着我们对 Haystack 2.0 的迭代,我们将在 GitHub Discussion: Shaping Haystack 2.0 中分享设计提案,并就我们需要您提供输入的议题展开讨论。随着我们分享更多关于 Haystack 2.0 的信息,请随时分享您的反馈或疑虑。您可以通过 GitHub Discussion 中的评论区或 Haystack Discord 服务器 与我们联系以提问。