Realizar búsqueda semántica

Realiza una búsqueda semántica en el campo especificado y restringe el conjunto de registros especificado para el texto de búsqueda y el modelo a utilizar o para los vectores de incrustación dados.

Temas relacionados 

Opciones 

  • Consulta por especifica si la consulta es Idioma natural (texto) o incrustación Datos vectoriales.

  • Conjunto de registros selecciona si buscar en Todos los registros o en el Conjunto encontrado actual.

  • Campo objetivo especifica un campo de texto o contenedor donde buscar. El contenido del campo debe ser vectores de incrustación, ya sea como una matriz JSON, si es un campo de texto, o como datos binarios, si es un campo contenedor.

  • Recuento de devoluciones es una expresión numérica para el número de registros semánticamente similares que se devolverán como conjunto encontrado. Si no se especifica, el valor predeterminado es un máximo de 10 registros.

  • Condición de similitud del coseno especifica cómo se compara la similitud del coseno de los datos con el Valor de similitud del coseno. Si no se especifica, el conjunto encontrado no estará limitado por una condición de similitud del coseno.

  • Valor de similitud del coseno es el umbral utilizado junto con la Condición de similitud del coseno para determinar si los datos son semánticamente similares o diferentes. Esta expresión numérica debe tener un valor entre -1 (diferente) y 1 (similar), ambos incluidos.

  • Guardar resultado guarda el conjunto encontrado en un campo de texto o variable como una matriz JSON de ID de registro y sus valores de similitud de coseno ordenados por orden de similitud de coseno descendente.

Opciones disponibles solo cuando Consulta por es Idioma natural:

  • Nombre de cuenta es una expresión de texto de la cuenta de IA que debe usar este paso de guión. En el archivo actual, utilice el paso de guión Configurar cuenta de IA para configurar la cuenta y asignarle este nombre en cualquier momento antes de que se ejecute este paso de guión.

  • Modelo de incrustación es el nombre del modelo para generar vectores de incrustación. Especifique el nombre del modelo como una expresión de texto, que está disponible en el proveedor del modelo.

  • Text es una expresión de texto para la consulta de texto en idioma natural. El texto resultante se envía al modelo de vectores de incrustación, que se comparan con los vectores de incrustación en el campo objetivo para comprobar su similitud.

Opciones disponibles solo cuando Consulta por es Datos vectoriales:

  • Vector hace referencia a los vectores de incrustación que representan el texto o las imágenes que se van a buscar. Esta es una expresión que devuelve datos de contenedor, como una referencia a un campo contenedor. Los resultados serán semánticamente similares al texto o la imagen que representan estos datos vectoriales.

Compatibilidad 

Producto Format
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
Publicación en la Web personalizada

Se origina en 

21.0

Descripción 

Este paso de guión busca registros en los que el contenido del campo objetivo sea semánticamente similar a la consulta. Cuando se busca texto, esto puede proporcionar resultados más útiles que buscar coincidencias literales de palabras clave, como hace el Ejecutar búsqueda.

Al buscar imágenes, puede especificar texto en idioma natural o vectores de incrustación de texto que describan las imágenes que busca. O puede especificar vectores de incrustación para una imagen que sea similar a las imágenes que está buscando.

Este paso de guión tiene dos modos de operación determinados por la opción Consulta por:

  • Cuando se establece en Idioma natural, debe proporcionar la consulta como texto en lenguaje natural en la opción Texto. Este paso de guión envía ese texto de consulta al modelo especificado para su conversión a vectores de incrustación. Esta es la razón por la que este modo requiere un nombre de cuenta de IA y un modelo de incrustación.

  • Cuando se establece en Datos vectoriales, debe proporcionar los vectores de incrustación como datos de contenedor para la consulta. Si utiliza comúnmente ciertas consultas, puede ser más eficiente obtener vectores de incrustación para esas consultas una vez y almacenarlos en lugar de obtenerlos con frecuencia del modelo.

    Cuando especifique vectores de incrustación para buscar una imagen, utilice esta opción. Debe utilizar el mismo modelo de incrustación de imágenes para generar los vectores de la opción Vector que para los vectores de incrustación de imágenes del campo objetivo.

Tanto para los vectores de imagen como para los de texto, puede utilizar los modelos compatibles con el servidor de modelos de código abierto proporcionado por separado con FileMaker Pro o instalado con FileMaker Server. Consulte el blog de Claris Engineering.

Comenzando con todos los registros de la tabla actual o solo con los registros del conjunto encontrado actual (establecido por la opción Conjunto de registros), este paso de guión compara los datos del Campo objetivo con la consulta de similitud semántica (o diferencia). El resultado es un conjunto encontrado restringido (estrecho) de no más de Recuento de devoluciones registros que cumplan las condiciones de similitud del coseno. El conjunto encontrado resultante se ordena por similitud del coseno descendente, de modo que los registros más relevantes aparecen en primer lugar.

Notas 

  • Se requieren vectores de incrustación normalizados. Todos los vectores de incrustación deben generarse a partir del mismo modelo para garantizar la compatibilidad y el rendimiento; no se admite la combinación de vectores de incrustación de diferentes modelos.

Ejemplo 1 

Configura una cuenta de IA, va a la presentación Detalles de la reunión, luego, en todos los registros, realiza una búsqueda semántica de Texto (como lenguaje natural) en el campo contenedor Reuniones::Nota_Incrustación, que contiene vectores de incrustación para el contenido del campo Reuniones::Nota (consulte el Ejemplo 1 en Insertar incrustación en el conjunto encontrado). Para obtener resultados más útiles, el recuento de devoluciones está limitado a 10 y la similitud del coseno entre Texto y el contenido del campo Reuniones::Nota_Incrustación debe ser mayor que 0,4. El conjunto encontrado resultante se ordena primero con los registros más relevantes.

Copiar
Configurar cuenta de IA [ Nombre de cuenta: "mi-cuenta" ; Proveedor del modelo: OpenAI ; Clave de API: "sk-RZCtpWT..." ]

Ir a presentación [ "Detalles de la reunión" (Reuniones) ; Animación: Ninguna ]

Realizar búsqueda semántica [ Consulta por: Idioma natural ; Nombre de cuenta: "mi-cuenta" ; Modelo de incrustación: "text-embedding-3-small" ; Texto: "Contratación, definición del trabajo, plan de formación" ; Conjunto de registros: Todos los registros ; Campo objetivo: Reuniones::Nota_Incrustación ; Recuento de devoluciones: 10 ; Condición de similitud del coseno: es mayor que ; Valor de similitud del coseno: ,4 ]

Ejemplo 2 

Configura una cuenta de AI, va a la presentación Detalles de la reunión y, a continuación, pide al usuario que busque un texto. La función GetEmbedding envía ese texto al modelo, luego Establecer campo almacena los vectores de incrustación en el campo contenedor global Reuniones::Entrada. Suponiendo que el campo contenedor Reuniones::Nota_Incrustación contiene vectores de incrustación para el contenido del campo Reuniones::Nota (consulte el Ejemplo 1 en Insertar incrustación en el conjunto encontrado), Realizar búsqueda semántica compara los datos vectoriales de Reuniones::Entrada con Reuniones::Nota_Incrustación en todos los registros y devuelve un conjunto encontrado que cumple con los criterios de recuento de devolución y similitud.

Copiar
Configurar cuenta de IA [ Nombre de cuenta: "mi-cuenta" ; Proveedor de modelo: OpenAI ; Clave de API: "sk-RZCtpWT..." ]

Ir a la presentación [ "Detalles de la reunión" (Reuniones) ; Animación: Ninguna]
Mostrar cuadro de diálogo personalizado  [ "Buscar reuniones con notas sobre:" ; $Input ]

Establecer campo [ Reuniones::Entrada ; GetEmbedding ( "mi-cuenta" ; "text-embedding-3-small" ; $Input ) ]

Realizar búsqueda semántica [ Consulta por: Datos vectoriales ; Reuniones::Entrada ; Conjunto de registros: Todos los registros ; Campo objetivo: Reuniones::Nota_Incrustación ; Recuento de devoluciones: 10 ; Condición de similitud del coseno: es mayor que ; Valor de similitud del coseno: .5 ; Guardar resultado: $$result]

Con la opción Guardar resultado seleccionada, para una consulta determinada que devuelva tres registros, JSONFormatElement($$result) devuelve:

Copiar
[
    {
        "recordId" : "7",
        "similarity" : 0.999999947111836
    },
    {
        "recordId" : "1",
        "similarity" : 0.529809641529481
    },
    {
        "recordId" : "5",
        "similarity" : 0.524595621039394
    }
]

Ejemplo 3 

Busca en un conjunto de imágenes las que mejor se ajustan a una descripción de texto. El guión configura una cuenta de IA para el servidor de modelos de código abierto instalado con FileMaker Server, va a la presentación Detalles de la reunión, muestra todos los registros y, a continuación, obtiene vectores de incrustación para las imágenes del campo Reuniones::Imagen mediante un modelo de incrustación de imágenes y los almacena como datos binarios en el campo contenedor Reuniones::Imagen_Incrustación. "Ejecutar búsqueda semántica" envía un texto de consulta en idioma natural ("Personas sentadas alrededor de una mesa") a un modelo de incrustación de texto que utiliza la misma cuenta, luego compara el resultado con Reuniones::Imagen_Incrustación en todos los registros y devuelve un conjunto encontrado que cumple los criterios de similitud.

Copiar
Configurar cuenta de IA [ Nombre de cuenta: "mi-cuenta" ; Proveedor de modelo: Personalizado ; Punto de conexión: "https://my-server.example.com:8080/" ; Verificar certificados SSL ; Clave de API : Global::API_Clave ]

Ir a la presentación [ "Detalles de la reunión" (Reuniones) ; Animación: Ninguna ]
Mostrar todos los registros

Insertar incrustación en conjunto encontrado [ Nombre de cuenta: "mi-cuenta" ; Modelo de incrustación: "clip-ViT-B-32" ; Campo de origen: Reuniones::Imagen ; Campo objetivo: Reuniones::Imagen_Incrustación ]

Ejecutar búsqueda semántica [ Consulta por: Idioma natural ; Nombre de cuenta: "mi-cuenta" ; Modelo de incrustación: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Texto: "Personas sentadas alrededor de una mesa" ; Conjunto de registros: Todos los registros ; Campo objetivo: Reuniones::Imagen_Incrustación ; Condición de similitud del coseno: mayor que ; Valor de similitud del coseno: .7 ]