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: 用于启用或禁用后期分块的布尔值。应用后期分块技术以利用模型的长上下文能力来生成上下文块嵌入。
对task 和late_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: 用于启用或禁用后期分块的布尔值。应用后期分块技术以利用模型的长上下文能力来生成上下文块嵌入。
对task 和late_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, search 和ground.
使用示例
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,search或ground).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对象。
