Executar a pesquisa semântica

Realize um busca semântica no campo especificado e restringe o conjunto de registros especificado para o texto de pesquisa e o modelo fornecidos a serem usados ou para os vetores de incorporação fornecidos.

Opções

  • Consultar por especifica se a consulta é Linguagem natural (texto) ou incorporação de Dados vetoriais.

  • Conjunto de registros define se você deseja pesquisar Todos os registros ou o Conjunto encontrado atual.

  • Campo alvo especifica um campo de texto ou contêiner no qual pesquisar. O conteúdo do campo deve ser vetores de incorporação, seja na forma de uma matriz JSON se for um campo de texto, ou como dados binários se for um campo de contêiner.

  • Retornar contagem é uma expressão numérica para o número de registros semanticamente semelhantes a retornar como conjunto encontrado. Se não for especificado, o padrão será um máximo de 10 registros.

  • Condição de similaridade por cosseno especifica como a similaridade por cosseno dos dados é comparada ao Valor de similaridade por cosseno. Se não for especificado, o conjunto encontrado não será limitado por uma condição de similaridade por cosseno.

  • Valor de similaridade por cosseno é o limite usado juntamente com a Condição de similaridade por cosseno para determinar se os dados são semanticamente semelhantes ou diferentes. Esta expressão numérica deve ter um valor entre -1 (diferente) e 1 (semelhante), inclusive.

  • Salvar resultado salva o conjunto encontrado em um campo de texto ou variável como uma matriz JSON de IDs de registro e seus valores de similaridade por cosseno classificados em ordem decrescente.

Opções disponíveis apenas quando Consultar por é Linguagem natural:

  • Nome da conta é uma expressão de texto da conta de IA usada por esta etapa de script. No arquivo atual, use a etapa de script Etapa de script Configurar a conta de IA para configurar a conta e atribuir esse nome a ela antes que a etapa de script seja executada.

  • Modelo de incorporação é o nome do modelo que gera vetores de incorporação. Especifique o nome do modelo como uma expressão de texto, que é disponibilizada pelo provedor do modelo.

  • Texto é uma expressão de texto para a consulta de texto em linguagem natural. O texto resultante é enviado ao modelo para incorporação de vetores, que são então comparados com os vetores de incorporação no Campo alvo para similaridade.

Opções disponíveis apenas quando Consultar por é Dados vetoriais:

  • Vetor são os vetores de incorporação que representam o texto ou a imagem que deve ser encontrada. Esta é uma expressão que retorna dados de contêiner, como uma referência a um campo de contêiner. Os resultados serão semanticamente semelhantes ao texto ou imagem que esses dados vetoriais representam.

Compatibilidade

Produto Compatível
FileMaker Pro Sim
FileMaker Go Sim
FileMaker WebDirect Sim
FileMaker Server Sim
FileMaker Cloud Sim
FileMaker Data API Sim
Publicação na Web personalizada Sim

Originada na versão

21.0

Descrição

Esta etapa de script procura registros nos quais o conteúdo do campo Campo alvo seja semanticamente semelhante à consulta. Pesquisar texto pode fornecer resultados mais úteis do que procurar correspondências de palavras-chave literais, como faz a etapa de script Realizar busca.

Ao pesquisar imagens, você pode especificar texto em linguagem natural ou vetores de incorporação de texto que descrevem as imagens que você está procurando. Ou você pode especificar vetores de incorporação para uma imagem semelhante às imagens que você está pesquisando.

Esta etapa de script tem dois modos de operação determinados pela opção Consultar por:

  • Quando definido como Linguagem natural, você fornece a consulta como texto em linguagem natural na opção Texto. Esta etapa de script envia esse texto de consulta para o modelo especificado para conversão em vetores de incorporação. É por isso que esse modo requer o nome da conta de IA e o modelo de incorporação.

  • Quando definido como Dados vetoriais, você fornece os vetores de incorporação como dados de contêiner para a consulta. Se você costuma usar certas consultas, pode ser mais eficiente obter vetores de incorporação para elas uma vez e armazená-los em vez de obtê-los com frequência a partir do modelo.

    Ao especificar vetores de incorporação para uma imagem a ser pesquisada, use esta opção. Você deve usar o mesmo modelo de incorporação de imagem para gerar os vetores para a opção Vetor como faz para os vetores de incorporação de imagem no campo Campo alvo.

Para vetores de incorporação de imagem e texto, você pode usar os modelos suportados pelo servidor de modelos de código aberto fornecidos separadamente com o FileMaker Pro ou instalados com o FileMaker Server. Consulte o Claris Engineering Blog.

Começando com todos os registros na tabela atual ou apenas com os registros no conjunto encontrado atual (definido pela opção Conjunto de registros), esta etapa de script compara os dados do Campo alvo com a consulta quanto à semelhança semântica (ou diferença). O resultado é um conjunto encontrado restrito (limitado) de não mais do que o número de registros da Retornar contagem que atendem às condições de similaridade por cosseno. O conjunto encontrado resultante é classificado em ordem descendente de similaridade por cosseno, para que os registros mais relevantes sejam mostrados primeiro.

Notas

  • Vetores de incorporação normalizados são necessários. Todos os vetores de incorporação devem ser gerados a partir do mesmo modelo para garantir compatibilidade e desempenho; a combinação de vetores de incorporação de modelos diferentes não é suportada.

Exemplo 1

Configura uma conta de IA, vai para o layout de Detalhes da reunião e, em todos os registros, realiza uma busca semântica para o Texto (como linguagem natural) no campo de contêiner Reuniões::Incorporação_de_anotação, que contém vetores de incorporação para o conteúdo do campo Reuniões::Anotação (veja o Exemplo 1 em Inserir a incorporação no conjunto encontrado). Para obter resultados mais úteis, a contagem de retorno é limitada a 10 e a similaridade por cosseno entre o Texto e o conteúdo do campo Reuniões::Incorporação_de_anotação deve ser maior que 0,4. O conjunto encontrado resultante é classificado de modo a mostrar os registros mais relevantes primeiro.

Copiar
Configurar a conta de IA [ Nome da conta: "minha-conta" ; Provedor de modelo: OpenAI ; Chave de API: "sk-RZCtpWT..." ]

Ir para layout [ "Detalhes da reunião" (Reuniões) ; Animação: Nenhum ]

Executar a pesquisa semântica [ Consultar por: Linguagem natural ; Nome da conta: "minha-conta" ; Modelo de incorporação: "text-embedding-3-small" ; Texto: “Recrutamento, definição do trabalho, plano de treinamento" ; Conjunto de registros: Todos os registros ; Campo alvo: Reuniões::Incorporação_de_anotação ; Retornar contagem: 10 ; Condição de similaridade por cosseno: maior que ; Valor de similaridade por cosseno: .4 ]

Exemplo 2

Configura uma conta de IA, vai para o layout de Detalhes da reunião e, em seguida, solicita que o usuário insira o texto que deve ser encontrado. A Função GetEmbedding envia esse texto para o modelo e, em seguida, Definir campo armazena os vetores de incorporação no campo de contêiner global Reuniões::Entrada. Supondo que o campo de contêiner Reuniões::Incorporação_de_anotação contenha vetores de incorporação para o conteúdo do campo Reuniões::Anotação (veja o Exemplo 1 em Inserir a incorporação no conjunto encontrado), Executar a pesquisa semântica compara os dados vetoriais em Reuniões::Entrada com Reuniões::Incorporação_de_anotação em todos os registros e retorna um conjunto encontrado que atenda aos critérios de contagem de retorno e similaridade.

Copiar
Configurar a conta de IA [ Nome da conta: "minha-conta" ; Provedor de modelos: OpenAI ; Chave de API: "sk-RZCtpWT..." ]

Ir para layout [ "Detalhes da reunião" (Reuniões) ; Animação: Nenhum ]
Mostrar caixa de diálogo personalizada [ "Buscar reuniões com anotações sobre:" ; $Input ]

Definir campo [ Reuniões::Entrada ; GetEmbedding ( "minha-conta" ; "text-embedding-3-small" ; $Input ]
        
Executar a pesquisa semântica  [ Consultar por: Dados vetoriais ; Reuniões::Entrada ; Conjunto de registros: Todos os registros ; Campo alvo: Reuniões::Incorporação_de_anotação ; Retornar contagem: 10 ; Condição de similaridade por cosseno: maior que ; Valor de similaridade por cosseno: .5 ; Salvar resultado: $$result]

Com a opção Salvar resultado selecionada, para uma determinada consulta que retorna três registros, JSONFormatElement($$result) retorna:

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

Exemplo 3

Pesquisa em um conjunto de imagens aquelas que melhor correspondem a uma descrição de texto. O script configura uma conta de IA para o servidor de modelo de código aberto instalado com o FileMaker Server, vai para o layout de Detalhes da reunião, mostra todos os registros e, em seguida, obtém vetores de incorporação para as imagens no campo Reuniões::Imagem usando um modelo de incorporação de imagens e os armazena como dados binários no campo de contêiner Reuniões::Incorporação_imagem. Executar busca semântica envia um texto de consulta em linguagem natural ("Pessoas sentadas ao redor de uma mesa") para um modelo de incorporação de texto usando a mesma conta, depois compara o resultado com Reuniões::Incorporação_imagem em todos os registros e retorna um conjunto encontrado que atende aos critérios de similaridade.

Copiar
Configurar a conta de IA [ Nome da conta: "minha-conta" ; Provedor de modelos: Personalizado ; Endpoint: "https://my-server.example.com:8080/" ; Verificar certificados SSL ; Chave de API: Global::API_Key ]

Ir para layout [ "Detalhes da reunião" (Reuniões) ; Animação: Nenhuma ]
Mostrar Todos os Registros

Inserir Incorporação no conjunto encontrado [ Nome da conta: "minha-conta" ; Modelo de incorporação: "clip-ViT-B-32" ; Campo de origem: Reuniões::Imagem ; Campo alvo: Reuniões::Incorporação_imagem ]  

Executar busca semântica [Consultar por: Linguagem natural; Nome da conta: "minha-conta"; Modelo de incorporação: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Texto: "Pessoas sentadas ao redor de uma mesa"; Conjunto de registros: Todos os registros; Campo alvo: Reuniões::Incorporação_imagem; Condição de similaridade por cosseno: maior que ; Valor de similaridade por cosseno: .7 ]