要在 Haystack 管道中实现自定义组件,首先创建一个符合 Haystack 组件接口的类。Haystack 管道由可重用的组件(如检索器、阅读器或自定义逻辑)构建而成,这些组件按顺序处理数据。自定义组件必须实现特定的方法,例如 run()
或 run_batch()
,这些方法定义了输入是如何转换的。例如,如果您正在构建一个文档预处理器,创建一个继承自 BaseComponent
的类,定义 run()
以接受和返回 Haystack Document
对象,并添加您的处理逻辑(例如,文本清理)。使用 @component
装饰器向 Haystack 注册该组件,以将其集成到管道系统中。
这是一个具体的例子:假设您想按关键词过滤文档。创建一个类 KeywordFilter
,其中包含一个 run()
方法,该方法检查每个文档的内容。该方法应该接受一个输入字典(例如 documents
),并返回一个包含过滤后的 documents
的字典。使用 Haystack 的 component
装饰器来启用管道兼容性。您还可以通过 __init__
方法添加配置参数(例如,target_keyword
)。通过传递示例文档并验证输出是否符合预期,来独立测试该组件。这种模块化的方法确保您的组件与 Haystack 的内置类型和错误处理无缝协作。
最后,将自定义组件添加到您的管道中。定义一个 Pipeline
对象,使用 add_node()
来包含您的组件,并使用 connect_nodes()
将其连接到其他节点(如检索器或阅读器)。例如,将 KeywordFilter
放在文档检索器之后,以便在将结果传递给阅读器之前对其进行处理。确保组件之间的输入/输出名称对齐(例如,检索器发出 documents
,KeywordFilter
期望将其作为输入)。使用 Haystack 的调试模式来跟踪数据流并验证行为。通过遵循此结构,您可以使用特定领域的逻辑扩展管道,同时保持与 Haystack 生态系统的兼容性。