Todos los productos
Search
Centro de documentos

Tablestore:Consulta vectorial KNN

Última actualización: Sep 03, 2026

La búsqueda vectorial con Tablestore SDK para Java devuelve los datos más cercanos en un índice de búsqueda según la similitud vectorial y admite umbrales de puntuación, recuentos de candidatos y filtros no vectoriales.

Requisitos previos

  • Se inicializó una instancia de OTSClient. Para obtener más información, consulte Initialize a Tablestore client.

  • Se creó un índice de búsqueda y se configuró el campo vectorial en la tabla de datos. Para obtener más información, consulte Create a search index.

Notas de uso

  • La función de consulta vectorial KNN es compatible con Tablestore SDK para Node.js versión 5.5.0 o posterior. Asegúrese de tener instalada una versión compatible de Tablestore SDK para Node.js.

    Nota

    Para obtener información sobre el historial de versiones de Tablestore SDK para Node.js, consulte Version history of Tablestore SDK for Java.

  • Existen límites aplicables al número de tipos de campos vectoriales, dimensiones y otras propiedades. Para obtener más información, consulte Search index limits.

  • El índice de búsqueda se particiona en el servidor. Cada partición devuelve sus propios vecinos más cercanos TopK y luego los resultados se agregan en el nodo cliente. Por lo tanto, si utiliza un token para paginar todos los datos, el número total de filas devueltas depende del número de particiones del servidor.

Parámetros

Ejemplo

El código de ejemplo a continuación muestra cómo consultar los diez vecinos más cercanos de un vector específico en una tabla de datos. En este caso, el valor de la columna col_keyword de los vectores vecinos más cercanos debe ser igual a "0" y el valor de la columna col_long debe estar entre 0 y 50.

const tableName = "<TABLE_ANME>"
const indexName = "<SEARCH_INDEX_NAME>"

async function knnVectorQuery() {
    return new Promise(function (resolve, reject) {
        let params = {
            tableName: tableName,
            indexName: indexName,
            searchQuery: {
                offset: 0,
                limit: 10,
                query: {
                    queryType: TableStore.QueryType.KNN_VECTOR_QUERY,
                    query: {
                        fieldName: "col_vector",
                        topK: TableStore.Long.fromNumber(10),
                        float32QueryVector: [1.0, 1.1, 1.2, -1.3],
                        filter: {
                            queryType: TableStore.QueryType.BOOL_QUERY,
                            query: {
                                mustQueries: [
                                    {
                                        queryType: TableStore.QueryType.RANGE_QUERY,
                                        query: {
                                            fieldName: "col_long",
                                            rangeFrom: TableStore.Long.fromNumber(0),
                                            includeLower: true,
                                            rangeTo: TableStore.Long.fromNumber(50),
                                            includeUpper: true,
                                        }
                                    },
                                    {
                                        queryType: TableStore.QueryType.TERM_QUERY,
                                        query: {
                                            fieldName: "col_keyword",
                                            term: "0",
                                        }
                                    },
                                ],
                            }
                        },
                    },
                },
                sort: {
                    sorters: [
                        {
                            scoreSort: {
                                order: TableStore.SortOrder.SORT_ORDER_DESC // Sort the query results based on the scores in descending order.
                            }
                        }
                    ],
                },
                getTotalCount: false,
            },
            columnToGet: {
                returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
                returnNames: ["col_long", "col_keyword"]
            },
            timeoutMs: 10000,
        }
        client.search(params, function (err, data) {
            if (err) {
                console.log('search error:', err.toString());
                reject(err);
            } else {
                console.log('RequestId:', data.RequestId);
                for (let i = 0; i < data.searchHits.length; i++) {
                    let hit = data.searchHits[i]
                    console.log('Score:', hit.score, 'Row:', hit.row);
                }
                resolve(data)
            }
        });
    })
}
knnVectorQuery();

Preguntas frecuentes

Optimize vector retrieval performance in Tablestore

Referencias

  • Los índices de búsqueda admiten los siguientes tipos de consulta: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query, vector query y exists query. Seleccione un tipo de consulta para recuperar datos según sus requisitos empresariales.

    Si desea ordenar o paginar las filas que cumplen con las condiciones de consulta, utilice la función de ordenamiento y paginación. Para obtener más información, consulte Sorting and paging.

    Si necesita agrupar el conjunto de resultados según una columna específica, utilice la función de colapso (distinct). De este modo, los datos del tipo especificado aparecen solo una vez en los resultados de la consulta. Para obtener más información, consulte Collapse (distinct).

  • Para analizar datos en una tabla, como obtener valores extremos, sumas o el número total de filas, ejecute operaciones de agregación o sentencias SQL. Para obtener más información, consulte Aggregation y SQL query.

  • Si requiere obtener rápidamente todas las filas que cumplen con las condiciones de consulta sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para utilizar la función de escaneo paralelo. Para obtener más información, consulte Parallel scan.