发布说明
✨ 亮点
🚅 重构 Pipeline.run() 逻辑以更好地处理循环
Pipeline.run() 的内部逻辑已得到大量重构,使其比以前更强大、更可靠。此新实现使运行图中包含循环的 Pipeline 更加容易。它还修复了没有循环的 Pipeline 中的一些边界情况。
📝 引入 LoggingTracer
通过新的 LoggingTracer,用户可以实时检查日志,查看其 Pipeline 中发生的一切。此功能旨在改善用户在实验和原型制作过程中的体验。
import logging
from haystack import tracing
from haystack.tracing.logging_tracer import LoggingTracer
logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", level=logging.WARNING)
logging.getLogger("haystack").setLevel(logging.DEBUG)
tracing.tracer.is_content_tracing_enabled = True # to enable tracing/logging content (inputs/outputs)
tracing.enable_tracing(LoggingTracer())
⬆️ 升级说明
-
已移除
Pipelineinit 参数debug_path。我们不再支持此功能。 -
已移除
Pipelineinit 参数max_loops_allowed。请使用max_runs_per_component代替。 -
已移除
PipelineMaxLoops异常。请使用PipelineMaxComponentRuns代替。 -
已移除
PyPDFToDocument使用的已弃用的默认转换器类haystack.components.converters.pypdf.DefaultConverter。来自
haystack<2.7.0且使用默认转换器的 Pipeline YAML 必须按以下方式更新:# Old components: Comp1: init_parameters: converter: type: haystack.components.converters.pypdf.DefaultConverter type: haystack.components.converters.pypdf.PyPDFToDocument # New components: Comp1: init_parameters: converter: null type: haystack.components.converters.pdf.PDFToTextConverter来自
haystack<2.7.0且使用自定义转换器类的 Pipeline YAML,可以通过简单地使用haystack==2.6.x加载它们,然后再次保存为 YAML 来进行升级。 -
如果
sender和receiver是同一个 Component,Pipeline.connect()现在将引发PipelineConnectError。我们不再支持此用例。
🚀 新功能
-
已添加组件
StringJoiner,用于将不同组件的字符串连接成字符串列表。 -
已改进序列化/反序列化错误,以便在可能时提供有关问题组件的额外上下文。
-
增强了 DOCX 转换器,使其除了文本内容外,还支持表格提取。该转换器支持 CSV 和 Markdown 表格格式,为表示从 DOCX 文档提取的表格数据提供了灵活的选项。
-
向 FileTypeRouter 组件添加了一个新参数
additional_mimetypes。这允许用户指定其他 MIME 类型映射,从而确保在不同的运行时环境和 Python 版本中进行正确的文件分类。 -
引入
LoggingTracer,它将所有跟踪发送到日志。可以通过以下方式启用它:
import logging from haystack import tracing from haystack.tracing.logging_tracer import LoggingTracer logging.basicConfig(format="%(levelname)s - %(name)s - %(message)s", level=logging.WARNING) logging.getLogger("haystack").setLevel(logging.DEBUG) tracing.tracer.is_content_tracing_enabled = True # to enable tracing/logging content (inputs/outputs) tracing.enable_tracing(LoggingTracer()) -
对
Pipeline.run()的内部逻辑进行根本性重构。重构使其更可靠并涵盖更多用例。我们修复了一些问题,这些问题曾导致具有循环的Pipeline行为不可预测且组件执行顺序不明确。 -
每个组件运行的跟踪 span 现在都附带 pipeline run span 对象。这使用户可以同时跟踪多个 pipeline 运行的执行。
⚡️ 增强说明
- 向
HuggingFaceAPIGenerator和HuggingFaceLocalGenerator添加了streaming_callback运行参数,允许用户传递一个回调函数,该函数将在生成响应的每个块之后被调用。 SentenceWindowRetriever现在在运行时支持window_size参数,可以覆盖在构造函数中设置的值。- 在
ConditionalRouter中添加了输出类型验证。将validate_output_type设置为True将启用一个检查,以验证路由的实际输出是否返回声明的类型。如果不匹配,将引发ValueError。 - 减少了
numpy的使用,以加快导入速度。 - 改进了
FileTypeRouter中的文件类型检测,特别是对于 Microsoft Office 文件格式,如 .docx 和 .pptx。此增强确保了在不同环境(包括 AWS Lambda 函数和没有预装 office 套件的系统)中的一致行为。 FiletypeRouter现在支持在run方法中传递元数据 (meta)。提供元数据后,源将内部转换为ByteStream对象,并添加元数据。这个新参数简化了预处理/索引 pipeline 的工作。SentenceTransformersDocumentEmbedder现在支持config_kwargs,用于在加载模型配置时提供附加参数。SentenceTransformersTextEmbedder现在支持config_kwargs,用于在加载模型配置时提供附加参数。- 以前,
numpy被固定为<2.0以避免在多个核心集成中出现兼容性问题。此固定已被移除,haystack 可以与numpy1.x和2.x一起工作。如有必要,我们将在需要它的特定核心集成中固定numpy版本。
⚠️ 弃用说明
PyPDFToDocument组件使用的DefaultConverter类已被弃用。其功能将在 2.7.0 版本中合并到该组件中。
🐛 Bug 修复
- 组件的序列化数据现在被明确强制要求是以下基本 Python 数据类型之一:
str、int、float、bool、list、dict、set、tuple或None。 - 解决了在 MIME 类型定义受限的环境(例如 AWS Lambda 函数)中,某些文件类型(如 .docx、.pptx)被错误地归类为“未分类”的问题。
- 修复了包含 JSON 数据的日志因字符串插值而丢失的问题。
- 在
HuggingFaceAPIGenerator组件中使用了 Hugging Face Hub 类型的正向引用,以防止导入错误。 - 修复了
PyPDFToDocument组件的序列化,以防止默认转换器被不必要地序列化。 - 撤销了对
PyPDFConverter的更改,该更改破坏了2.6.0之前的 YAML 的反序列化。
