Use el Tablestore SDK for Go para consultar las filas TopK cuyos vectores son más similares a un vector de consulta.
Requisitos previos
Antes de empezar, complete los pasos a continuación:
Instale el Tablestore Go SDK e inicialice un cliente.
Cree un índice de búsqueda que contenga un campo Vector. Para obtener más información, consulte Create a search index.
Descripción
La búsqueda vectorial usa KnnVectorQuery para calcular la distancia entre un vector de consulta y los vectores de un campo Vector, y devuelve las filas TopK más similares. Use Filter para restringir candidatos y MinScore para excluir filas con una puntuación inferior al umbral.
Se aplican límites al número y las dimensiones de los campos Vector, así como a parámetros como TopK. Para obtener más información, consulte Search index limits.
Un índice de búsqueda contiene varias particiones del lado del servidor. Cada partición devuelve sus propias filas TopK más cercanas y un coordinador combina los resultados. Por lo tanto, al usar la paginación basada en token, el número total de filas recuperables depende del número de particiones del índice.
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
query := &search.KnnVectorQuery{
FieldName: "embedding",
TopK: proto.Int32(10),
NumCandidates: proto.Int32(100),
Float32QueryVector: []float32{1, 0, 0, 0},
MinScore: proto.Float32(0.1),
Filter: &search.TermQuery{
FieldName: "category",
Term: "books",
},
}
searchQuery := search.NewSearchQuery().
SetQuery(query).
SetSort(&search.Sort{Sorters: []search.Sorter{search.NewScoreSort()}})
response, err := client.Search(&tablestore.SearchRequest{
TableName: "example_table",
IndexName: "example_vector_index",
SearchQuery: searchQuery,
ColumnsToGet: &tablestore.ColumnsToGet{
ReturnAllFromIndex: true,
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.SearchHits)
Parámetros
Solicitud de consulta
|
Nombre |
Tipo |
Descripción |
|
TableName (obligatorio) |
string |
Nombre de la tabla de datos. |
|
IndexName (obligatorio) |
string |
Nombre del índice de búsqueda. |
|
SearchQuery (obligatorio) |
search.SearchQuery |
Condición de consulta y configuraciones comunes de consulta. |
|
ColumnsToGet (opcional) |
*tablestore.ColumnsToGet |
Configuración de columnas a devolver. Si se omite este parámetro, solo se devuelven las columnas de clave principal. |
|
RoutingValues (opcional) |
[]*tablestore.PrimaryKey |
Valores de clave principal para campos de enrutamiento personalizado. Omita este parámetro si no configuró el enrutamiento personalizado. |
|
TimeoutMs (opcional) |
*int32 |
Tiempo de espera de la solicitud en milisegundos. |
Configuración de consulta
|
Nombre |
Tipo |
Descripción |
|
SetQuery (obligatorio) |
search.Query |
Especifica la condición de consulta. |
|
SetOffset (opcional) |
int32 |
Especifica la posición inicial. Valor predeterminado: 0. En la paginación basada en desplazamiento, Offset + Limit no puede superar 100,000. |
|
SetLimit (opcional) |
int32 |
Especifica el número máximo de filas a devolver. Valor predeterminado: 10. Valor máximo: 100. Un valor de 0 no devuelve ninguna fila. |
|
SetCollapse (opcional) |
*search.Collapse |
Contrae los resultados de la consulta. Para obtener más información, consulte Collapse query results. |
|
SetSort (opcional) |
*search.Sort |
Especifica el orden de clasificación de resultados. Para obtener más información, consulte Sort and paginate results. |
|
SetGetTotalCount (opcional) |
bool |
Especifica si se deben contar todas las filas coincidentes. Valor predeterminado: false. |
|
SetToken (opcional) |
[]byte |
Especifica el valor NextToken devuelto por la respuesta anterior. Este método borra Sort porque el token contiene las condiciones de clasificación de la página anterior. No especifique Offset cuando use paginación basada en token. |
|
SetSearchFilter (opcional) |
*search.SearchFilter |
Aplica un filtro posterior a la consulta. Para obtener más información, consulte Use post-query filters. |
|
Aggregation (opcional) |
...search.Aggregation |
Configura agregaciones. Para obtener más información, consulte Aggregation. |
|
GroupBy (opcional) |
...search.GroupBy |
Configura agrupaciones. Para obtener más información, consulte Aggregation. |
Condición de consulta vectorial
|
Nombre |
Tipo |
Descripción |
|
FieldName (obligatorio) |
string |
Nombre del campo Vector. |
|
TopK (obligatorio) |
*int32 |
Número de filas más cercanas a devolver. Un valor mayor generalmente mejora la recuperación, pero aumenta la latencia y el costo. |
|
Float32QueryVector (obligatorio) |
[]float32 |
Vector de consulta. Su dimensión debe coincidir con la configuración del campo de índice. |
|
Filter (opcional) |
search.Query |
Filtro para filas candidatas. Son compatibles todos los tipos de consulta excepto la búsqueda vectorial. |
|
MinScore (opcional) |
*float32 |
Umbral de puntuación mínima. El valor debe ser mayor o igual a 0. Valor predeterminado: 0. Solo se devuelven las filas cuyas puntuaciones superan este valor. |
|
NumCandidates (opcional) |
*int32 |
Número de vectores candidatos para reclasificación. El valor no debe ser menor que TopK. Un valor mayor generalmente mejora la recuperación, pero aumenta la latencia. |
|
Weight (opcional) |
*float32 |
Peso de relevancia de la condición de consulta. |
Columnas a devolver
|
Nombre |
Tipo |
Descripción |
|
Columns (opcional) |
[]string |
Columnas de atributos a devolver. Este parámetro solo surte efecto cuando ReturnAll y ReturnAllFromIndex son ambos false. |
|
ReturnAll (opcional) |
bool |
Especifica si se deben devolver todas las columnas de atributos de la tabla de datos. Valor predeterminado: false. |
|
ReturnAllFromIndex (opcional) |
bool |
Especifica si se deben devolver todas las columnas de atributos indexadas. Valor predeterminado: false. No configure este parámetro y ReturnAll como true simultáneamente. |
Respuesta
|
Nombre |
Tipo |
Descripción |
|
TotalCount |
int64 |
Número total de filas coincidentes. El valor depende de SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Filas devueltas por la consulta actual. El número no supera el valor especificado por SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Aciertos de búsqueda. Lea este campo cuando use resaltado, aciertos internos anidados o puntuaciones de relevancia. |
|
NextToken |
[]byte |
Token para la siguiente página. Si el valor no está vacío, páselo a la siguiente consulta. |
|
IsAllSuccess |
bool |
Indica si se consultaron todas las particiones del índice. Si el valor es false, se devuelven resultados parciales y TotalCount puede ser menor que el número real de filas coincidentes. |
|
AggregationResults |
search.AggregationResults |
Resultados de agregación. |
|
GroupByResults |
search.GroupByResults |
Resultados de agrupación. |