文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

Data Classes (数据类)

在 Haystack 中,有一些核心类经常在许多不同的地方使用。这些类通过系统传输数据,您很可能会以管道的输入或输出形式与它们交互。

Haystack 使用数据类来帮助组件以简单模块化的方式相互通信。通过这样做,数据可以无缝地流经 Haystack 管道。本页将介绍 Haystack 中可用的数据类:ByteStream、Answer(及其变体 ExtractedAnswer 和 GeneratedAnswer)、ChatMessage、Document 和 StreamingChunk,解释它们如何为 Haystack 生态系统做出贡献。

您可以在我们的数据类 API 参考中查看详细参数。

Answer

概述

Answer 类作为 Haystack 中生成的响应的基础,包含答案的数据、原始查询和附加元数据。

主要特点

  • 适应性数据处理,可容纳任何数据类型 (数据).
  • 用于上下文相关性的查询跟踪 (查询).
  • 广泛的元数据支持,用于详细的答案描述。

属性

@dataclass(frozen=True)
class Answer:
    data: Any
    query: str
    meta: Dict[str, Any]

ExtractedAnswer

概述

ExtractedAnswerAnswer 的子类,专门处理从文档中提取的答案,提供更详细的属性。包括对原始文档的引用,并提供量化答案置信水平的评分属性。

主要特点

  • 包括对原始文档的引用Document.
  • 评分属性用于量化答案的置信水平。
  • 可选的开始和结束索引,用于精确指出答案在来源中的位置。

属性

@dataclass
class ExtractedAnswer:
    query: str
    score: float
    data: Optional[str] = None
    document: Optional[Document] = None
    context: Optional[str] = None
    document_offset: Optional["Span"] = None
    context_offset: Optional["Span"] = None
    meta: Dict[str, Any] = field(default_factory=dict)

GeneratedAnswer

概述

GeneratedAnswer 扩展了 Answer 类,以适应从多个文档生成的答案。Answer 类以适应从多个文档生成的答案。

主要特点

  • 处理字符串类型的数据。
  • 链接到 Document 对象的列表,增强答案可追溯性。Document 对象的列表,增强答案可追溯性。

属性

@dataclass
class GeneratedAnswer:
    data: str
    query: str
    documents: List[Document]
    meta: Dict[str, Any] = field(default_factory=dict)

ByteStream

概述

ByteStream 代表 Haystack 框架中的二进制对象抽象,对于处理各种二进制数据格式至关重要。

主要特点

  • 保存二进制数据和相关元数据。
  • 可选的 MIME 类型规范,具有灵活性。
  • 文件交互方法 (to_file, from_file_path, from_string) 便于数据操作。

属性

@dataclass(frozen=True)
class ByteStream:
    data: bytes
    metadata: Dict[str, Any] = field(default_factory=dict, hash=False)
    mime_type: Optional[str] = field(default=None)

示例

from haystack.dataclasses.byte_stream import ByteStream

image = ByteStream.from_file_path("dog.jpg")

ChatMessage

ChatMessage 是表示 LLM 消息的中心抽象。它包含角色、元数据和多种类型的内容,包括文本、工具调用和工具调用结果。

请阅读ChatMessage 专用页面上关于 ChatMessage 数据类的详细文档。ChatMessage 数据类的详细文档。

Document

概述

Document 代表 Haystack 中的中心数据抽象,能够保存文本、表格和二进制数据。

主要特点

  • 每个文档的唯一 ID。
  • 支持多种内容类型:文本、二进制 (blob).
  • 自定义元数据和评分,用于高级文档管理。
  • 可选的 AI 应用嵌入。

属性

@dataclass
class Document(metaclass=_BackwardCompatible):
    id: str = field(default="")
    content: Optional[str] = field(default=None)
    blob: Optional[ByteStream] = field(default=None)
    meta: Dict[str, Any] = field(default_factory=dict)
    score: Optional[float] = field(default=None)
    embedding: Optional[List[float]] = field(default=None)
    sparse_embedding: Optional[SparseEmbedding] = field(default=None)

示例

from haystack import Document

documents = Document(content="Here are the contents of your document", embedding=[0.1]*768)

StreamingChunk

概述

StreamingChunk 代表部分流式传输的 LLM 响应,实现实时 LLM 响应处理。它封装了一段流式传输内容以及相关元数据,并提供有关流式传输状态的全面信息。

主要特点

  • 文本块的基于字符串的内容表示
  • 支持工具调用和工具调用结果
  • 组件跟踪和元数据管理
  • 流式传输状态指示器(开始、结束原因)
  • 多部分响应的内容块索引

属性

@dataclass
class StreamingChunk:
    content: str
    meta: dict[str, Any] = field(default_factory=dict, hash=False)
    component_info: Optional[ComponentInfo] = field(default=None)
    index: Optional[int] = field(default=None)
    tool_calls: Optional[list[ToolCallDelta]] = field(default=None)
    tool_call_result: Optional[ToolCallResult] = field(default=None)
    start: bool = field(default=False)
    finish_reason: Optional[FinishReason] = field(default=None)

示例

from haystack.dataclasses.streaming_chunk import StreamingChunk, ComponentInfo

# Basic text chunk
chunk = StreamingChunk(
    content="Hello world",
    start=True,
    meta={"model": "gpt-3.5-turbo"}
)

# Tool call chunk
tool_chunk = StreamingChunk(
    tool_calls=[ToolCallDelta(index=0, tool_name="calculator", arguments='{"operation": "add", "a": 2, "b": 3}')],
    index=0,
    start=False,
    finish_reason="tool_calls"
)

ToolCallDelta

概述

ToolCallDelta 表示模型准备的工具调用,通常包含在流式传输期间的助手消息中。

属性

@dataclass
class ToolCallDelta:
    index: int
    tool_name: Optional[str] = field(default=None)
    arguments: Optional[str] = field(default=None)
    id: Optional[str] = field(default=None)

ComponentInfo

概述

ComponentInfo 类表示 Haystack 管道中组件的信息。它用于跟踪生成或处理数据的组件的类型和名称,有助于整个管道的调试、跟踪和元数据管理。

主要特点

  • 存储组件的类型(包括模块和类名)。
  • 可选地存储分配给管道中组件的名称。
  • 提供方便的类方法来从 Component 对象创建 ComponentInfo 实例。ComponentInfo 实例。Component 对象。

属性

@dataclass
class ComponentInfo:
    type: str
    name: Optional[str] = field(default=None)

    @classmethod
    def from_component(cls, component: Component) -> "ComponentInfo":
        ...

示例

from haystack.dataclasses.streaming_chunk import ComponentInfo
from haystack.core.component import Component

class MyComponent(Component):
    ...

component = MyComponent()
info = ComponentInfo.from_component(component)
print(info.type)  # e.g., 'my_module.MyComponent'
print(info.name)  # Name assigned in the pipeline, if any

SparseEmbedding

概述

SparseEmbedding 类表示稀疏嵌入:一个大部分值为零的向量。

属性

  • indices:嵌入中非零元素的索引列表。
  • values:嵌入中非零元素的值列表。

Tool

Tool 是一个数据类,表示语言模型可以准备调用的工具。

请阅读ChatMessage 专用页面上关于 ChatMessage 数据类的详细文档。Tool 专用页面上的 Tool 数据类。


相关链接

在我们的 API 参考中查看参数详情