Cómo usar la asistencia de vectores

Selecciona una versión de la documentación:

Usa la asistencia de vectores para implementar y administrar una carga de trabajo de vectores en tus instancias de AlloyDB Omni.

Para obtener más información sobre qué es la asistencia de vectores y cómo funciona, consulta Descripción general de la asistencia de vectores.

Antes de comenzar

  • Confirma que tu instancia de AlloyDB Omni ejecute la versión 18.1.0 o posterior. Para obtener más información sobre la actualización, consulta Actualiza AlloyDB Omni.
  • Habilita la extensión de asistencia de vectores con el siguiente comando en la base de datos que deseas usar:

    CREATE EXTENSION vector_assist CASCADE;
    

    Esto genera el esquema vector_assist, que usa la asistencia de vectores.

Usa la asistencia de vectores para implementar una carga de trabajo de vectores

Para usar la asistencia de vectores para implementar y administrar una carga de trabajo de vectores, debes hacer lo siguiente:

Define tu especificación de vectores

Definir la especificación de vectores, o especificación de vectores, es el primer paso para usar la asistencia de vectores. Según el tipo de carga de trabajo de vectores, los campos que usas para definir tu especificación de vectores pueden ser diferentes.

Por ejemplo, si deseas habilitar la búsqueda semántica en una columna específica de una tabla, ejecuta la vector_assist.define_spec función para definir tu especificación de vectores:

SELECT
  recommendation_id,
  REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
  recommendation,
  vector_spec_id,
  table_name,
  applied,
  modified
FROM vector_assist.define_spec(
  table_name => 'TABLE_NAME',
  vector_column_name => 'VECTOR_COLUMN_NAME',
  target_recall => TARGET_RECALL,
  tune_vector_index => TUNE_INDEX
);

Reemplaza los siguientes parámetros:

  • TABLE_NAME: Es el nombre de la tabla que deseas usar en tu carga de trabajo de vectores.
  • (Opcional) VECTOR_COLUMN_NAME: Es la columna en la que deseas realizar una búsqueda semántica. Si solo tienes una columna con vectores en tu tabla, vector_assist puede configurarla automáticamente. Si hay más de una tabla con vectores, debes especificar qué columna usar.
  • (Opcional) TARGET_RECALL: Es el objetivo de recuperación que deseas que cumpla la asistencia de vectores. Si se especifica, vector_assist experimenta con diferentes valores de ef_search y compara la recuperación en búsquedas exactas y de vecinos más cercanos. vector_assist establece ef_search en el valor que proporciona la recuperación de destino más cercana. El valor predeterminado es 0.95.
  • (Opcional) TUNE_INDEX: Es un valor booleano que especifica si la asistencia de vectores ajusta los índices de vectores en tu carga de trabajo. El valor predeterminado es false, lo que significa que solo se ajustan los parámetros relacionados con la búsqueda (ef_search): los parámetros de tiempo de compilación (m, ef_construction) no se ajustan.

Para ver una lista completa de todos los parámetros disponibles para la especificación de vectores, consulta Referencias de funciones de la asistencia de vectores.

Después de ejecutar la consulta para crear tu especificación de vectores, la asistencia de vectores genera automáticamente pasos, llamados recomendaciones, que debes ejecutar para implementar tu carga de trabajo de vectores.

Consulta las recomendaciones de la asistencia de vectores

Para ver las recomendaciones generadas por la asistencia de vectores con tu especificación de vectores, ejecuta la vector_assist.get_recommendations función:

SELECT vector_assist.get_recommendations(
  spec_id => 'SPEC_ID'
);

Reemplaza SPEC_ID por el ID de especificación de la especificación de vectores para la que deseas ver recomendaciones. Para obtener tu lista de especificaciones de vectores disponibles, consulta Enumera tus especificaciones de vectores.

vector_assist.get_recommendations muestra una tabla llamada vector_assist.RECOMMENDATIONS que contiene todas las recomendaciones. Cada recomendación se almacena en una tabla con el spec_id asociado. Por lo general, cada recomendación contiene la siguiente información:

  • Consulta en SQL que debes ejecutar
  • Explicación detallada de la recomendación
  • Otra información pertinente que explica la recomendación

Aplica las recomendaciones de la asistencia de vectores

Puedes aplicar las recomendaciones generadas de forma individual o en su totalidad.

Para aplicar una recomendación específica, ejecuta la vector_assist.apply_recommendation función:

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

Reemplaza RECOMMENDATION_ID por el ID de la recomendación de la asistencia de vectores que deseas aplicar de la tabla vector_assist.RECOMMENDATIONS.

Para aplicar todas las recomendaciones juntas, ejecuta la vector_assist.apply_spec función con el parámetro spec_id o table_name:

SELECT vector_assist.apply_spec(
  spec_id => 'SPEC_ID'
);

Reemplaza SPEC_ID por el ID de la especificación de vectores que deseas usar.

De manera opcional, también puedes ingresar los parámetros schema_name o column_name. Para obtener información sobre todos los parámetros de consulta disponibles, consulta Referencias de funciones de la asistencia de vectores.

Una vez que aplicas las recomendaciones generadas por la asistencia de vectores, el índice de vectores está listo para usarse.

Genera búsquedas

Puedes usar la asistencia de vectores para ayudarte a crear búsquedas optimizadas para tus cargas de trabajo de vectores implementadas con la especificación de vectores de la carga de trabajo y el índice de vectores generado. Para generar una búsqueda optimizada, ejecuta la vector_assist.generate_query función:

SELECT vector_assist.generate_query(
  spec_id => 'SPEC_ID',
  search_vector => 'SEARCH_VECTOR',
  top_k => 'TOP_K',
  target_recall => TARGET_RECALL,
  filter_expression => 'FILTER_EXPRESSION'
);

Reemplaza los siguientes parámetros:

  • SPEC_ID: Es el ID de la especificación que deseas usar.
  • SEARCH_VECTOR: Es el vector de tu búsqueda. Por ejemplo, [1, 2, 3].
  • (Opcional) TOP_K: Es la cantidad de vecinos más cercanos que se mostrarán. Si no se especifica, el valor predeterminado es 10.
  • (Opcional) TARGET_RECALL: Es el objetivo de recuperación que deseas que cumpla la asistencia de vectores. Si se especifica, vector_assist experimenta con diferentes valores de ef_search y compara la recuperación en búsquedas exactas y de vecinos más cercanos. vector_assist establece ef_search en el valor que proporciona la recuperación de destino más cercana.
  • (Opcional) FILTER_EXPRESSION: Son los filtros para la búsqueda. Por ejemplo, el filtrado basado en otras columnas.

Para ver una lista completa de todos los parámetros disponibles para generar una búsqueda, consulta Referencias de funciones de la asistencia de vectores.

El resultado de esta función muestra texto que contiene una consulta en SQL. Puedes ejecutar o guardar esta consulta en SQL según sea necesario.

Enumera tus especificaciones de vectores

Si necesitas enumerar una especificación de vectores individual o todas las existentes, ejecuta la función vector_assist.list_specs:

SELECT vector_assist.list_specs(
  spec_id => 'SPEC_ID',
  table_name => 'TABLE_NAME'
);

Reemplaza los siguientes parámetros:

  • (Opcional) SPEC_ID: Es el ID de la especificación de vectores que deseas usar.
  • TABLE_NAME: Es el nombre de la tabla que usaste para definir tu especificación de vectores.

¿Qué sigue?