La asistencia vectorial en AlloyDB para PostgreSQL proporciona un framework de SQL declarativo que te permite implementar, ajustar y administrar cargas de trabajo de búsqueda vectorial en tus instancias. Puedes definir tus requisitos de búsqueda vectorial, generar y aplicar configuraciones de SQL recomendadas y supervisar el rendimiento de la carga de trabajo. Para obtener más información sobre cómo funciona la asistencia vectorial, consulta Descripción general de la asistencia vectorial.
Antes de comenzar
- Confirma que tu instancia use la versión de mantenimiento correcta. La asistencia vectorial requiere un número de versión de mantenimiento mínimo de
POSTGRES_17.20260128.03_06. Para obtener más información sobre cómo realizar el mantenimiento de autoservicio, consulta Mantenimiento de autoservicio del rendimiento. Habilita la extensión de asistencia vectorial 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 vectorial.
Usa la asistencia vectorial para implementar una carga de trabajo vectorial
Para usar la asistencia vectorial para implementar y administrar una carga de trabajo vectorial, debes hacer lo siguiente:
- Define tu especificación vectorial.
- Consulta las recomendaciones de asistencia vectorial.
- Aplica las recomendaciones de asistencia vectorial.
Define tu especificación vectorial
Definir la especificación vectorial, o especificación vectorial, es el primer paso para usar la asistencia vectorial. Según el tipo de carga de trabajo vectorial, los campos que usas para definir tu especificación vectorial 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 vectorial:
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 vectorial.- (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_assistpuede 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 vectorial. Si se especifica,vector_assistexperimenta con diferentes valores deef_searchy compara la recuperación en búsquedas exactas y de vecinos más cercanos.vector_assistestableceef_searchen el valor que proporciona la recuperación de destino más cercana. El valor predeterminado es0.95. - (Opcional)
TUNE_INDEX: Es un valor booleano que especifica si la asistencia vectorial ajusta los índices vectoriales en tu carga de trabajo. El valor predeterminado esfalse, 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 vectorial, consulta Referencias de funciones de asistencia vectorial.
Después de ejecutar la consulta para crear tu especificación vectorial, la asistencia vectorial genera automáticamente pasos, llamados recomendaciones, que debes ejecutar para implementar tu carga de trabajo vectorial.
Consulta las recomendaciones de asistencia vectorial
Para ver las recomendaciones generadas por la asistencia vectorial con tu especificación vectorial,
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 vectorial para la que deseas ver las recomendaciones. Para obtener tu
lista de especificaciones vectoriales disponibles, consulta Enumera tus especificaciones vectoriales.
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 asistencia vectorial
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 asistencia vectorial 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 vectorial 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 asistencia vectorial.
Una vez que aplicas las recomendaciones generadas por la asistencia vectorial, el índice vectorial está listo para usarse.
Genera búsquedas
Puedes usar la asistencia vectorial para ayudarte a crear búsquedas optimizadas para tus cargas de trabajo vectoriales implementadas con la especificación vectorial de la carga de trabajo y el índice vectorial 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 es10. - (Opcional)
TARGET_RECALL: Es el objetivo de recuperación que deseas que cumpla la asistencia vectorial. Si se especifica,vector_assistexperimenta con diferentes valores deef_searchy compara la recuperación en búsquedas exactas y de vecinos más cercanos.vector_assistestableceef_searchen el valor que proporciona la recuperación de destino más cercana. - (Opcional)
FILTER_EXPRESSION: Son los filtros para la búsqueda. Por ejemplo, filtrar según otras columnas.
Para ver una lista completa de todos los parámetros disponibles para generar una búsqueda, consulta Referencias de funciones de asistencia vectorial.
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 vectoriales
Si necesitas enumerar una especificación vectorial 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 vectorial que deseas usar. TABLE_NAME: Es el nombre de la tabla que usaste para definir tu especificación vectorial.
¿Qué sigue?
- Obtén más información sobre la asistencia vectorial.
- Referencias de funciones de asistencia vectorial.