haystack-experimental 包为 Haystack 用户提供对实验性功能的访问,而无需立即将其纳入官方版本。主要目标是收集用户反馈并快速迭代新功能。
为简化起见,haystack-experimental 的每个版本都会包含当时所有可用的实验功能。要安装最新的实验性功能,请运行:
$ pip install -U haystack-experimental
从 main 分支安装以尝试最新功能:
pip install git+https://github.com/deepset-ai/haystack-experimental.git@main
[!IMPORTANT]
实验包的最新版本仅针对 Haystack 的最新版本进行测试。不保证与旧版本 Haystack 的兼容性。
每个实验性功能自首次包含它的非预发布版本发布之日起,默认生命周期为 3 个月。一旦达到其生命周期结束,该实验将:
| 名称 | 类型 | 预计结束日期 | 依赖项 | 示例教程 | 讨论 |
|---|---|---|---|---|---|
OpenAIChatGenerator |
聊天生成器组件 | 2025年11月 | 无 | 讨论 | |
MarkdownHeaderLevelInferrer |
预处理器 | 2025年1月 | 无 | 无 | 讨论 |
Agent; BreakpointConfirmationStrategy; HITLBreakpointException |
通过断点实现人机交互 | 2025年12月 | 无 | 无 | 讨论 |
LLMSummarizer |
文档摘要器 | 2025年1月 | 无 | 无 | 讨论 |
InMemoryChatMessageStore; ChatMessageRetriever; ChatMessageWriter |
聊天消息存储、检索器、写入器 | 2025年2月 | 无 | 讨论 | |
Mem0MemoryStore |
记忆存储 | 2025年4月 | mem0ai | 无 | -- |
| 名称 | 类型 | 最终发布版本 |
|---|---|---|
ChatMessage 重构;Tool 类;ChatGenerators 中的工具支持;ToolInvoker |
工具调用支持 | 0.4.0 |
AsyncPipeline;Pipeline 错误修复和重构 |
异步 Pipeline 执行 | 0.7.0 |
LLMMetadataExtractor |
使用 LLM 进行元数据提取 | 0.7.0 |
Auto-Merging Retriever 和 HierarchicalDocumentSplitter |
文档分割与检索技术 | 0.8.0 |
Agent |
简化 Agent 开发 | 0.8.0 |
SuperComponent |
简化 Pipeline 开发 | 0.8.0 |
Pipeline |
用于调试的 Pipeline 断点 | 0.12.0 |
ImageContent;图像转换器;OpenAIChatGenerator 和 AmazonBedrockChatGenerator 中的多模态支持;ChatPromptBuilder 重构;SentenceTransformersDocumentImageEmbedder;LLMDocumentContentExtractor;新的 Routers |
多模态 | 0.12.0 |
QueryExpander |
查询扩展组件 | 0.14.3 |
MultiQueryEmbeddingRetriever |
多查询嵌入检索器 | 0.14.3 |
MultiQueryTextRetriever |
多查询文本检索器 | 0.14.3 |
EmbeddingBasedDocumentSplitter |
文档分割 | 0.15.2 |
Confirmation Policies;ConfirmationUIs;BlockingConfirmationStrategy;ConfirmationUIResult;ToolExecutionDecision |
人机交互 | 0.16.0 |
| 名称 | 类型 | 最终发布版本 | 示例教程 |
|---|---|---|---|
OpenAIFunctionCaller |
函数调用组件 | 0.3.0 | 无 |
OpenAPITool |
OpenAPITool 组件 | 0.3.0 | Notebook |
EvaluationHarness |
评估编排器 | 0.7.0 | 无 |
实验性新功能可以像任何其他 Haystack 集成包一样导入:
from haystack.dataclasses import ChatMessage
from haystack_experimental.components.generators import FoobarGenerator
c = FoobarGenerator()
c.run([ChatMessage.from_user("What's an experiment? Be brief.")])
实验功能也可以覆盖现有的 Haystack 功能。例如,用户只需更改通常的导入即可选择使用实验性的 Pipeline 类型:
# from haystack import Pipeline
from haystack_experimental import Pipeline
pipe = Pipeline()
# ...
pipe.run(...)
一些实验性功能附带示例 Notebook,可以在 Haystack 示例教程 中找到。
haystack-experimental 的文档可以在 这里 找到。
实验功能应复制核心包的命名空间。例如,一个新的生成器:
# 位于 haystack_experimental/components/generators/foobar.py
from haystack import component
@component
class FoobarGenerator:
...
当实验功能覆盖现有功能时,应在实验包的相同路径下创建新的符号。这个新符号将覆盖 haystack-ai 中的原始符号:对于类,使用子类;对于纯函数,使用包装器。例如:
# 位于 haystack_experiment/src/haystack_experiment/core/pipeline/pipeline.py
from haystack.core.pipeline import Pipeline as HaystackPipeline
class Pipeline(HaystackPipeline):
# 任何在原始类中不存在的新实验方法
def run_async(self, inputs) -> Dict[str, Dict[str, Any]]:
...
# 对其签名进行破坏性更改的现有方法,例如添加新的必需参数
def to_dict(self, new_param: str) -> Dict[str, Any]:
# 使用新参数做一些事情
print(new_param)
# 调用原始方法
return super().to_dict()
不期望直接向 haystack-experimental 贡献代码,但 Haystack 维护者可能会要求将针对 核心仓库 的拉取请求移动到此仓库。
与 Haystack 核心包一样,我们依赖匿名使用统计数据来确定实验功能的影响和实用性。有关我们收集什么数据、如何使用这些数据以及如何选择退出的说明,请参阅我们的 文档。