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

Haystack 2.4.0

在 Github 上查看

亮点

🙌 本地 LLM 和自定义生成参数的评估

添加给 LLM 评估器(如 ContextRelevanceEvaluatorFaithfulnessEvaluator)的新 init 参数 api_params,可以用于传递受支持的 OpenAIGenerator 参数,从而允许自定义生成参数(通过 generation_kwargs)和本地 LLM 支持(通过 api_base_url)。

📝 新加入者

新的 AnswerJoiner 组件,用于合并多个 Answer 列表。

⬆️ 升级说明

  • ContextRelevanceEvaluator 现在返回每个上下文的相关句子列表,而不是上下文中的所有句子。另外,如果找到相关句子,现在返回分数 1,否则返回 0。
  • 移除了已弃用的 DynamicPromptBuilderDynamicChatPromptBuilder 组件。请改用 PromptBuilderChatPromptBuilder
  • OutputAdapterConditionalRouter 不能再返回用户输入。
  • 已移除 Multiplexer,用户应改用 BranchJoiner
  • HTMLToDocument 中移除了已弃用的 init 参数 extractor_typetry_others
  • SentenceWindowRetrieval 组件已重命名为 SenetenceWindowRetriever
  • 已移除 serialize_callback_handlerdeserialize_callback_handler 实用函数。请改用 serialize_callabledeserialize_callable。有关 serialize_callabledeserialize_callable 的更多信息,请参阅 API 参考:https://docs.haystack.com.cn/reference/utils-api#module-callable_serialization

🚀 新功能

  • 基于 LLM 的评估器可以通过 api_params 传递支持的 OpenAIGenerator 参数。这允许自定义 generation_kwargs,更改 api_base_url(用于本地评估)以及 OpenAIGenerator 文档中描述的所有其他支持的参数。
  • 引入了新的 AnswerJoiner 组件,该组件允许将多个 Answer 列表合并成一个列表,使用 Concatenate 加入模式。
  • 为 Sentence Transformers Embedders 添加了 truncate_dim 参数,允许截断 embeddings。这对于使用 Matryoshka Representation Learning 训练的模型特别有用。
  • 为 Sentence Transformers Embedders 添加了 precision 参数,允许量化 embeddings。这对于减小语料库 embeddings 的大小以进行语义搜索等任务特别有用。

⚡️ 增强说明

  • 将 model_kwargs 和 tokenizer_kwargs 添加到 TransformersSimilarityRanker、SentenceTransformersDocumentEmbedder、SentenceTransformersTextEmbedder 组件。这允许传递诸如 model_max_length 或 torch_dtype 之类的内容,以更好地管理模型推理。
  • 为 DocumentCleaner 添加了 unicode_normalization 参数,允许将文本标准化为 NFC、NFD、NFKC 或 NFKD。
  • 为 DocumentCleaner 添加了 ascii_only 参数,将带重音的字母转换为其 ASCII 等效字符,并删除其他非 ASCII 字符。
  • 改进了反序列化错误的错误消息。
  • TikaDocumentConverter 现在会在输出中返回分页符(“f”)。这仅适用于 PDF 文件。
  • 增强了过滤器应用逻辑,以支持合并过滤器。它有助于更精确的检索过滤,允许通过逻辑运算符进行初始化和运行时复杂的过滤器组合。更多详细信息请参阅 https://docs.haystack.com.cn/docs/metadata-filtering
  • 可以在 pipeline 运行时传递 streaming_callback 参数给 OpenAIGenerator 和 OpenAIChatGenerator。这样就无需为流式回调重新创建 pipeline。
  • 为 AzureOpenAIChatGenerator 初始化添加了 max_retriestimeout 参数。
  • 在项目配置中记录 Python 3.11 和 3.12 的支持。
  • 重构 DocumentJoiner,为 ‘join_mode’ 参数使用枚举模式,而不是纯字符串。
  • AzureOpenAIDocumentEmbedder 初始化添加了 max_retriestimeout 参数。
  • 为 AzureOpenAITextEmbedder 初始化添加了 max_retriestimeout 参数。
  • 引入了一个实用函数,用于从序列化组件的 init_parameters 中反序列化通用的 Document Store。

⚠️ 弃用说明

  • Haystack 1.x 传统过滤器已弃用,将在未来版本中移除。请使用文档中所述的新过滤器样式 - https://docs.haystack.com.cn/docs/metadata-filtering
  • 弃用了 ChatMessage 数据类的 to_openai_format 方法。此方法从未打算公开,仅在内部使用。现在,每个 Chat Generator 将知道如何在内部将消息转换为其特定提供商的格式。
  • 弃用了 Pipeline.run 方法中未使用的 debug 参数。
  • SentenceWindowRetrieval 已弃用,将在未来版本中移除。请改用 SentenceWindowRetriever

安全注意事项

  • 修复了在使用以下组件中不安全的 Jinja 模板时可能导致远程代码执行的问题

    • PromptBuilder
    • ChatPromptBuilder
    • OutputAdapter
    • ConditionalRouter

    PipelineTemplate 类也修复了相同的问题。

🐛 Bug 修复

  • 修复了模板值为 None 时 ChatPromptBuilder 的 from_dict 方法。
  • 修复了 DocumentCleaner 移除内容中的 f 标签,导致无法计算页码(例如,通过 Splitter)的问题。
  • DocumentSplitter 因对适当索引的轻微错误计算,而错误地计算了 split_start_idxsplit_overlap 信息。这些错误已修复,因此 split_start_idxsplit_overlap 信息是正确的。
  • 修复了 Pipeline.run() 中组件执行顺序错误和意外的问题。
  • LinkContentFetcher 中 HTML 文件的编码。
  • 修复了 custom_filters 值为 None 时 Output Adapter 的 from_dict 方法。
  • 防止 Pipeline.from_dict 修改传递给它的字典参数。
  • 修复了 Pipeline.run() 中可能导致无限循环且永不返回的 bug。这是由于当 Pipeline 图的一部分因“决策”组件未为该 Pipeline 的侧面返回输出而被跳过时,组件永远等待其输入。
  • 这更新了 TransformersSimilarityRanker、SentenceTransformersDiversityRanker、SentenceTransformersTextEmbedder、SentenceTransformersDocumentEmbedder 和 LocalWhisperTranscriber 组件的 from_dict 方法,使其在仅包含必需参数的 init_parameters 加载时也能正常工作。
  • 将 structlog 固定为 <= 24.2.0,以避免某些单元测试失败。这是一个临时修复,直到我们可以将测试升级到更新版本的 structlog。
  • 正确地将 PPTXToDocument 组件暴露在 haystack 命名空间下。
  • 修复了 TransformersZeroShotTextRouterTransformersTextRouterfrom_dict 方法,使其在 init_parameters 只包含必需变量时也能工作。
  • 对于支持多个 Document Stores 的组件,优先使用特定的 from_dict 类方法进行反序列化(如果可用)。否则,回退到通用的 default_from_dict 方法。这会影响以下通用组件:CacheCheckerDocumentWriterFilterRetrieverSentenceWindowRetriever