Clasificación y puntuación de los resultados de la búsqueda

En esta página, se describe cómo clasificar o calificar los resultados de la búsqueda de aplicaciones con el extremo del modelo de clasificación de Vertex AI registrado en la administración de extremos de modelos.

La API de clasificación de Vertex AI toma una lista de documentos y los clasifica según su relevancia para una consulta determinada (una cadena de búsqueda). Cuando usas la función ai.rank(), esta muestra puntuaciones sobre qué tan bien un documento responde una consulta determinada.

Para usar las instrucciones de esta página, debes comprender AlloyDB para PostgreSQL y estar familiarizado con los conceptos de IA generativa.

AlloyDB reserva el esquema ai y trata de crearlo cuando instalas la extensión google_ml_integration. Si la creación del esquema falla, usa las funciones con el mismo nombre en el esquema google_ml.

Antes de comenzar

Cómo clasificar los resultados de la búsqueda

En la siguiente consulta de SQL, se muestra cómo clasificar los resultados de la búsqueda :

SELECT
  ai.rank(
    model_id => 'MODEL_ID',
    search_string => 'SEARCH_STRING',
    documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);

Reemplaza lo siguiente:

Parámetro Descripción
MODEL_ID Un ID único para el extremo del modelo que definas.
SEARCH_STRING Es la cadena de búsqueda en función de la cual se clasifican o puntúan los registros.
DOCUMENTS Es una cadena única que identifica el registro.

Ejemplos

Para clasificar los resultados de la búsqueda con el extremo de clasificación registrado, ejecuta la siguiente consulta:

SELECT index, score
FROM
  ai.rank(
    model_id => 'semantic-ranker-512-002',
    search_string => 'AlloyDB is a PostgreSQL compatible AI database that is ready for production.',
    documents =>
      ARRAY[
        'Alloys are made from combination of metals',
        'The best enterprise-ready PostgreSQL database.',
        'You can feel the heat in Alloy apartments.']);

La respuesta es una tabla que muestra cada documento y la puntuación según la relevancia para la búsqueda.La siguiente es una respuesta de ejemplo:

 index | score
-------+------------
     2 |  0.33
     1 |  0.28
     3 |  0.16
(3 rows)

Considera una base de datos de AlloyDB de ejemplo con una lista de descripciones de opiniones que se convierten en incorporaciones. En el siguiente fragmento de código de muestra, se muestra cómo usar el modelo de clasificación para recuperar el nombre de los productos con mejor clasificación en función de la similitud semántica de las descripciones de las opiniones con una búsqueda. Se supone que los extremos de los modelos text-embedding-005 y semantic-ranker-512@002 están registrados.

WITH
  initial_results AS (
    SELECT product_id, name, review, review_id,
            ROW_NUMBER() OVER () AS ref_number
    FROM user_reviews
    ORDER BY
      review_desc_embedding <=> google_ml.embedding(
        'text-embedding-005', 'good desserts')
    LIMIT 100
  ),
reranked AS (
    SELECT
      ai.rank(
        model_id => 'semantic-ranker-512@002',
        search_string => 'good desserts',
        documents => ARRAY_AGG(review ORDER BY ref_number))
    FROM initial_results
  )
SELECT product_id, name
FROM initial_results, reranked
WHERE initial_results.ref_number = reranked.index
ORDER BY reranked.score;

¿Qué sigue?