聚合数据
Aggregate 查询处理结果集以返回计算结果。使用 aggregate 查询来处理对象组或整个结果集。
其他信息
要运行 Aggregate 查询,请指定以下内容:
-
要搜索的目标集合
-
一个或多个聚合属性,例如:
- 一个元属性
- 一个对象属性
groupedBy属性
-
为每个选定的属性选择至少一个子属性
有关详细信息,请参阅 Aggregate。
检索 count 元属性
返回与查询匹配的对象数量。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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 属性
此示例计算出现频率
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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 属性
此示例演示了使用整数进行聚合。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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 属性。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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>操作符。groupBypath限制为单个属性或交叉引用。不支持嵌套路径。
使用 similarity search 进行聚合
您可以使用 Aggregate 与 相似性搜索 操作符(Near 操作符之一)。
使用 objectLimit 指定要聚合的最大对象数量。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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 指定对象的相似程度。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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
}
}
]
}
}
}
使用 hybrid search 进行聚合
您可以使用 Aggregate 与 混合搜索 操作符。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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 来缩小搜索范围。
更多信息文档中的代码片段反映了最新的客户端库和 Weaviate 数据库版本。请查看 发行说明 以获取特定版本。
如果某个片段无法工作或您有任何反馈,请打开一个 GitHub issue。
如果某个片段无法工作或您有任何反馈,请打开一个 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
}
}
]
}
}
}
相关页面
问题和反馈
如果您有任何问题或反馈,请在 用户论坛 中告诉我们。
