Jimmy小站
小明也有大梦想 — 蒋明/铭OTS 向量检索
2025-05-07 / 未分类 / 495 次围观 / 0 次吐槽suspend fun similaritySearch(param: SimilarityQueryParam): List<AskGroupSimilarityQuery.SearchHit> {
val searchQuery = SearchQuery().apply {
this.query = KnnVectorQuery().apply {
this.fieldName = Columns.QUESTION_VECTOR.name
this.topK = param.limit
this.float32QueryVector = param.floatVector
this.filter = BoolQuery().apply {
val mustQueries = mutableListOf<Query>(
termQuery(AskGroup::orgId, param.orgId),
)
if (param.agentIds.isNotEmpty()) {
mustQueries += termsQuery(AskGroup::agentId, param.agentIds)
}
val beginTimeStamp = param.beginTimeStamp
beginTimeStamp?.let {
mustQueries += RangeQuery().apply {
this.fieldName = DefinedColumns.GMT_CREATE.name
this.greaterThan(ColumnValue.fromLong(it))
}
}
this.mustQueries = mustQueries
}
}
this.limit = param.limit
this.sort = Sort(listOf(ScoreSort()))
}
val request = SearchRequest(tableName, indexName, searchQuery).apply {
this.columnsToGet = SearchRequest.ColumnsToGet().apply {
this.columns = listOf(DefinedColumns.GMT_CREATE.name, Columns.QUESTION.name)
}
}
val resp = asyncClient.searchAsync(request)
return resp.searchHits?.filter { it.score >= param.threshold }?.map {
AskGroupSimilarityQuery.SearchHit(
it.row.primaryKey.getPrimaryKeyColumn(AskGroup::id.name).value.asString(),
it.score,
it.row.getLatestColumn(Columns.QUESTION.name).value.asString(),
Date(it.row.getLatestColumn(DefinedColumns.GMT_CREATE.name).value.asLong())
)
} ?: emptyList()
}
推荐您阅读更多有关于“”的文章
- 上一篇:--add-opens
- 下一篇:
- OTS 向量检索
本月热文
Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996
额 本文暂时没人评论 来添加一个吧
发表评论