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

Weaviate

Weaviate 集成 for Haystack

模块 haystack_integrations.document_stores.weaviate.auth

SupportedAuthTypes

WeaviateDocumentStore 支持的认证凭证。

AuthCredentials

WeaviateDocumentStore 支持的所有认证凭证的基类。可用于从字典反序列化任何支持的认证凭证。

AuthCredentials.to_dict

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

将对象转换为字典表示形式,用于序列化。

AuthCredentials.from_dict

@staticmethod
def from_dict(data: Dict[str, Any]) -> "AuthCredentials"

将字典表示形式转换为认证凭证对象。

AuthCredentials.resolve_value

@abstractmethod
def resolve_value()

解析认证凭证对象中的所有密钥,并返回相应的 Weaviate 对象。所有子类都必须实现此方法。

AuthApiKey

用于 API 密钥认证的 AuthCredentials。默认情况下,它将从环境变量加载api_keyWEAVIATE_API_KEY.

AuthBearerToken

用于 Bearer 令牌认证的 AuthCredentials。默认情况下,它将从环境变量加载access_tokenWEAVIATE_ACCESS_TOKEN,以及refresh_token 从环境变量WEAVIATE_REFRESH_TOKEN. WEAVIATE_REFRESH_TOKEN 环境变量是可选的。

AuthClientCredentials

用于客户端凭证认证的 AuthCredentials。默认情况下,它将从环境变量加载client_secretWEAVIATE_CLIENT_SECRET,以及scope 从环境变量WEAVIATE_SCOPE. WEAVIATE_SCOPE 环境变量是可选的,如果设置了,它可以是单个字符串或空格分隔的字符串列表。例如:“scope1”或“scope1 scope2”。

AuthClientPassword

用于用户名和密码认证的 AuthCredentials。默认情况下,它将从环境变量加载usernameWEAVIATE_USERNAME, password 从环境变量WEAVIATE_PASSWORD,以及scope 从环境变量WEAVIATE_SCOPE. WEAVIATE_SCOPE 环境变量是可选的,如果设置了,它可以是单个字符串或空格分隔的字符串列表。例如:“scope1”或“scope1 scope2”。

模块 haystack_integrations.document_stores.weaviate.document_store

WeaviateDocumentStore

一个 WeaviateDocumentStore 实例,您可以与 Weaviate Cloud Services 或自托管实例一起使用。

与 Weaviate Cloud Services 的用法示例

import os
from haystack_integrations.document_stores.weaviate.auth import AuthApiKey
from haystack_integrations.document_stores.weaviate.document_store import WeaviateDocumentStore

os.environ["WEAVIATE_API_KEY"] = "MY_API_KEY"

document_store = WeaviateDocumentStore(
    url="rAnD0mD1g1t5.something.weaviate.cloud",
    auth_client_secret=AuthApiKey(),
)

与自托管 Weaviate 的用法示例

from haystack_integrations.document_stores.weaviate.document_store import WeaviateDocumentStore

document_store = WeaviateDocumentStore(url="https://:8080")

WeaviateDocumentStore.__init__

def __init__(*,
             url: Optional[str] = None,
             collection_settings: Optional[Dict[str, Any]] = None,
             auth_client_secret: Optional[AuthCredentials] = None,
             additional_headers: Optional[Dict] = None,
             embedded_options: Optional[EmbeddedOptions] = None,
             additional_config: Optional[AdditionalConfig] = None,
             grpc_port: int = 50051,
             grpc_secure: bool = False)

创建 WeaviateDocumentStore 的新实例并连接到 Weaviate 实例。

参数:

  • url: weaviate 实例的 URL。
  • collection_settings: 要使用的集合设置。如果None,它将使用一个名为default 的集合,具有以下属性
  • _original_id: text
  • content: text
  • blob_data: blob
  • blob_mime_type: text
  • score: number 文档meta 字段在默认集合设置中被省略,因为我们无法假设 meta 字段的结构。我们强烈建议为您的用例创建一个具有正确 meta 属性的自定义集合。另一个选择是依赖自动模式生成,但对于生产使用不推荐。有关集合及其属性的更多信息,请参阅官方Weaviate 文档 <https://weaviate.io/developers/weaviate/manage-data/collections>_。
  • auth_client_secret: 认证凭证。根据认证模式,可以是以下类型之一
  • AuthBearerToken 使用现有的访问令牌(可选,但推荐使用刷新令牌)
  • AuthClientPassword 使用用户名和密码进行 OIDC 资源所有者密码流
  • AuthClientCredentials 使用客户端密钥进行 OIDC 客户端凭证流
  • AuthApiKey 使用 API 密钥
  • additional_headers: 请求中包含的附加头。可用于设置 OpenAI/HuggingFace 密钥。OpenAI/HuggingFace 密钥如下所示
{"X-OpenAI-Api-Key": "<THE-KEY>"}, {"X-HuggingFace-Api-Key": "<THE-KEY>"}
  • embedded_options: 如果设置,则在客户端内部创建嵌入式 Weaviate 集群。有关选项的完整列表,请参阅weaviate.embedded.EmbeddedOptions.
  • additional_config: Weaviate 的附加和高级配置选项。
  • grpc_port: 用于 gRPC 连接的端口。
  • grpc_secure: 是否为底层 gRPC API 使用安全通道。

WeaviateDocumentStore.to_dict

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

将组件序列化为字典。

返回值:

包含序列化数据的字典。

WeaviateDocumentStore.from_dict

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

从字典反序列化组件。

参数:

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

返回值:

反序列化后的组件。

WeaviateDocumentStore.count_documents

def count_documents() -> int

返回 DocumentStore 中存在的文档数量。

WeaviateDocumentStore.filter_documents

def filter_documents(
        filters: Optional[Dict[str, Any]] = None) -> List[Document]

返回与提供的过滤器匹配的文档。

有关过滤器的详细规范,请参阅 DocumentStore.filter_documents() 协议文档。

参数:

  • filters: 要应用于文档列表的过滤器。

返回值:

与给定过滤器匹配的文档列表。

WeaviateDocumentStore.write_documents

def write_documents(documents: List[Document],
                    policy: DuplicatePolicy = DuplicatePolicy.NONE) -> int

使用指定的策略将文档写入 Weaviate。我们建议使用 OVERWRITE 策略,因为它比其他策略对 Weaviate 更快,因为它使用了批量 API。对于其他策略,我们无法使用批量 API,因为它不返回有关文档是否已存在的任何信息。这使我们无法在使用 FAIL 策略时返回错误,或者在使用 SKIP 策略时跳过文档。

WeaviateDocumentStore.delete_documents

def delete_documents(document_ids: List[str]) -> None

从 DocumentStore 中删除所有具有匹配 document_ids 的文档。

参数:

  • document_ids: 要删除的 object_ids。

WeaviateDocumentStore.delete_all_documents

def delete_all_documents(*,
                         recreate_index: bool = False,
                         batch_size: int = 1000) -> None

删除集合中的所有文档。

如果 recreate_index 为 False,则保留集合但逐个删除文档。如果 recreate_index 为 True,则删除并忠实地重新创建集合。出于性能原因,推荐此操作。

参数:

模块 haystack_integrations.components.retrievers.weaviate.bm25_retriever

WeaviateBM25Retriever

一个使用 BM25 算法从 Weaviate 检索文档的组件。

示例用法

from haystack_integrations.document_stores.weaviate.document_store import WeaviateDocumentStore
from haystack_integrations.components.retrievers.weaviate.bm25_retriever import WeaviateBM25Retriever

document_store = WeaviateDocumentStore(url="https://:8080")
retriever = WeaviateBM25Retriever(document_store=document_store)
retriever.run(query="How to make a pizza", top_k=3)

WeaviateBM25Retriever.__init__

def __init__(*,
             document_store: WeaviateDocumentStore,
             filters: Optional[Dict[str, Any]] = None,
             top_k: int = 10,
             filter_policy: Union[str, FilterPolicy] = FilterPolicy.REPLACE)

创建 WeaviateBM25Retriever 的新实例。

参数:

  • document_store: 此检索器将使用的 WeaviateDocumentStore 实例。
  • filters: 运行检索器时应用的自定义过滤器
  • top_k: 要返回的最大文档数
  • filter_policy: 确定如何应用过滤器的策略。

WeaviateBM25Retriever.to_dict

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

将组件序列化为字典。

返回值:

包含序列化数据的字典。

WeaviateBM25Retriever.from_dict

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

从字典反序列化组件。

参数:

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

返回值:

反序列化后的组件。

WeaviateBM25Retriever.run

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

使用 BM25 算法从 Weaviate 检索文档。

参数:

  • query: 查询文本。
  • filters: 应用于检索到的文档的过滤器。运行时过滤器的应用方式取决于初始化检索器时选择的filter_policy。有关更多详细信息,请参阅 init 方法文档字符串。
  • top_k: 要返回的最大文档数。

模块 haystack_integrations.components.retrievers.weaviate.embedding_retriever

WeaviateEmbeddingRetriever

一个检索器,它使用 Weaviate 的向量搜索来根据查询的嵌入查找相似文档。

WeaviateEmbeddingRetriever.__init__

def __init__(*,
             document_store: WeaviateDocumentStore,
             filters: Optional[Dict[str, Any]] = None,
             top_k: int = 10,
             distance: Optional[float] = None,
             certainty: Optional[float] = None,
             filter_policy: Union[str, FilterPolicy] = FilterPolicy.REPLACE)

创建 WeaviateEmbeddingRetriever 的新实例。

参数:

  • document_store: 此检索器将使用的 WeaviateDocumentStore 实例。
  • filters: 运行检索器时应用的自定义过滤器。
  • top_k: 要返回的最大文档数。
  • distance: 文档嵌入之间允许的最大距离。
  • certainty: 结果项与搜索向量之间的归一化距离。
  • filter_policy: 确定如何应用过滤器的策略。

引发:

WeaviateEmbeddingRetriever.to_dict

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

将组件序列化为字典。

返回值:

包含序列化数据的字典。

WeaviateEmbeddingRetriever.from_dict

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

从字典反序列化组件。

参数:

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

返回值:

反序列化后的组件。

WeaviateEmbeddingRetriever.run

@component.output_types(documents=List[Document])
def run(query_embedding: List[float],
        filters: Optional[Dict[str, Any]] = None,
        top_k: Optional[int] = None,
        distance: Optional[float] = None,
        certainty: Optional[float] = None) -> Dict[str, List[Document]]

使用向量搜索从 Weaviate 检索文档。

参数:

  • query_embedding: 查询的嵌入。
  • filters: 应用于检索到的文档的过滤器。运行时过滤器的应用方式取决于初始化检索器时选择的filter_policy。有关更多详细信息,请参阅 init 方法文档字符串。
  • top_k: 要返回的最大文档数。
  • distance: 文档嵌入之间允许的最大距离。
  • certainty: 结果项与搜索向量之间的归一化距离。

引发:

模块 haystack_integrations.components.retrievers.weaviate.hybrid_retriever

WeaviateHybridRetriever

一个检索器,它使用 Weaviate 的混合搜索根据查询的嵌入查找相似文档。

WeaviateHybridRetriever.__init__

def __init__(*,
             document_store: WeaviateDocumentStore,
             filters: Optional[Dict[str, Any]] = None,
             top_k: int = 10,
             alpha: Optional[float] = None,
             max_vector_distance: Optional[float] = None,
             filter_policy: Union[str, FilterPolicy] = FilterPolicy.REPLACE)

创建 WeaviateHybridRetriever 的新实例。

参数:

  • document_store: 此检索器将使用的 WeaviateDocumentStore 实例。

  • filters: 运行检索器时应用的自定义过滤器。

  • top_k: 要返回的最大文档数。

  • alpha: Weaviate 中混合检索的混合因子。必须在范围内[0.0, 1.0]。Weaviate 混合搜索将关键字(BM25)和向量分数合并到一个排名中。alpha 控制每个部分对最终分数的贡献度

  • alpha = 0.0:仅使用关键字(BM25)评分。

  • alpha = 1.0:仅使用向量相似度评分。

  • 介于两者之间的值会混合两者;较高的值偏向向量分数,较低的值偏向 BM25。

如果None,则使用 Weaviate 服务器默认值。

有关混合搜索参数的更多详细信息,请参阅官方 Weaviate 文档混合搜索参数 <https://weaviate.io/developers/weaviate/search/hybrid#parameters>_ 混合搜索 <https://docs.weaviate.io/weaviate/concepts/search/hybrid-search>_

  • max_vector_distance: 可选阈值,将混合搜索的向量部分限制在最大向量距离内的候选者。在混合之前,将距离大于此阈值的候选者排除在向量部分之外。

使用此参数来修剪低质量的向量匹配,同时仍受益于关键字召回率。将其保留为None 可在没有显式截止值的情况下使用 Weaviate 的默认行为。

有关混合搜索参数的更多详细信息,请参阅官方 Weaviate 文档

  • 混合搜索参数 <https://weaviate.io/developers/weaviate/search/hybrid#parameters>_
  • 混合搜索 <https://docs.weaviate.io/weaviate/concepts/search/hybrid-search>_
  • filter_policy: 确定如何应用过滤器的策略。

WeaviateHybridRetriever.to_dict

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

将组件序列化为字典。

返回值:

包含序列化数据的字典。

WeaviateHybridRetriever.from_dict

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

从字典反序列化组件。

参数:

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

返回值:

反序列化后的组件。

WeaviateHybridRetriever.run

@component.output_types(documents=List[Document])
def run(query: str,
        query_embedding: List[float],
        filters: Optional[Dict[str, Any]] = None,
        top_k: Optional[int] = None,
        alpha: Optional[float] = None,
        max_vector_distance: Optional[float] = None
        ) -> Dict[str, List[Document]]

使用混合搜索从 Weaviate 检索文档。

参数:

  • query: 查询文本。

  • query_embedding: 查询的嵌入。

  • filters: 应用于检索到的文档的过滤器。运行时过滤器的应用方式取决于初始化检索器时选择的filter_policy。有关更多详细信息,请参阅 init 方法文档字符串。

  • top_k: 要返回的最大文档数。

  • alpha: Weaviate 中混合检索的混合因子。必须在范围内[0.0, 1.0]。Weaviate 混合搜索将关键字(BM25)和向量分数合并到一个排名中。alpha 控制每个部分对最终分数的贡献度

  • alpha = 0.0:仅使用关键字(BM25)评分。

  • alpha = 1.0:仅使用向量相似度评分。

  • 介于两者之间的值会混合两者;较高的值偏向向量分数,较低的值偏向 BM25。

如果None,则使用 Weaviate 服务器默认值。

有关混合搜索参数的更多详细信息,请参阅官方 Weaviate 文档混合搜索参数 <https://weaviate.io/developers/weaviate/search/hybrid#parameters>_ 混合搜索 <https://docs.weaviate.io/weaviate/concepts/search/hybrid-search>_

  • max_vector_distance: 可选阈值,将混合搜索的向量部分限制在最大向量距离内的候选者。在混合之前,将距离大于此阈值的候选者排除在向量部分之外。

使用此参数来修剪低质量的向量匹配,同时仍受益于关键字召回率。将其保留为None 可在没有显式截止值的情况下使用 Weaviate 的默认行为。

有关混合搜索参数的更多详细信息,请参阅官方 Weaviate 文档

  • 混合搜索参数 <https://weaviate.io/developers/weaviate/search/hybrid#parameters>_
  • 混合搜索 <https://docs.weaviate.io/weaviate/concepts/search/hybrid-search>_