跳至主要内容
前往文档
⌘U
Weaviate 数据库

使用 Weaviate 的 APIs 和工具开发 AI 应用

部署

部署、配置和维护 Weaviate 数据库

Weaviate Agents

使用 Weaviate 构建和部署智能代理

Weaviate Cloud

在云端管理和扩展 Weaviate

更多资源

集成
贡献者指南
活动 & 工作坊
Weaviate Academy

需要帮助?

Weaviate Logo询问 AI 助手⌘K
社区论坛

Weaviate 个性化代理

仅 Weaviate Cloud
技术预览

This Weaviate Agent is in technical preview. This Weaviate Agent is in technical preview.

在此处注册 以获取有关 Weaviate Agents 的通知,或访问 此页面 以查看最新更新并提供反馈。

Weaviate 个性化代理是一种代理服务,旨在返回针对每个用户量身定制的个性化推荐。个性化代理使用关联的 Weaviate Cloud 实例中的数据来提供这些推荐。

术语:用户 vs 开发人员

个性化代理旨在为特定的人提供量身定制的个性化推荐。在这种情况下,此人将被称为用户。开发人员是使用个性化代理来提供这些推荐的人。

开发人员只需提供用户配置文件,个性化代理就会负责所有中间步骤,从 Weaviate 中提供一组个性化推荐。开发人员的最终工作流程如下

Weaviate Personalization Agent from a developer perspective Weaviate Personalization Agent from a developer perspective

更新日志和反馈

Weaviate Agents 的官方更新日志可以在 这里找到。如果您有反馈,例如功能请求、错误报告或问题,请 在此处提交,您将能够查看反馈状态并对其他人的反馈进行投票。

架构

个性化代理作为 Weaviate Cloud 上的服务提供。

当发出特定于用户的推荐请求时,个性化代理会分析用户配置文件和任何其他已知上下文,以自主地执行搜索。上下文可能包括有关先前用户交互的数据、有关用户本身的信息以及任何其他相关信息。

个性化代理使用上下文信息不仅可以检索最相关的推荐,还可以为用户对它们进行排名。

个性化代理:可视化工作流程

Weaviate Personalization Agent at a high level Weaviate Personalization Agent at a high level

个性化代理的工作原理如下

  • 创建一个 Weaviate 管理的用户集合,该集合将存储每个用户的配置文件和先前交互。
  • 当发出个性化推荐请求时,个性化代理会获取用户数据并分析它以确定模式和偏好。
  • 根据分析结果在 Weaviate 中执行初始搜索,以检索最相关的推荐。
  • 使用适当的生成模型来确定任何其他搜索策略,并根据需要重新排序检索到的数据。
  • 根据需要,在 Weaviate 中执行其他搜索,以检索最终的推荐集合。
  • 根据用户的配置文件和偏好组合和排序推荐。

然后,个性化代理会在响应中返回特定于用户的推荐。响应还将包括中间输出,例如来自 Weaviate 的底层搜索结果。

让我们深入了解个性化代理的更多细节。

用户配置文件

个性化代理使用用户配置文件来提供个性化推荐。此信息存储在 Weaviate 实例中的特定名称的集合中。用户配置文件可能包括用户的偏好和先前交互,例如他们的喜欢和不喜欢。

Weaviate Personalization Agent - User Data Collection Weaviate Personalization Agent - User Data Collection

如这里所示,用户数据集合可以随着时间的推移进行更新。它可以更新为有关新用户的信息,或有关现有用户的新信息。

这将有助于个性化代理继续学习并为每个用户提供最相关、最新的推荐。

推荐

个性化代理的推荐有两个主要组成部分:它执行的搜索以检索推荐,以及推荐的排序。

搜索

个性化代理在 Weaviate 中执行搜索,以从指定的集合中检索用户最相关的推荐。

Weaviate Personalization Agent - Searches Weaviate Personalization Agent - Searches

该图表表明搜索过程可能基于多种因素

  • 从用户数据集合中获取的用户的配置文件和偏好。
  • 从用户数据集合中获取的用户的先前交互。
  • 推荐上下文,例如请求的推荐类型或任何其他相关信息。
  • 个性化代理确定的其他搜索策略。

个性化代理可能会在 Weaviate 中执行多次搜索以检索最相关的推荐,然后再组合和排序它们。

(重新)排序

个性化代理使用多种因素对从 Weaviate 检索到的推荐进行排序,以便最终结果集针对用户的偏好量身定制。

Weaviate Personalization Agent - (re)rank Weaviate Personalization Agent - (re)rank

排名可能基于多种因素

  • 从用户数据集合中获取的用户的配置文件和偏好。
  • 从用户数据集合中获取的用户的先前交互。
  • 推荐上下文,例如请求的推荐类型或任何其他相关信息。
  • 个性化代理确定的其他排名策略。

此过程将整个组合结果集进行排名,然后再将其返回到响应中。

基本用法

以下是如何使用此 Weaviate 代理的概述。有关更多详细信息,请参阅用法页面。

先决条件

此代理仅可与 Weaviate Cloud 实例和受支持版本的 Weaviate 客户端库一起使用。

示例用法

要使用个性化代理,请使用以下输入对其进行实例化

  • Weaviate 客户端的实例(例如,Python 中的WeaviateClient对象),连接到 Weaviate Cloud 实例。
  • 要获取个性化项目的目标集合的名称。
  • 基于个性化的一组用户属性。

请注意,个性化代理是持久的。这意味着,如果您之前创建过个性化代理,则无需创建新的代理即可再次连接到它。

from weaviate.agents.personalization import PersonalizationAgent
from weaviate.classes.config import DataType


if PersonalizationAgent.exists(client, "Movie"):
# Connect to an existing agent
pa = PersonalizationAgent.connect(
client=client, reference_collection="Movie", vector_name="default"
)
else:
# Instantiate a new agent, and specify the collection to query
# The Personalization Agent will automatically also connect to the user data collection
pa = PersonalizationAgent.create(
client=client,
reference_collection="Movie",
vector_name="default",
user_properties={
"age": DataType.NUMBER,
"favorite_genres": DataType.TEXT_ARRAY,
"favorite_years": DataType.NUMBER_ARRAY,
"language": DataType.TEXT,
},
)

然后,添加一个角色,它将被用于个性化推荐。

from weaviate.util import generate_uuid5
from uuid import uuid4 # If you want to generate a random UUID

persona_id = generate_uuid5("sebawita") # To generate a deterministic UUID
# persona_id = uuid4() # To generate a random UUID

pa.add_persona(
Persona(
persona_id=persona_id,
properties={
"age": 74,
"favorite_genres": ["Action", "Horror", "Romance"],
"favorite_years": [1979, 1981, 1984, 1985],
"language": "Hungarian",
},
)
)

然后,您可以向该角色添加一组交互。

from weaviate.agents.classes import PersonaInteraction

# Note: `movie_dict` is a dictionary of movie titles to their corresponding objects
interactions = [
PersonaInteraction(
persona_id=persona_id, item_id=movie_dict["Avatar 2"].uuid, weight=0.8
), # Strongly positive
PersonaInteraction(
persona_id=persona_id, item_id=movie_dict["Twister"].uuid, weight=0.5
), # Somewhat positive
PersonaInteraction(
persona_id=persona_id, item_id=movie_dict["The Howling"].uuid, weight=0.1
), # Almost neutral
PersonaInteraction(
persona_id=persona_id, item_id=movie_dict["Magic Mike"].uuid, weight=-0.3
), # Somewhat negative
PersonaInteraction(
persona_id=persona_id, item_id=movie_dict["The Emoji Movie"].uuid, weight=-1.0
), # Strongly negative
]

pa.add_interactions(interactions=interactions)

添加用户数据后,可以使用个性化代理从 Weaviate 集合中获取个性化推荐。

response = pa.get_objects(persona_id)

for i, obj in enumerate(response.objects):
print(obj.properties)

更多文档

有关如何使用此代理的更多详细信息,请参阅用法页面。

问题和反馈

如果您有任何问题或反馈,请在 用户论坛 中告诉我们。