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

Jina

Haystack 的 Jina 集成

模块 haystack_integrations.components.embedders.jina.document_embedder

JinaDocumentEmbedder

一个使用 Jina AI 模型计算 Document 嵌入的组件。每个 Document 的嵌入存储在Document 的 embedding 字段中。

使用示例

from haystack import Document
from haystack_integrations.components.embedders.jina import JinaDocumentEmbedder

# Make sure that the environment variable JINA_API_KEY is set

document_embedder = JinaDocumentEmbedder(task="retrieval.query")

doc = Document(content="I love pizza!")

result = document_embedder.run([doc])
print(result['documents'][0].embedding)

# [0.017020374536514282, -0.023255806416273117, ...]

JinaDocumentEmbedder.__init__

def __init__(api_key: Secret = Secret.from_env_var("JINA_API_KEY"),
             model: str = "jina-embeddings-v3",
             prefix: str = "",
             suffix: str = "",
             batch_size: int = 32,
             progress_bar: bool = True,
             meta_fields_to_embed: Optional[List[str]] = None,
             embedding_separator: str = "\n",
             task: Optional[str] = None,
             dimensions: Optional[int] = None,
             late_chunking: Optional[bool] = None)

创建一个 JinaDocumentEmbedder 组件。

参数:

  • api_key: Jina API 密钥。
  • model: 要使用的 Jina 模型名称。请参阅 Jina 文档 中提供的模型列表。
  • prefix: 添加到每个文本开头的字符串。
  • suffix: 添加到每个文本末尾的字符串。
  • batch_size: 一次编码的 Document 数量。
  • progress_bar: 是否显示进度条。在生产部署中禁用此选项有助于保持日志的整洁。
  • meta_fields_to_embed: 需要与 Document 文本一起进行嵌入的元字段列表。
  • embedding_separator: 用于将元字段连接到 Document 文本的分隔符。
  • task: 嵌入将用于的下游任务。模型将为此任务返回优化的嵌入。请参阅 Jina 文档 中提供的任务列表。
  • dimensions: 所需的维度数量。更少的维度更容易存储和检索,并且由于 MRL,性能影响极小。
  • late_chunking: 用于启用或禁用后期分块的布尔值。应用后期分块技术以利用模型的长上下文能力来生成上下文块嵌入。

tasklate_chunking 参数的支持仅适用于 jina-embeddings-v3。

JinaDocumentEmbedder.to_dict

def to_dict() -> Dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

JinaDocumentEmbedder.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "JinaDocumentEmbedder"

从字典反序列化组件。

参数:

  • data: 要反序列化的字典。

返回值:

反序列化后的组件。

JinaDocumentEmbedder.run

@component.output_types(documents=List[Document], meta=Dict[str, Any])
def run(documents: List[Document]) -> Dict[str, Any]

计算 Document 列表的嵌入。

参数:

  • documents: 要嵌入的 Document 列表。

引发:

  • TypeError: 如果输入不是 Document 列表。

返回值:

包含以下键的字典

  • documents: Document 列表,每个 Document 都有一个embedding 字段,其中包含计算出的嵌入。
  • meta: 包含模型名称和使用情况统计信息的元数据字典。

模块 haystack_integrations.components.embedders.jina.document_image_embedder

JinaDocumentImageEmbedder

一个使用 Jina AI 多模态模型根据图像计算 Document 嵌入的组件。

每个 Document 的嵌入存储在Document 的 embedding 字段中。

JinaDocumentImageEmbedder 支持 jina-clip 系列和 jina-embeddings-v4 的模型,这些模型可以将图像编码为与文本相同的嵌入空间的向量表示。

使用示例

from haystack import Document
from haystack_integrations.components.embedders.jina import JinaDocumentImageEmbedder

# Make sure that the environment variable JINA_API_KEY is set

embedder = JinaDocumentImageEmbedder(model="jina-clip-v2")

documents = [
    Document(content="A photo of a cat", meta={"file_path": "cat.jpg"}),
    Document(content="A photo of a dog", meta={"file_path": "dog.jpg"}),
]

result = embedder.run(documents=documents)
documents_with_embeddings = result["documents"]
print(documents_with_embeddings[0].embedding)

# [0.017020374536514282, -0.023255806416273117, ...]

JinaDocumentImageEmbedder.__init__

def __init__(*,
             api_key: Secret = Secret.from_env_var("JINA_API_KEY"),
             model: str = "jina-clip-v2",
             file_path_meta_field: str = "file_path",
             root_path: Optional[str] = None,
             embedding_dimension: Optional[int] = None,
             image_size: Optional[Tuple[int, int]] = None,
             batch_size: int = 5)

创建一个 JinaDocumentImageEmbedder 组件。

参数:

  • api_key: Jina API 密钥。可以显式提供,也可以从环境变量JINA_API_KEY 中自动读取(推荐)。
  • model: 要使用的 Jina 多模态模型名称。支持的模型包括
  • "jina-clip-v1"
  • "jina-clip-v2"(默认)
  • "jina-embeddings-v4" 请参阅 Jina 文档 中提供的模型列表。
  • file_path_meta_field: Document 中包含图像或 PDF 文件路径的元数据字段。
  • root_path: 存储文档文件的根目录路径。如果提供,文档元数据中的文件路径将相对于此路径解析。如果为 None,则文件路径被视为绝对路径。
  • embedding_dimension: 所需嵌入的维度数量。更少的维度更容易存储和检索,并且由于 MRL,性能影响极小。仅支持 jina-embeddings-v4。
  • image_size: 如果提供,则将图像调整到指定的尺寸(宽度、高度)以保持纵横比。这会减少文件大小、内存使用和处理时间。
  • batch_size: 每次 API 请求发送的图像数量。默认为 5。

JinaDocumentImageEmbedder.to_dict

def to_dict() -> Dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

JinaDocumentImageEmbedder.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "JinaDocumentImageEmbedder"

从字典反序列化组件。

参数:

  • data: 要反序列化的字典。

返回值:

反序列化后的组件。

JinaDocumentImageEmbedder.run

@component.output_types(documents=List[Document])
def run(documents: List[Document]) -> Dict[str, List[Document]]

嵌入图像 Document 列表。

参数:

  • documents: 要嵌入的 Documents。

返回值:

包含以下键的字典

  • documents: 带有嵌入的 Documents。

模块 haystack_integrations.components.embedders.jina.text_embedder

JinaTextEmbedder

一个使用 Jina AI 模型嵌入字符串的组件。

使用示例

from haystack_integrations.components.embedders.jina import JinaTextEmbedder

# Make sure that the environment variable JINA_API_KEY is set

text_embedder = JinaTextEmbedder(task="retrieval.query")

text_to_embed = "I love pizza!"

print(text_embedder.run(text_to_embed))

# {'embedding': [0.017020374536514282, -0.023255806416273117, ...],
# 'meta': {'model': 'jina-embeddings-v3',
#          'usage': {'prompt_tokens': 4, 'total_tokens': 4}}}

JinaTextEmbedder.__init__

def __init__(api_key: Secret = Secret.from_env_var("JINA_API_KEY"),
             model: str = "jina-embeddings-v3",
             prefix: str = "",
             suffix: str = "",
             task: Optional[str] = None,
             dimensions: Optional[int] = None,
             late_chunking: Optional[bool] = None)

创建一个 JinaTextEmbedder 组件。

参数:

  • api_key: Jina API 密钥。可以显式提供,也可以从环境变量JINA_API_KEY 中自动读取(推荐)。
  • model: 要使用的 Jina 模型名称。请参阅 Jina 文档 中提供的模型列表。
  • prefix: 添加到每个文本开头的字符串。
  • suffix: 添加到每个文本末尾的字符串。
  • task: 嵌入将用于的下游任务。模型将为此任务返回优化的嵌入。请参阅 Jina 文档 中提供的任务列表。
  • dimensions: 所需的维度数量。更少的维度更容易存储和检索,并且由于 MRL,性能影响极小。
  • late_chunking: 用于启用或禁用后期分块的布尔值。应用后期分块技术以利用模型的长上下文能力来生成上下文块嵌入。

tasklate_chunking 参数的支持仅适用于 jina-embeddings-v3。

JinaTextEmbedder.to_dict

def to_dict() -> Dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

JinaTextEmbedder.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "JinaTextEmbedder"

从字典反序列化组件。

参数:

  • data: 要反序列化的字典。

返回值:

反序列化后的组件。

JinaTextEmbedder.run

@component.output_types(embedding=List[float], meta=Dict[str, Any])
def run(text: str) -> Dict[str, Any]

嵌入一个字符串。

参数:

  • text: 要嵌入的字符串。

引发:

  • TypeError: 如果输入不是字符串。

返回值:

包含以下键的字典

  • embedding: 输入字符串的嵌入。
  • meta: 包含模型名称和使用情况统计信息的元数据字典。

模块 haystack_integrations.components.rankers.jina.ranker

JinaRanker

使用 Jina AI 模型根据 Document 与查询的相似度对 Document 进行排序。

使用示例

from haystack import Document
from haystack_integrations.components.rankers.jina import JinaRanker

ranker = JinaRanker()
docs = [Document(content="Paris"), Document(content="Berlin")]
query = "City in Germany"
result = ranker.run(query=query, documents=docs)
docs = result["documents"]
print(docs[0].content)

JinaRanker.__init__

def __init__(model: str = "jina-reranker-v1-base-en",
             api_key: Secret = Secret.from_env_var("JINA_API_KEY"),
             top_k: Optional[int] = None,
             score_threshold: Optional[float] = None)

创建 JinaRanker 的实例。

参数:

  • api_key: Jina API 密钥。可以显式提供,也可以从环境变量 JINA_API_KEY 中自动读取(推荐)。
  • model: 要使用的 Jina 模型名称。请参阅https://jina.ai/reranker/
  • top_k: 每个查询要返回的最大 Document 数量。如果None,则返回所有文档
  • score_threshold: 如果提供,则仅返回分数高于此阈值的文档。

引发:

  • ValueError: 如果top_k 不大于 0。

JinaRanker.to_dict

def to_dict() -> Dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

JinaRanker.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "JinaRanker"

从字典反序列化组件。

参数:

  • data: 要反序列化的字典。

返回值:

反序列化后的组件。

JinaRanker.run

@component.output_types(documents=List[Document])
def run(query: str,
        documents: List[Document],
        top_k: Optional[int] = None,
        score_threshold: Optional[float] = None)

返回一个按与给定查询的相似度排序的 Document 列表。

参数:

  • query: 查询字符串。
  • documents: Document 列表。
  • top_k: 您希望 Ranker 返回的最大 Document 数量。
  • score_threshold: 如果提供,则仅返回分数高于此阈值的文档。

引发:

  • ValueError: 如果top_k 不大于 0。

返回值:

包含以下键的字典

  • documents: 按相似度降序排列的、与给定查询最相似的 Document 列表。

模块 haystack_integrations.components.connectors.jina.reader

JinaReaderConnector

一个与 Jina AI 的 reader 服务交互以处理查询并返回文档的组件。

该组件支持不同的操作模式read, searchground.

使用示例

from haystack_integrations.components.connectors.jina import JinaReaderConnector

reader = JinaReaderConnector(mode="read")
query = "https://example.com"
result = reader.run(query=query)
document = result["documents"][0]
print(document.content)

>>> "This domain is for use in illustrative examples..."

JinaReaderConnector.__init__

def __init__(mode: Union[JinaReaderMode, str],
             api_key: Secret = Secret.from_env_var("JINA_API_KEY"),
             json_response: bool = True)

初始化 JinaReader 实例。

参数:

  • mode: reader 的操作模式(read, searchground).
  • read: 处理 URL 并返回页面的文本内容。
  • search: 搜索网络并返回最相关页面的文本内容。
  • ground: 调用 grounding 引擎执行事实核查。有关模式的更多信息,请参阅 Jina Reader 文档
  • api_key: Jina API 密钥。可以显式提供,也可以从环境变量 JINA_API_KEY 中自动读取(推荐)。
  • json_response: 控制 Jina Reader API 的响应格式。如果True,则请求 JSON 响应,生成具有丰富结构化元数据的 Documents。如果False,则请求原始响应,生成具有最小元数据的一个 Document。

JinaReaderConnector.to_dict

def to_dict() -> Dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

JinaReaderConnector.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "JinaReaderConnector"

从字典反序列化组件。

参数:

  • data: 要反序列化的字典。

返回值:

反序列化后的组件。

JinaReaderConnector.run

@component.output_types(documents=List[Document])
def run(query: str,
        headers: Optional[Dict[str, str]] = None) -> Dict[str, List[Document]]

使用 Jina AI reader 服务处理查询/URL。

参数:

  • query: 要处理的查询字符串或 URL。
  • headers: 可选的、要在请求中包含的自定义标头。有关更多信息,请参阅 Jina Reader 文档

返回值:

包含以下键的字典

  • documents: Document 对象列表。Document 对象。