En esta página, se proporciona información detallada sobre todas las funciones de asistencia vectorial disponibles y sus parámetros obligatorios y opcionales.
vector_assist.define_spec
Define una nueva especificación de vector, o especificación de vector, y devuelve las recomendaciones necesarias para aumentar la carga de trabajo del vector. Esta función aplica las especificaciones proporcionadas por el usuario para generar las recomendaciones.
Función
CREATE OR REPLACE FUNCTION vector_assist.define_spec(
spec_id TEXT DEFAULT NULL,
table_name TEXT,
schema_name TEXT DEFAULT NULL,
vector_column_name TEXT DEFAULT NULL,
text_column_name TEXT DEFAULT NULL,
vector_index_type TEXT DEFAULT NULL, -- Allowed: 'hnsw', 'ivfflat'
embeddings_available BOOL DEFAULT NULL,
embedding_model TEXT DEFAULT NULL,
num_vectors INT DEFAULT NULL,
dimensionality INT DEFAULT NULL,
distance_func TEXT DEFAULT NULL, -- Allowed: 'cosine', 'ip', 'l2', 'l1'
quantization TEXT DEFAULT NULL, -- Allowed: 'none', 'halfvec', 'bit'
prefilter_column_names TEXT[] DEFAULT NULL,
memory_budget_kb INT DEFAULT NULL, -- In KB
target_recall FLOAT DEFAULT NULL,
target_top_k INT DEFAULT NULL,
tune_vector_index BOOL DEFAULT FALSE, -- Set to true if target_recall is set
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
spec_id |
Obligatorio (generado automáticamente) | Es un ID único para la especificación de vector que defines. |
table_name |
¿Es obligatorio? | Es el nombre de la tabla que se usará en la configuración de la carga de trabajo de vectores. |
schema_name |
Opcional | Es el esquema que contiene la tabla que se usará en la carga de trabajo de vectores. El esquema se infiere automáticamente en función de la ruta de búsqueda del esquema. |
vector_column_name |
Opcional u obligatorio | Es el nombre de la columna que contiene las incorporaciones de vectores. Esta columna es obligatoria si usas más de una columna de vectores y no se declara text_column_name. Si solo usas una columna de vectores, este parámetro es opcional. |
text_column_name |
Opcional u obligatorio | Es el nombre de la columna de texto. Si tu carga de trabajo de vectores requiere la generación de incorporaciones a partir de una columna de texto, este parámetro es obligatorio. Esta columna es obligatoria si el parámetro vector_column_name es
NULL y no hay otras columnas de vectores.Este parámetro usa la extensión google_ml_integration para
generar embeddings a partir de la columna de texto proporcionada. |
vector_index_type |
Opcional | Es el tipo de índice vectorial. Los valores aceptables son los siguientes:
|
embeddings_available |
Opcional | Es un valor booleano que verifica si existen embeddings de vectores en la tabla seleccionada.
Este campo se establece en FALSE si no se detectan columnas de vectores y se establece el parámetro text_column_name. |
embedding_model |
Opcional u obligatorio | Es el ID del modelo de google_ml.models que se usará para generar las incorporaciones. Este campo es opcional, a menos que el parámetro
embeddings_available sea FALSE o
NULL. |
num_vectors |
Opcional | Es la cantidad de vectores en la tabla. |
dismensionality |
Opcional | Dimensión de los vectores proporcionados. |
distance_func |
Opcional | Es la función de distancia que se usará para comparar el vector. Los valores aceptables incluyen cosine, ip, l2 o l1. |
quantization |
Opcional | Es la cuantización para los índices vectoriales. Los valores aceptables incluyen none, halfvec o bit. |
prefilter_column_names |
Opcional | Crea un índice para la columna especificada para el prefiltrado. Esto podría ayudar a mejorar el rendimiento de las consultas con un filtro de alta selectividad en la columna. |
memory_budget_kb |
Opcional | Es la memoria máxima (en KB) para la creación de índices. |
target_recall |
Opcional | Es la recuperación objetivo para las búsquedas vectoriales estándares. |
target_top_k |
Opcional | Son los K valores de coincidencia principales que se recuperarán para el cálculo de la recuperación.
Este valor se usa si se especifica el parámetro target_recall. |
tune_vector_index |
Opcional | Ajusta los índices vectoriales en tu carga de trabajo. Si está habilitado, Vector Assist ajusta automáticamente el índice de vectores o la búsqueda con la especificación de vectores y calcula los parámetros óptimos de la base de datos y el índice. Los valores aceptables incluyen TRUE o FALSE. |
Valor que se muestra
Devuelve una tabla de recomendaciones que se deben aplicar para configurar la carga de trabajo de vectores solicitada. Cada fila es una sola recomendación que contiene una consulta en SQL ejecutable y una explicación detallada de por qué se debe aplicar la recomendación. La recomendación se puede aplicar con la función apply_recommendation().
La tabla de recomendaciones contiene las siguientes columnas:
| Nombre de la columna | Tipo | Descripción |
|---|---|---|
recommendation_id |
Texto | Es el ID de la recomendación. La recomendación se aplica con este ID. |
vector_spec_id |
Texto | Es el ID de la especificación del vector asociado a la recomendación. |
table_name |
Texto | Es el nombre de la tabla asociada a la recomendación. |
schema_name |
Texto | Nombre del esquema que contiene la tabla especificada. |
query |
Texto | Es la consulta en SQL ejecutable que se debe ejecutar para lograr el resultado de la recomendación. |
recommendation |
Texto | Es la explicación de la recomendación, incluido el resultado esperado una vez que se aplique. Esta columna también contiene el motivo y la justificación de la recomendación. Puedes usar este contexto para ajustar la búsqueda según sea necesario y volver a generar recomendaciones. |
applied |
Booleano | Muestra si se aplicó la recomendación. |
modified |
Booleano | Muestra si el usuario modificó la recomendación. |
created_at |
Marca de tiempo con zona horaria | Es la fecha y hora en que se generó la recomendación en formato timestamp with time zone. Por ejemplo, 2024-07-18 09:00:00-08. |
vector_assist.list_specs
Devuelve la especificación del vector actual para una tabla y una columna determinadas.
Función
CREATE OR REPLACE FUNCTION vector_assist.list_specs(
table_name TEXT,
column_name TEXT DEFAULT NULL
)
RETURNS SETOF vector_assist.VECTOR_SPECS
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
table_name |
¿Es obligatorio? | Es el nombre de la tabla para la que se recupera la especificación del vector. |
column_name |
Opcional | Es el nombre de la columna por la que se filtrará la tabla antes de devolver la especificación. Si se especifica el nombre de la columna, se devuelven las especificaciones que contienen nombres de columnas de texto o vector que coinciden con este nombre de columna. |
Valor que se muestra
Devuelve una tabla de especificaciones para la tabla determinada y, de manera opcional, el nombre de la columna.
vector_assist.modify_spec
Modifica una especificación de vector existente. Cuando se modifica la especificación de vector, se vuelven a generar las recomendaciones asociadas en función de las nuevas especificaciones.
Función
CREATE OR REPLACE FUNCTION vector_assist.modify_spec(
spec_id TEXT,
table_name TEXT DEFAULT NULL,
schema_name TEXT DEFAULT NULL,
vector_column_name TEXT DEFAULT NULL,
text_column_name TEXT DEFAULT NULL,
vector_index_type TEXT DEFAULT NULL,
embeddings_available BOOL DEFAULT NULL,
num_vectors INT DEFAULT NULL,
dimensionality INT DEFAULT NULL,
embedding_model TEXT DEFAULT NULL,
prefilter_column_names TEXT[] DEFAULT NULL,
distance_func TEXT DEFAULT NULL,
quantization TEXT DEFAULT NULL,
memory_budget_kb INT DEFAULT NULL,
target_recall FLOAT DEFAULT NULL,
target_top_k INT DEFAULT NULL,
tune_vector_index BOOL DEFAULT NULL
)
RETURNS SETOF vector_assist.RECOMMENDATIONS
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
spec_id |
Obligatorio (generado automáticamente) | Es un ID único para la especificación de vector que defines. |
table_name |
¿Es obligatorio? | Es el nombre de la tabla que se usará en la configuración de la carga de trabajo de vectores. |
schema_name |
Opcional | Es el esquema que contiene la tabla que se usará en la carga de trabajo de vectores. El esquema se infiere automáticamente en función de la ruta de búsqueda del esquema. |
vector_column_name |
Opcional u obligatorio | Es el nombre de la columna que contiene las incorporaciones de vectores. Esta columna es obligatoria si usas más de una columna de vectores y no se declara text_column_name. Si solo usas una columna de vectores, este parámetro es opcional. |
text_column_name |
Opcional u obligatorio | Es el nombre de la columna de texto. Si tu carga de trabajo de vectores requiere la generación de incorporaciones a partir de una columna de texto, este parámetro es obligatorio. Esta columna es obligatoria si el parámetro vector_column_name es
NULL y no hay otras columnas de vectores.Este parámetro usa la extensión google_ml_integration para
generar embeddings a partir de la columna de texto proporcionada. |
vector_index_type |
Opcional | Es el tipo de índice vectorial. Los valores aceptables son los siguientes:
|
embeddings_available |
Opcional | Es un valor booleano que verifica si existen embeddings de vectores en la tabla seleccionada.
Este campo se establece en FALSE si no se detectan columnas de vectores y se establece el parámetro text_column_name. |
embedding_model |
Opcional u obligatorio | Es el ID del modelo de google_ml.models que se usará para generar las incorporaciones. Este campo es opcional, a menos que el parámetro
embeddings_available sea FALSE o
NULL. |
num_vectors |
Opcional | Es la cantidad de vectores en la tabla. |
dismensionality |
Opcional | Dimensión de los vectores proporcionados. |
distance_func |
Opcional | Es la función de distancia que se usará para comparar el vector. Los valores aceptables incluyen cosine, ip, l2 o l1. |
quantization |
Opcional | Es la cuantización para los índices vectoriales. Los valores aceptables incluyen none, halfvec o bit. |
prefilter_column_names |
Opcional | Identifica las columnas que están disponibles para el prefiltrado en las consultas de búsqueda vectorial. |
memory_budget_kb |
Opcional | Es la memoria máxima (en KB) para la creación de índices. |
target_recall |
Opcional | Es la recuperación objetivo para las búsquedas vectoriales estándares. |
target_top_k |
Opcional | Son los K valores de coincidencia principales que se recuperarán para el cálculo de la recuperación.
Este valor se usa si se especifica el parámetro target_recall. |
tune_vector_index |
Opcional | Ajusta los índices vectoriales en tu carga de trabajo. Si está habilitado, Vector Assist ajusta automáticamente el índice de vectores o la búsqueda con la especificación de vectores y calcula los parámetros óptimos de la base de datos y el índice. Los valores aceptables incluyen TRUE o FALSE. |
Valor que se muestra
Devuelve una tabla actualizada de recomendaciones que se deben aplicar para configurar la carga de trabajo de vectores solicitada. Cada fila es una sola recomendación que contiene una consulta en SQL ejecutable y una explicación detallada de por qué se debe aplicar la recomendación. La recomendación se puede aplicar con la función apply_recommendation().
La tabla de recomendaciones contiene las siguientes columnas:
| Nombre de la columna | Tipo | Descripción |
|---|---|---|
recommendation_id |
Texto | Es el ID de la recomendación. La recomendación se aplica con este ID. |
vector_spec_id |
Texto | Es el ID de la especificación del vector asociado a la recomendación. |
table_name |
Texto | Es el nombre de la tabla asociada a la recomendación. |
schema_name |
Texto | Nombre del esquema que contiene la tabla especificada. |
query |
Texto | Es la consulta en SQL ejecutable que se debe ejecutar para lograr el resultado de la recomendación. |
recommendation |
Texto | Es la explicación de la recomendación, incluido el resultado esperado una vez que se aplique. Esta columna también contiene el motivo y la justificación de la recomendación. Puedes usar este contexto para ajustar la búsqueda según sea necesario y volver a generar recomendaciones. |
applied |
Booleano | Muestra si se aplicó la recomendación. |
modified |
Booleano | Muestra si el usuario modificó la recomendación. |
created_at |
Marca de tiempo con zona horaria | Es la fecha y hora en que se generó la recomendación. |
vector_assist.get_recommendations
Devuelve las recomendaciones asociadas con un vector spec_id específico.
Función
CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
spec_id |
¿Es obligatorio? | Obtiene recomendaciones para el vector spec_id especificado. |
Valor que se muestra
Devuelve una tabla de las recomendaciones solicitadas.
La tabla de recomendaciones contiene las siguientes columnas:
| Nombre de la columna | Tipo | Descripción |
|---|---|---|
recommendation_id |
Texto | Es el ID de la recomendación. La recomendación se aplica con este ID. |
vector_spec_id |
Texto | Es el ID de la especificación del vector asociado a la recomendación. |
table_name |
Texto | Es el nombre de la tabla asociada a la recomendación. |
schema_name |
Texto | Nombre del esquema que contiene la tabla especificada. |
query |
Texto | Es la consulta en SQL ejecutable que se debe ejecutar para lograr el resultado de la recomendación. |
recommendation |
Texto | Es la explicación de la recomendación, incluido el resultado esperado una vez que se aplique. Esta columna también contiene el motivo y la justificación de la recomendación. Puedes usar este contexto para ajustar la búsqueda según sea necesario y volver a generar recomendaciones. |
applied |
Booleano | Muestra si se aplicó la recomendación. |
modified |
Booleano | Muestra si el usuario modificó la recomendación. |
created_at |
Marca de tiempo con zona horaria | Es la fecha y hora en que se generó la recomendación. |
vector_assist.apply_recommendation
Aplica una sola recomendación con recommendation_id.
Función
CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
recommenation_id |
¿Es obligatorio? | ID de la recomendación de vector que se aplicará. |
Valor que se muestra
Devuelve un valor booleano que confirma si se aplicó correctamente una recomendación y actualiza la columna de la tabla vector_assist.RECOMMENDATIONS applied a TRUE.
Si la asistencia vectorial no puede aplicar la recomendación, se mostrará un mensaje de error.
vector_assist.apply_spec
Aplica todas las recomendaciones asociadas con un vector spec_id o un nombre de tabla específicos. Esta función revisa todas las recomendaciones y ejecuta la función vector_assist.apply_recommendation en cada una de ellas.
Se debe especificar un spec_id o un table_name para ejecutar la función.
Función
CREATE OR REPLACE FUNCTION vector_assist.apply_spec(
spec_id TEXT DEFAULT NULL,
table_name TEXT DEFAULT NULL,
schema_name TEXT DEFAULT NULL,
column_name TEXT DEFAULT NULL -- text_column_name or vector_column_name
)
RETURNS BOOLEAN;
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
spec_id |
Opcional | Aplica todas las recomendaciones para el vector spec_id determinado.
|
table_name |
Opcional | Aplica todas las recomendaciones para la tabla determinada. |
schema_name |
Opcional | Es el esquema que contiene la tabla especificada. |
column_name |
Opcional | Identifica el text_column_name o el vector_column_name que se usará si la tabla contiene varias especificaciones de vectores. |
Valor que se muestra
Devuelve un valor booleano que confirma si se aplicaron correctamente todas las recomendaciones y establece el valor en la columna de la tabla vector_assist.RECOMMENDATIONS applied en TRUE para todas las recomendaciones.
Si la asistencia vectorial no puede aplicar la recomendación, se mostrará un mensaje de error.
vector_assist.modify_recommendation
Modifica la búsqueda de una recomendación específica y establece el campo modified en la tabla vector_assist.RECOMMENDATIONS de la recomendación asociada en TRUE.
Función
CREATE OR REPLACE FUNCTION vector_assist.modify_recommendation(
recommendation_id TEXT,
modified_query TEXT
)
RETURNS BOOLEAN;
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
recommendation_id |
¿Es obligatorio? | ID de la recomendación que se modificará. |
modified_query |
¿Es obligatorio? | Es una consulta en SQL modificada por el usuario para la recomendación. |
Valor que se muestra
Devuelve un valor booleano que confirma si se actualizó correctamente una recomendación y establece la columna de la tabla vector_assist.RECOMMENDATIONS modified en TRUE.
Si la asistencia vectorial no puede actualizar la recomendación, se mostrará un mensaje de error.
vector_assist.generate_query
Genera una búsqueda de vectores optimizada en función de la especificación de vectores y los parámetros de búsqueda definidos. Esta función podría ajustar el valor de ef_search para cumplir con el valor de target_recall establecido, si corresponde.
Función
CREATE OR REPLACE FUNCTION vector_assist.generate_query(
spec_id TEXT DEFAULT NULL,
table_name TEXT DEFAULT NULL,
schema_name TEXT DEFAULT NULL,
column_name TEXT DEFAULT NULL, -- text_column_name or vector_column_name of the spec
search_text TEXT DEFAULT NULL,
search_vector VECTOR DEFAULT NULL, -- e.g. '[1.0,2.0,3.0]'::vector
output_column_names TEXT[] DEFAULT NULL, -- Columns to retrieve, NULL for SELECT *
top_k INT DEFAULT NULL,
filter_expressions TEXT[] DEFAULT NULL,
target_recall FLOAT DEFAULT NULL, -- Inherited from spec, can be overridden
iterative_index_search BOOL DEFAULT NULL
)
RETURNS TEXT; -- Returns the text representing the search query
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
spec_id |
Opcional | Especifica el spec_id para el que se generará la consulta. |
table_name |
Opcional | Especifica el nombre de la tabla para la que se generará la búsqueda si no se proporciona spec_id. Si una tabla contiene varias especificaciones, el parámetro muestra un error. |
column_name |
Opcional | Especifica el nombre de la columna para la que se generará la búsqueda si no se proporciona spec_id. Si la columna contiene varias especificaciones, el parámetro muestra un error. El column_name puede ser el text_column_name o el vector_column_name. |
output_column_name |
Opcional | Nombres de las columnas que se recuperarán en la consulta de salida. Para recuperar todas las columnas, establece este parámetro en NULL. |
search_text |
Opcional | Es el texto de búsqueda para el que se generarán las incorporaciones. Requiere el embedding_model en la especificación del vector. El embedding se genera con el modelo de la especificación. Solo puedes establecer el parámetro search_text o el search_vector. |
search_vector |
Opcional | Es el vector de la búsqueda. Solo puedes establecer el parámetro search_text o el parámetro search_vector. |
top_k |
Opcional | Es la cantidad de vecinos más cercanos que se devolverán. |
filter_expressions |
Opcional | Son las expresiones de filtro que se aplicarán en la búsqueda. Los filtros se pueden aplicar a los campos de la tabla, como precio < 100. |
iterative_index_search |
Opcional | Establece si se debe realizar una búsqueda de índice iterativa para las búsquedas filtradas.Este parámetro anula la configuración en la especificación del vector. |
target_recall |
Opcional | Es la recuperación objetivo solo para la búsqueda. Este parámetro anula la configuración en la especificación del vector y ajusta ef_search. |
Valor que se muestra
Devuelve un texto que contiene la búsqueda de vectores para los parámetros determinados. Esta consulta se puede ejecutar o guardar para ejecutarla más adelante.
vector_assist.evaluate_query_recall
Evalúa la recuperación del índice de vectores para una búsqueda determinada. Esta función usa la base de datos y las configuraciones de índice en una cadena JSON como entradas.
Función
CREATE OR REPLACE FUNCTION vector_assist.evaluate_query_recall(
IN ann_query text,
IN vector_search_configurations json DEFAULT NULL,
OUT recall float,
OUT ann_execution_time float,
OUT ground_truth_execution_time float,
OUT index_type text)
RETURNS RECORD
Parámetros
| Parámetro | ¿Es obligatorio? | Descripción |
|---|---|---|
ann_query |
¿Es obligatorio? | Es la consulta en SQL para la que se debe evaluar la recuperación. Esta consulta debe ser una consulta de pgvector ANN. |
vector_search_configurations |
Opcional | Son los parámetros de configuración que se pueden establecer para la búsqueda de ANN. Este parámetro debe estar en formato JSON. |
Valor que se muestra
Devuelve una tabla que evalúa la recuperación del índice de vectores para la búsqueda determinada.
La tabla contiene las siguientes columnas:
| Nombre de la columna | Tipo | Descripción |
|---|---|---|
recall |
Número de punto flotante | Es el porcentaje de vectores que devuelve el índice y que son vecinos más cercanos verdaderos. Esta métrica se utiliza para cuantificar la calidad de la búsqueda. Esta función te permite ajustar los parámetros para devolver los resultados esperados de recuperación de la búsqueda vectorial. |
ann_execution_time |
Número de punto flotante | Es el tiempo que tarda en ejecutarse una búsqueda de vectores con análisis de índices. |
ground_truth_execution_time |
Número de punto flotante | Es el tiempo que tarda la consulta en ejecutarse con un análisis secuencial. |
Ejemplo
En el siguiente ejemplo, se evalúa la recuperación para un índice HNSW y se anula el parámetro de configuración HNSW.ef_search:
SELECT * FROM vector_assist.evaluate_query_recall(
ann_query => 'SELECT id FROM items ORDER BY embedding <=> ''[1,2,3]'' LIMIT 10',
vector_search_configurations => '{"hnsw.ef_search": 30}'
);