亮点
Multiplexer组件被证明难以解释和理解。在审查了它的用例后,文档被重写,组件被重命名为BranchJoiner,以更好地解释其功能。
将‘OPENAI_TIMEOUT’和‘OPENAI_MAX_RETRIES’添加到OpenAI组件中。
⬆️ 升级说明
BranchJoiner具有与Multiplexer完全相同的接口。要升级您的代码,只需将任何Multiplexer的出现重命名为BranchJoiner,并相应地调整导入。
🚀 新功能
- 添加
BranchJoiner以最终取代Multiplexer AzureOpenAIGenerator和AzureOpenAIChatGenerator现在可以通过传递底层AzureOpenAI客户端的超时来配置。
⚡️ 增强说明
ChatPromptBuilder现在支持在运行时更改其模板。这允许您定义一个默认模板,然后根据您的运行时需求进行更改。- 如果一个基于LLM的评估器(例如
Faithfulness或ContextRelevance)在初始化时设置了raise_on_failure=False,并且对LLM的调用失败或LLM输出了无效的JSON,那么该样本的分数将设置为NaN而不是引发异常。用户会收到警告,告知请求失败的数量。 - 为ExtractiveReader的模型调用添加推理模式。这可以防止在pytorch的推理时间计算梯度。
DocumentCleaner类有一个可选属性keep_id,如果设置为True,它将在清理后保持文档ID不变。- DocumentSplitter现在有一个可选的split_threshold参数。如果您希望不分割仅比允许的split_length稍长的输入,请使用此参数。当分块时,如果其中一个块小于split_threshold,该块将被与前一个块连接。这避免了过小的、无意义的块。
- 通过避免为每次新查询重新创建整个倒排索引,重新实现了
InMemoryDocumentStoreBM25搜索,支持增量索引。此更改还消除了对haystack_bm25的依赖。请参阅[PR #7549]( https://github.com/deepset-ai/haystack/pull/7549)以了解完整上下文。 - 通过直接在ByteStreams上设置MIME类型来改进MIME类型管理,从而增强了对不同文件类型的整体处理和路由。此更新使MIME类型数据更一致地可访问,并简化了处理各种文档格式的过程。
PromptBuilder现在支持在运行时更改其模板(例如,用于提示工程)。这允许您定义一个默认模板,然后根据您的运行时需求进行更改。- 现在,您可以通过设置‘OPENAI_TIMEOUT’和‘OPENAI_MAX_RETRIES’环境变量或在__init__中传递它们来设置OpenAI组件上的超时和max_retries参数。
DocumentJoiner组件的run方法现在接受一个top_k参数,允许用户指定查询时返回的最大文档数。这修复了问题#7702。- 强制对基于LLM的OpenAI评估器使用JSON模式,以便它们始终返回有效的JSON输出。这是为了确保输出始终是统一格式,无论输入如何。
- 使代码库中的
warm_up()用法保持一致。 - 为pipeline类创建类层次结构,并将run逻辑移到子类中。为引入多个运行策略做准备。
- 当请求响应中不存在
snippet时,使SerperDevWebSearch更加健壮。 - 将SparseEmbedding设为dataclass,这样它更容易与Pydantic一起使用。
- `HTMLToDocument`:将HTML转换后端从
boilerpy3更改为trafilatura,它更健壮且维护得更好。
⚠️ 弃用说明
Mulitplexer现已弃用。DynamicChatPromptBuilder已被弃用,因为ChatPromptBuilder完全覆盖了它的功能。请使用ChatPromptBuilder。DynamicPromptBuilder已被弃用,因为PromptBuilder完全覆盖了它的功能。请使用PromptBuilder。HTMLToDocument的以下参数将被忽略,并将在Haystack 2.4.0中移除:extractor_type和try_others。
🐛 Bug 修复
- 当应用于空上下文或空语句时,
FaithfullnessEvaluator和ContextRelevanceEvaluator现在返回0而不是NaN。 - Azure生成器组件已修复,它们缺少
@component装饰器。 - 更新了SentenceTransformersTextEmbedder、SentenceTransformersDocumentEmbedder、NamedEntityExtractor、SentenceTransformersDiversityRanker和LocalWhisperTranscriber的from_dict方法,允许在从YAML文件反序列化时,device的None值有效。这允许反序列化的pipeline使用ComponentDevice.resolve_device逻辑自动确定要使用的设备。
- 修复了HuggingFaceAPITextEmbedder、HuggingFaceAPIDocumentEmbedder、HuggingFaceAPIGenerator和HuggingFaceAPIChatGenerator的序列化错误。
- 修复了当使用字符串后端参数构造时
NamedEntityExtractor在Python 3.12中崩溃的问题。 - 修复了PdfMinerToDocument转换器的输出,使其正确连接到“documents”。
- 向
DocumentRecallEvaluator添加to_dict方法,以允许组件的正确序列化。 - 改进/修复了PEP 585类型(例如list[Document]及其嵌套版本)的类型序列化。此改进使得泛型和嵌套类型的序列化更好,并在序列化后改进/修复了组件连接中list[X]和List[X]类型的匹配。
- 修复了NamedEntityExtractor的(反)序列化。包括更新的测试,当NamedEntityExtractor用于pipelines时,验证这些修复。
Pipeline.run中的include_outputs_from参数能正确返回具有多个输出的组件的输出。- 当
ExtractiveReader收到一个空文档列表时,返回一个空答案列表,而不是引发异常。
