La búsqueda vectorial de OpenSearch recupera resultados mediante la similitud de vectores en lugar de palabras clave. Al combinarse con la recuperación multicanal, esta función mejora la precisión de los resultados en escenarios como la respuesta a preguntas educativas y la búsqueda de imágenes. Este tema describe la sintaxis de consulta, los ejemplos de configuración y los límites de los índices vectoriales, incluidos los índices de embedding multimodal que aceptan entradas de texto e imagen.
Rutas de consulta
La búsqueda vectorial de OpenSearch ofrece dos rutas de consulta. Elija la ruta que coincida con el método de análisis configurado para su índice vectorial:
Búsqueda vectorial: se pasan los valores del vector directamente en la cadena de consulta. Utilice esta ruta cuando ya cuente con los valores del vector que desea consultar.
Búsqueda de embedding multimodal: se pasa texto o una imagen directamente en la cadena de consulta. El análisis de consultas reescribe la entrada como un vector antes de ejecutar la búsqueda. Esta ruta aplica únicamente cuando el método de análisis del índice vectorial es un análisis de embedding multimodal, como
qwen3_vl_embedding_2560doops_mm_embedding_ecom_001.
Sintaxis
query = vector_index:'vector'&vector_search={"vector_index":{"namespaces":[],"threshold":0.5,"top_n":10,"search_params":{}}}
El parámetro opcional vector_search configura las consultas de índices vectoriales. Utiliza un formato de diccionario donde cada clave es el nombre del índice vectorial que se va a consultar y cada valor es la configuración de consulta correspondiente. La clave debe coincidir con el nombre del índice vectorial utilizado en la cadena de consulta. A continuación se describen los parámetros de configuración más comunes.
|
Parámetro |
Tipo |
Valor predeterminado |
Descripción |
|
namespaces |
|
Divide un índice vectorial por namespace para limitar las consultas a particiones específicas del índice. Máximo: 10,000 namespaces. Si se configuran namespaces, debe especificar uno en cada consulta. |
|
|
threshold |
float |
Umbral mínimo de puntuación para la búsqueda vectorial. Se excluyen los resultados cuya puntuación sea inferior a este valor. |
|
|
top_n |
uint32 |
Cantidad de resultados principales que devuelve la búsqueda vectorial. |
|
|
search_params.qc_scan_ratio |
float |
0.01 |
Proporción de documentos analizados en una consulta de índice QC. La cantidad de documentos analizados se calcula así: |
|
search_params.hnsw_ef |
uint32 |
500 |
Cantidad de documentos analizados en una consulta de índice HNSW. Un valor más alto proporciona una tasa de recuperación mayor, pero requiere más tiempo. |
El parámetro vector_search también es válido en escenarios de multi-channel recall.
El siguiente ejemplo consulta un índice vectorial de 64 dimensiones. El bloque de código contiene únicamente el valor del vector y no representa una cadena de consulta completa.
vector: '0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'
Ejemplos de consulta
Cada ejemplo muestra el formato recomendado de vector_search junto con el formato anterior del parámetro al que reemplaza.
Establecer un umbral de puntuación mínima
Descripción: excluye los resultados cuya puntuación de distancia vectorial sea inferior al umbral especificado.
Formato anterior del parámetro:&sf=number
Formato nuevo del parámetro:vector_search={"vector_index":{"threshold":0.8}}
Ejemplo:
# Old version
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&sf=0.8'
# New version
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6'&vector_search={"index_name":{"threshold":0.8}}
Especificar top_n
Descripción: define la cantidad de resultados principales que devuelve la búsqueda vectorial.
Formato anterior del parámetro:&n=number
Formato nuevo del parámetro:vector_search={"vector_index":{"top_n":10}}
Ejemplo:
# Old version
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
# New version
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6'&vector_search={"index_name":{"top_n":10}}
Ordenar resultados por puntuación vectorial
Establezca proxima_score(index_name) en la expresión de ordenamiento fino para obtener la puntuación de distancia vectorial.
index_name: el nombre del índice vectorial.Tipo de retorno:
float. Para los documentos que no devuelve la búsqueda vectorial, la distancia vectorial es 10,000 de forma predeterminada.Ejemplo:
proxima_score(your_vector_index).
Procedimiento:
Vaya a Search Algorithm Center > Sort Configuration > Policy Configuration y haga clic en Create. Establezca el ámbito de aplicación en Default fine sort y seleccione Expression como tipo.
En la página Search Test, configure el parámetro
second_rank_namepara hacer referencia a la directiva de ordenamiento fino que creó y, a continuación, ejecute una consulta de búsqueda vectorial.Compare los resultados de búsqueda de la directiva de ordenamiento fino predeterminada con los de la directiva personalizada. Si el resultado de la fórmula de ordenamiento muestra
SecondRank: expression[proxima_score(vec)], result[100.000000], la puntuación de distancia vectorial entró en vigor correctamente.
Límites
A continuación se detallan los límites aplicables a la búsqueda vectorial:
Métrica de distancia: OpenSearch utiliza la distancia euclidiana (l2) como métrica de distancia vectorial durante la creación del índice de forma predeterminada. Para usar la distancia de producto interno (ip), normalice los vectores antes de pasarlos al motor.
Interpretación de la puntuación: en la distancia de producto interno (ip), una puntuación vectorial más alta indica mayor relevancia del documento. En la distancia euclidiana (l2), una puntuación más baja indica mayor relevancia.
Tipo de campo: el campo que corresponde a un índice vectorial debe ser del tipo
DOUBLE_ARRAY.Dimensiones compatibles: el tokenizer vectorial admite dimensiones de 64, 128, 256 y 512. La cantidad de elementos en el campo
DOUBLE_ARRAYdebe coincidir exactamente con la dimensión configurada para el índice vectorial.Longitud de consulta y cantidad de índices: la longitud máxima de la cadena del vector de consulta es de 4 KB antes de la codificación. Por lo general, una sola consulta admite hasta dos índices vectoriales.
Búsqueda de embedding multimodal
Cuando el método de análisis de un índice vectorial es un análisis de embedding multimodal, como qwen3_vl_embedding_2560d o ops_mm_embedding_ecom_001, puede pasar texto o una imagen directamente en la consulta. El análisis de consultas reescribe automáticamente la entrada como un vector y luego ejecuta la búsqueda. Una consulta multimodal acepta una entrada unimodal (texto o una URL de imagen) o una entrada multimodal (texto e imagen en la misma consulta).
Consulta unimodal: la consulta de búsqueda es texto o una URL de imagen. Las URL de imagen solo admiten los protocolos http y https.
# Text query
query=mm_vector:'dress'
# Image query
query=mm_vector:'https://example.com/a.jpg'
Consulta multimodal: la consulta de búsqueda es una cadena JSON que contiene tanto texto como una imagen. (Recomendado) Encierre la cadena JSON entre comillas simples. Si utiliza comillas dobles, escápelas.
query=mm_vector:'{"text":"dress","image":"https://example.com/a.jpg"}'
Una vez que el análisis de consultas reescribe la solicitud, las consultas anteriores se convierten a formato vectorial, como mm_vector:'1.0,2.0,3.0', y después se procesan. Este valor vectorial solo ilustra el formato convertido y no indica una cantidad de dimensiones compatible.
Región personalizada de reconocimiento de objetos: en escenarios de búsqueda de imágenes, utilice el parámetro object_location para especificar la ubicación objetivo del reconocimiento de objetos. El formato es x,y,width,height. Este parámetro surte efecto únicamente en búsquedas de imágenes.
Límites
La búsqueda de embedding multimodal está sujeta a los siguientes límites adicionales:
Índices vectoriales por aplicación: una aplicación puede tener un máximo de dos índices vectoriales.
Tabla de origen de datos: los campos incluidos en un índice de embedding multimodal deben pertenecer a la misma tabla de origen de datos.
Tamaño de imagen: el límite de tamaño de la imagen es de 15 MB.
Protocolos compatibles: las consultas en línea solo admiten entradas
httpyhttps. Los documentos sin conexión también admiten entradashttp,https,ossybase64.
Códigos de error relacionados
Los siguientes códigos de error están relacionados con la búsqueda multimodal:
|
Código de error |
Descripción |
|
|
El reconocimiento de objetos finalizó con errores. |
|
|
El índice vectorial en la configuración de análisis de consultas no es válido. |
|
|
El campo de origen configurado para el índice vectorial no es válido. |
|
|
Los campos de origen no pertenecen a la misma tabla de origen de datos. |
|
|
Tipo de modalidad no compatible. |