发布说明
⬆️ 升级说明
- 从
@component装饰器中移除已弃用的is_greedy参数。将Component的Variadic输入更改为GreedyVariadic。
🚀 新功能
- 我们添加了一个新的
DALLEImageGenerator组件,为Haystack带来了使用OpenAI的DALL-E生成图像的功能- 易于使用:只需几行代码即可开始
from haystack.components.generators import DALLEImageGenerator image_generator = DALLEImageGenerator() response = image_generator.run("Show me a picture of a black cat.") print(response)
- 易于使用:只需几行代码即可开始
- 为
PDFMinerToDocument和PyPDFToDocument添加了警告日志,以指示处理过的PDF文件是否不包含内容。如果PDF文件是扫描图像,可能会发生这种情况。此外,还为DocumentSplitter添加了显式的检查和警告消息,警告用户空文档将被跳过。虽然这种情况已经发生,但现在通过日志可以更清楚地知道这一点。 - 我们添加了一个新的
MetaFieldGroupingRanker组件,它通过根据元数据键进行分组来重新排序文档。这在将文档输入LLM之前预处理文档时可能很有用。 - 在以下转换器的
__init__方法中添加了新的store_full_path参数:JSONConverter、CSVToDocument、DOCXToDocument、HTMLToDocumentMarkdownToDocument、PDFMinerToDocument、PPTXToDocument、TikaDocumentConverter、PyPDFToDocument、AzureOCRDocumentConverter和TextFileToDocument。默认值为True,它会将完整文件路径存储在输出文档的元数据中。设置为False时,只存储文件名。 - 通过
OpenAPI进行函数调用时,允许关闭SSL验证并指定用于SSL验证的证书颁发机构。 - 为OpenAI生成器添加了TTFT(首个Token时间)支持。这捕获了从模型生成首个Token所需的时间,可用于分析应用程序的延迟。
- 为
PromptBuilder和ChatPromptBuilder的required_variables参数添加了一个新选项。通过传递required_variables="*",您可以自动将提示中的所有变量设置为必需的。
⚡️ 增强说明
- 在Haystack的代码库中,我们已用特定的类方法(
ChatMessage.from_user、ChatMessage.from_assistant等)替换了ChatMessage数据类构造函数的用法。 - 将最大边际相关性(MMR)策略添加到
SentenceTransformersDiversityRanker。MMR分数是根据每个文档与查询的相关性以及与已选文档的差异来计算的。 - 在
ConditionalRouter组件中引入了可选参数,允许在运行时未提供某些输入时进行默认/回退路由。此增强功能通过对缺失参数的优雅处理,实现了更灵活的管道配置。 - 为
DocumentSplitter添加了按行分割功能,该功能将在n处分割文档。 - 将
OpenAIDocumentEmbedder更改为在批处理失败时继续运行。现在OpenAI返回错误后,我们会记录该错误并继续处理后续批处理。 - 为
PyPDFToDocument组件添加了新的初始化参数,以自定义从PDF文件中提取文本的过程。 - 在代码库中,将
ChatMessage.content的用法替换为ChatMessage.text。这是为了准备在Haystack 2.9.0中移除content。
⚠️ 弃用说明
- 在Haysatck 2.9.0中,转换器中
store_full_path参数的默认值将更改为False,以增强隐私性。 - 在Haystack 2.9.0中,
ChatMessage数据类将被重构,使其更灵活且面向未来。作为此更改的一部分,将移除content属性。已引入新的text属性以访问ChatMessage的文本值。为确保顺利过渡,请立即开始使用text属性代替content。 PyPDFToDocument组件中的converter参数已弃用,并将于Haystack 2.9.0中移除。为了深入定制转换过程,请考虑实现自定义组件。将来将添加更多高级定制选项。SentenceWindowRetriever中的context_documents的输出将在下一个版本中更改。输出将不再是List[List[Document]],而是List[Document],其中文档按split_idx_start排序。
🐛 Bug 修复
-
修复了
DocumentCleaner在运行时未保留所有Document字段的问题 -
修复了
DocumentJoiner在与空文档列表一起运行时失败的问题 -
对于
NLTKDocumentSplitter,我们正在更新分块方式,当按单词分割且尊重句子边界时。具体来说,为了避免前一个块完全被下一个块包含,我们在计算句子重叠时忽略该块的第一个句子。即,我们想避免Doc1 = [s1, s2], Doc2 = [s1, s2, s3]这样的情况。 -
通过更新
_split_into_units函数并添加splitting_functioninit参数,完成了为该组件添加函数支持。 -
添加了特定的
to_dict方法来覆盖DocumentSplitter的底层方法。这对于将组件的设置正确保存到yaml是必需的。 -
修复了
OpenAIChatGenerator和OpenAIGenerator在使用streaming_callback且generation_kwargs包含{"stream_options": {"include_usage": True}}时崩溃的问题。 -
修复了带有循环的
Pipeline的跟踪,以正确跟踪组件执行 -
当
meta被传递到AnswerBuilder.run()时,它现在会被合并到GeneratedAnswer的meta中 -
修复了
DocumentSplitter在不要求split_length的情况下处理自定义splitting_function的问题。以前提供的splitting_function不会覆盖其他设置。
