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

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

部署

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

Weaviate Agents

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

Weaviate Cloud

在云端管理和扩展 Weaviate

更多资源

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

需要帮助?

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

聚合数据

Aggregate 查询处理结果集以返回计算结果。使用 aggregate 查询来处理对象组或整个结果集。

其他信息

要运行 Aggregate 查询,请指定以下内容:

  • 要搜索的目标集合

  • 一个或多个聚合属性,例如:

    • 一个元属性
    • 一个对象属性
    • groupedBy 属性
  • 为每个选定的属性选择至少一个子属性

有关详细信息,请参阅 Aggregate

检索 count 元属性

返回与查询匹配的对象数量。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.over_all(total_count=True)

print(response.total_count)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"meta": {
"count": 10000
}
}
]
}
}
}

聚合 text 属性

此示例计算出现频率

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Metrics

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.over_all(
return_metrics=Metrics("answer").text(
top_occurrences_count=True,
top_occurrences_value=True,
min_occurrences=5 # Threshold minimum count
)
)

print(response.properties["answer"].top_occurrences)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"answer": {
"count": 10000,
"topOccurrences": [
{
"occurs": 19,
"value": "Australia"
},
{
"occurs": 18,
"value": "Hawaii"
},
{
"occurs": 16,
"value": "Boston"
},
{
"occurs": 15,
"value": "French"
},
{
"occurs": 15,
"value": "India"
}
],
"type": "text"
}
}
]
}
}
}

聚合 int 属性

此示例演示了使用整数进行聚合。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Metrics

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.over_all(
# Use `.number` for floats (`NUMBER` datatype in Weaviate)
return_metrics=Metrics("points").integer(sum_=True, maximum=True, minimum=True),
)

print(response.properties["points"].sum_)
print(response.properties["points"].minimum)
print(response.properties["points"].maximum)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"points": {
"count": 10000,
"sum": 6324100
}
}
]
}
}
}

聚合 groupedBy 属性

要对结果进行分组,请在查询中使用 groupBy

要检索每个组的聚合数据,请使用 groupedBy 属性。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.aggregate import GroupByAggregate

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.over_all(
group_by=GroupByAggregate(prop="round")
)

# print rounds names and the count for each
for group in response.groups:
print(f"Value: {group.grouped_by.value} Count: {group.total_count}")
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"groupedBy": {
"value": "Double Jeopardy!"
},
"meta": {
"count": 5193
}
},
{
"groupedBy": {
"value": "Jeopardy!"
},
"meta": {
"count": 4522
}
},
{
"groupedBy": {
"value": "Final Jeopardy!"
},
"meta": {
"count": 285
}
}
]
}
}
}
groupBy 限制
  • groupBy 仅适用于 near<Media> 操作符。
  • groupBy path 限制为单个属性或交叉引用。不支持嵌套路径。

您可以使用 Aggregate相似性搜索 操作符(Near 操作符之一)。

使用 objectLimit 指定要聚合的最大对象数量。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Metrics

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.near_text(
query="animals in space",
object_limit=10,
return_metrics=Metrics("points").number(sum_=True),
)

print(response.properties["points"].sum_)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"points": {
"sum": 4600
}
}
]
}
}
}

设置相似性 distance

您可以使用 Aggregate相似性搜索 操作符(Near 操作符之一)。

使用 distance 指定对象的相似程度。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Metrics

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.near_text(
query="animals in space",
distance=0.19,
return_metrics=Metrics("points").number(sum_=True),
)

print(response.properties["points"].sum_)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"points": {
"sum": 2500
}
}
]
}
}
}

您可以使用 Aggregate混合搜索 操作符。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Metrics, BM25Operator

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.hybrid(
query="animals in space",
bm25_operator=BM25Operator.and_(), # Additional parameters available, such as `bm25_operator`, `filter` etc.
object_limit=10,
return_metrics=Metrics("points").number(sum_=True),
)

print(response.properties["points"].sum_)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"points": {
"sum": 6700
}
}
]
}
}
}

过滤结果

为了获得更具体的结果,请使用 filter 来缩小搜索范围。

py docs  API 文档
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。

如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue
from weaviate.classes.query import Filter

jeopardy = client.collections.use("JeopardyQuestion")
response = jeopardy.aggregate.over_all(
filters=Filter.by_property("round").equal("Final Jeopardy!"),
)

print(response.total_count)
示例响应

输出如下所示

{
"data": {
"Aggregate": {
"JeopardyQuestion": [
{
"meta": {
"count": 285
}
}
]
}
}
}

问题和反馈

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