亮点
🙌 本地 LLM 和自定义生成参数的评估
添加给 LLM 评估器(如 ContextRelevanceEvaluator 和 FaithfulnessEvaluator)的新 init 参数 api_params,可以用于传递受支持的 OpenAIGenerator 参数,从而允许自定义生成参数(通过 generation_kwargs)和本地 LLM 支持(通过 api_base_url)。
📝 新加入者
新的 AnswerJoiner 组件,用于合并多个 Answer 列表。
⬆️ 升级说明
ContextRelevanceEvaluator现在返回每个上下文的相关句子列表,而不是上下文中的所有句子。另外,如果找到相关句子,现在返回分数 1,否则返回 0。- 移除了已弃用的
DynamicPromptBuilder和DynamicChatPromptBuilder组件。请改用PromptBuilder和ChatPromptBuilder。 OutputAdapter和ConditionalRouter不能再返回用户输入。- 已移除
Multiplexer,用户应改用BranchJoiner。 - 从
HTMLToDocument中移除了已弃用的 init 参数extractor_type和try_others。 SentenceWindowRetrieval组件已重命名为SenetenceWindowRetriever。- 已移除
serialize_callback_handler和deserialize_callback_handler实用函数。请改用serialize_callable和deserialize_callable。有关serialize_callable和deserialize_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_retries和timeout参数。 - 在项目配置中记录 Python 3.11 和 3.12 的支持。
- 重构 DocumentJoiner,为 ‘join_mode’ 参数使用枚举模式,而不是纯字符串。
- 为
AzureOpenAIDocumentEmbedder初始化添加了max_retries、timeout参数。 - 为 AzureOpenAITextEmbedder 初始化添加了
max_retries和timeout参数。 - 引入了一个实用函数,用于从序列化组件的 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 模板时可能导致远程代码执行的问题
PromptBuilderChatPromptBuilderOutputAdapterConditionalRouter
PipelineTemplate类也修复了相同的问题。
🐛 Bug 修复
- 修复了模板值为 None 时
ChatPromptBuilder的 from_dict 方法。 - 修复了
DocumentCleaner移除内容中的f标签,导致无法计算页码(例如,通过 Splitter)的问题。 - DocumentSplitter 因对适当索引的轻微错误计算,而错误地计算了
split_start_idx和split_overlap信息。这些错误已修复,因此split_start_idx和split_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命名空间下。 - 修复了
TransformersZeroShotTextRouter和TransformersTextRouter的from_dict方法,使其在init_parameters只包含必需变量时也能工作。 - 对于支持多个 Document Stores 的组件,优先使用特定的
from_dict类方法进行反序列化(如果可用)。否则,回退到通用的default_from_dict方法。这会影响以下通用组件:CacheChecker、DocumentWriter、FilterRetriever和SentenceWindowRetriever。
