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()
    }

推荐您阅读更多有关于“”的文章

[一个Java程序猿的转型之路,读研深造,专注机器学习推荐算法]
本站所有文章如无特别注明均为原创。作者:吉米酱 ,复制或转载请以超链接形式注明转自 Jimmy小站
原文地址《OTS 向量检索
额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996