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,则删除并忠实地重新创建集合。出于性能原因,推荐此操作。
参数:
recreate_index: 使用删除和重新创建策略。(推荐用于性能)batch_size: 仅当 recreate_index 为 false 时相关。定义删除的批量大小。请注意,此参数必须小于或等于设置的QUERY_MAXIMUM_RESULTSWeaviate 部署变量(默认为 10000)。参考: https://docs.weaviate.io/weaviate/manage-objects/delete#delete-all-objects
模块 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: 确定如何应用过滤器的策略。
引发:
ValueError: 如果同时提供了distance和certainty。有关distance和certainty参数的更多信息,请参阅 https://weaviate.io/developers/weaviate/api/graphql/search-operators#variables。
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: 结果项与搜索向量之间的归一化距离。
引发:
ValueError: 如果同时提供了distance和certainty。有关distance和certainty参数的更多信息,请参阅 https://weaviate.io/developers/weaviate/api/graphql/search-operators#variables。
模块 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>_
