Weaviate 转换代理:用法
Weaviate 转换代理旨在就地修改 Weaviate 中的数据。 在代理处于技术预览阶段时,请勿在生产环境中使用它。 代理可能无法按预期工作,并且您的 Weaviate 实例中的数据可能会受到意外影响。
Weaviate 转换代理是一种代理服务,旨在利用生成模型增强和转换数据。使用转换代理将新属性附加到 Weaviate 中现有对象的数据上,或更新现有属性。
这可以帮助您提高 Weaviate 集合中对象的质量,以便在您的应用程序中进一步使用。

此页面介绍了如何使用 Weaviate 转换代理来转换和增强 Weaviate 中的数据。
先决条件
Weaviate 实例
此代理仅可用于 Weaviate Cloud 实例。
有关如何设置 Weaviate Cloud 实例的更多信息,请参阅 Weaviate Cloud 文档。
您可以在 Weaviate Cloud 上使用免费的 Sandbox 实例试用此 Weaviate 代理。
客户端库
目前,此代理仅适用于 Python。未来将添加对其他语言的支持。
您可以使用可选的 agents 额外选项安装 Weaviate 客户端库,以使用 Weaviate 代理。这将安装 weaviate-agents 包以及 weaviate-client 包。
使用以下命令安装客户端库
用法
要使用转换代理,请使用必需的输入对其进行实例化并启动操作。
转换操作是异步的。每个操作都会将工作流 ID 返回给用户。使用此 ID 检查其状态。
以下显示了示例用法。
先决条件
转换代理与 Weaviate Cloud 紧密集成。因此,转换代理仅可用于 Weaviate Cloud 实例和受支持版本的客户端库。
连接到 Weaviate
您必须连接到 Weaviate Cloud 实例才能使用转换代理。使用 Weaviate 客户端库连接到 Weaviate Cloud 实例。
# [🚧 CAUTION 🚧] DO NOT USE ON PRODUCTION DATA.
# The Transformation Agent will modify your data in place.
# While the Transformation Agent is in technical preview,
# it is recommended to only use it on test data.
import os
import weaviate
from weaviate.classes.init import Auth
headers = {
# END SimpleTransformationAgentExample
"X-Cohere-API-Key": os.environ.get("COHERE_API_KEY"),
# START SimpleTransformationAgentExample
# Provide your required API key(s), e.g. Cohere, OpenAI, etc. for the configured vectorizer(s)
"X-INFERENCE-PROVIDER-API-KEY": os.environ.get("YOUR_INFERENCE_PROVIDER_KEY", ""),
}
client = weaviate.connect_to_weaviate_cloud(
cluster_url=os.environ.get("WEAVIATE_URL"),
auth_credentials=Auth.api_key(os.environ.get("WEAVIATE_API_KEY")),
headers=headers,
)
定义转换操作
在启动转换代理之前,您必须定义转换操作。使用以下信息定义操作
- 操作类型
- 目标属性名称
- 用作上下文的属性
- 说明
- (对于新属性) 新属性的数据类型
以下显示了示例操作。
将新属性附加到数据
可以根据现有属性值和用户说明将新属性附加到对象。
# [🚧 CAUTION 🚧] DO NOT USE ON PRODUCTION DATA.
# The Transformation Agent will modify your data in place.
# While the Transformation Agent is in technical preview,
# it is recommended to only use it on test data.
from weaviate.agents.classes import Operations
add_french_abstract = Operations.append_property(
property_name="french_abstract",
data_type=DataType.TEXT,
view_properties=["abstract"],
instruction="Translate the abstract to French",
)
add_nlp_relevance = Operations.append_property(
property_name="nlp_relevance",
data_type=DataType.INT,
view_properties=["abstract"],
instruction="""Give a score from 0-10 based on how relevant the abstract is to Natural Language Processing.
The scale is from 0 (not relevant at all) to 10 (very relevant)""",
)
is_survey_paper = Operations.append_property(
property_name="is_survey_paper",
data_type=DataType.BOOL,
view_properties=["abstract"],
instruction="""Determine if the paper is a "survey".
A paper is considered survey it's a surveys existing techniques, and not if it presents novel techniques""",
)
更新现有属性
可以根据现有属性值和用户说明更新对象上的现有属性值。
# [🚧 CAUTION 🚧] DO NOT USE ON PRODUCTION DATA.
# The Transformation Agent will modify your data in place.
# While the Transformation Agent is in technical preview,
# it is recommended to only use it on test data.
from weaviate.agents.classes import Operations
update_topics = Operations.update_property(
property_name="topics",
view_properties=["abstract", "title"],
instruction="""Create a list of topic tags based on the title and abstract.
Topics should be distinct from eachother. Provide a maximum of 3 topics.
Group similar topics under one topic tag.""",
)
启动转换操作
要启动转换操作,请使用所需的输入实例化转换代理并启动操作。
使用 Weaviate 客户端、目标集合名称和转换操作列表实例化转换代理。
# [🚧 CAUTION 🚧] DO NOT USE ON PRODUCTION DATA.
# The Transformation Agent will modify your data in place.
# While the Transformation Agent is in technical preview,
# it is recommended to only use it on test data.
from weaviate.agents.transformation import TransformationAgent
agent = TransformationAgent(
client=client,
collection="ArxivPapers",
operations=[
add_french_abstract,
add_nlp_relevance,
is_survey_paper,
update_topics,
],
)
response = agent.update_all()
print(response) # The response is a TransformationResponse object, including the workflow_id
监控作业状态
您可以使用工作流 ID 监控每个转换操作的状态。
# [🚧 CAUTION 🚧] DO NOT USE ON PRODUCTION DATA.
# The Transformation Agent will modify your data in place.
# While the Transformation Agent is in technical preview,
# it is recommended to only use it on test data.
print(agent.get_status(workflow_id=response.workflow_id)) # Use the workflow_id to check the status of each operation
限制与故障排除
使用限制
目前,每个 Weaviate Cloud 组织每天的转换代理操作限制为 50,000 次。
请注意,此限制是针对单个操作而言的。换句话说,在包含 2,500 个对象的集合上使用 4 个操作的转换代理将耗尽当天的限制。
此限制可能会在转换代理的未来版本中更改。
模型输入上下文长度
由于底层模型的限制,转换操作的输入上下文长度受到限制。我们建议将输入上下文长度保持在 ~25000 个字符以下。
换句话说,输入上下文(用作上下文的属性)和说明的总长度应保持在此限制以下。如果模型输入上下文长度超过限制,则转换操作将失败。
多个操作上的竞争条件
当在同一集合上启动多个转换操作时,可能会发生竞争条件,导致一个操作的结果被另一个操作的结果覆盖。
可以通过确保一次只对一个集合执行一个操作来避免这种情况。如果您需要在同一集合上执行多个操作,请确保按顺序执行这些操作。
您可以通过使用前一个操作的工作流 ID 来监控其状态,然后再启动下一个操作来执行此操作。
这将在转换代理的未来版本中得到解决。
问题和反馈
如果您有任何问题或反馈,请在 用户论坛 中告诉我们。

