La asistencia de vectores en AlloyDB para PostgreSQL proporciona un framework de SQL declarativo que te permite implementar, ajustar y administrar cargas de trabajo de búsqueda de vectores en tus instancias. Puedes definir tus requisitos de búsqueda de vectores, generar y aplicar parámetros de configuración de SQL recomendados y supervisar el rendimiento de las cargas de trabajo. Para obtener más información sobre cómo funciona el asistente de vectores, consulta Descripción general del asistente de vectores.
Antes de comenzar
- Confirma que tu instancia use la versión de mantenimiento correcta.
Vector Assist 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 de rendimiento. Habilita la extensión de asistencia de vectores con el siguiente comando en la base de datos que quieras usar:
CREATE EXTENSION vector_assist CASCADE;Esto genera el esquema
vector_assist, que usa el asistente de vectores.
Usa el asistente de vectores para implementar una carga de trabajo de vectores
Para usar el asistente de vectores con el objetivo de implementar y administrar una carga de trabajo de vectores, debes hacer lo siguiente:
- Define tu especificación de vector
- Visualiza las recomendaciones de Vector Assist
- Aplica las recomendaciones de Vector Assist
Define la especificación de tu vector
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 función
vector_assist.define_spec
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_assistpuede configurarla automáticamente. Si hay más de una tabla con vectores, debes especificar qué columna usar.TARGET_RECALL(opcional): Es la recuperación objetivo que deseas que cumpla la asistencia de vectores. Si se especifica,vector_assistexperimenta con diferentes valores deef_searchy compara la recuperación en búsquedas exactas de vecinos más cercanos.vector_assistestableceef_searchen el valor que proporciona la recuperación objetivo más cercana. El valor predeterminado es0.95.TUNE_INDEX(opcional): Es un valor booleano que especifica si el asistente de vectores ajusta los índices de vectores 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 de vectores, consulta Referencias de funciones de asistencia de vectores.
Después de ejecutar la consulta para crear tu especificación de vectores, el asistente de vectores genera automáticamente pasos, llamados recomendaciones, que debes ejecutar para implementar tu carga de trabajo de vectores.
Consulta las recomendaciones de Vector Assist
Para ver las recomendaciones que genera el asistente de vectores con tu especificación de vectores,
ejecuta la
función
vector_assist.get_recommendations:
SELECT vector_assist.get_recommendations(
spec_id => 'SPEC_ID'
);
Reemplaza SPEC_ID por el ID de la especificación de vectores para la que deseas ver las recomendaciones. Para obtener tu
lista de especificaciones de vectores disponibles, consulta Enumera tus especificaciones de vectores.
vector_assist.get_recommendations devuelve 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 necesitas ejecutar
- Explicación detallada de la recomendación
- Otra información relevante que explica la recomendación
Aplica las recomendaciones de Vector Assist
Puedes aplicar las recomendaciones generadas de forma individual o en conjunto.
Para aplicar una recomendación específica, ejecuta la función
vector_assist.apply_recommendation:
SELECT vector_assist.apply_recommendation(
recommendation_id => 'RECOMMENDATION_ID'
);
Reemplaza RECOMMENDATION_ID
por el ID de la recomendación de Vector Assist que deseas aplicar de la
tabla vector_assist.RECOMMENDATIONS.
Para aplicar todas las recomendaciones juntas, ejecuta la función
vector_assist.apply_spec
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 quieres 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 de vectores.
Una vez que apliques las recomendaciones generadas por el asistente de vectores, el índice vectorial estará listo para usarse.
Genera búsquedas
Puedes usar el asistente de vectores para crear consultas de búsqueda 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 consulta de búsqueda optimizada, ejecuta la función
vector_assist.generate_query:
SELECT vector_assist.generate_query(
spec_id => 'SPEC_ID',
search_vector => 'SEARCH_VECTOR',
top_k => TOP_K,
target_recall => TARGET_RECALL,
filter_expressions => ARRAY['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 consulta de búsqueda. Por ejemplo,[1, 2, 3]TOP_K(opcional): Es la cantidad de vecinos más cercanos que se mostrarán. Si no se especifica, el valor predeterminado es10.TARGET_RECALL(opcional): Es la recuperación objetivo que deseas que cumpla la asistencia de vectores. Si se especifica,vector_assistexperimenta con diferentes valores deef_searchy compara la recuperación en búsquedas exactas de vecinos más cercanos.vector_assistestableceef_searchen el valor que proporciona la recuperación objetivo más cercana.FILTER_EXPRESSION(opcional): cualquier filtro 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 consulta de búsqueda, consulta las referencias de la función de asistencia de vectores.
El resultado de esta función devuelve 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 las especificaciones de vectores existentes para una tabla, ejecuta
la función vector_assist.list_specs o usa vector_assist.get_spec para ver
una sola especificación de vectores por ID:
SELECT vector_assist.list_specs(
table_name => 'TABLE_NAME',
column_name => 'COLUMN_NAME'
);
Reemplaza los siguientes parámetros:
TABLE_NAME: Es el nombre de la tabla que usaste para definir tu especificación de vectores.COLUMN_NAME(opcional): es el nombre de la columna de vectores en la tabla. Si se omite,vector_assist.list_specsdevuelve todas las especificaciones de vectores definidas en la tabla especificada. Para recuperar una especificación de vectores específica por ID, llama aSELECT vector_assist.get_spec(spec_id => 'SPEC_ID');.
¿Qué sigue?
- Obtén más información sobre la asistencia de vectores.
- Referencias de funciones de asistencia de vectores.