Utför semantisk sökning

Utför en semantisk sökning i det angivna fältet och begränsar den angivna postuppsättningen för den angivna söktexten och modellen som ska användas eller för angivna inbäddningsvektorer.

Tillval 

  • Fråga efter anger om frågan är Naturligt språk (text) eller inbäddade Vektordata.

  • Postuppsättning anger om du vill söka efter Alla poster eller Aktuella hittade poster.

  • Målfält anger ett text- eller behållarfält att söka i. Innehållet i fältet måste vara inbäddningsvektorer, antingen som en JSON-matris om det är ett textfält, eller som binära data om det är ett containerfält.

  • Antal returnerade är ett numeriskt uttryck för antalet semantiskt liknande poster som ska returneras som hittade poster. Om det inte anges är standardvärdet högst 10 poster.

  • Cosinuslikhetsvillkor anger hur cosinuslikheten hos data jämförs med Cosinuslikhetsvärde. Om det inte anges begränsas inte de hittade posterna av något cosinuslikhetsvillkor.

  • Cosinuslikhetsvärde är det tröskelvärde som används tillsammans med Cosinuslikhetsvillkor för att avgöra om data är semantiskt lika eller olika. Det här numeriska uttrycket måste ha ett värde mellan från och med -1 (olika) till och med 1 (liknande).

  • Spara resultat sparar de hittade posterna i ett textfält eller en variabel som en JSON-matris med post-ID:n och deras cosinuslikhetsvärden sorterade efter fallande cosinuslikhet.

Alternativen är endast tillgängliga när Fråga efter är Naturligt språk:

  • Kontonamn är ett textuttryck för AI-kontot som det här scriptsteget ska använda. Använd Scriptsteget Konfigurera AI-konto i den aktuella filen för att konfigurera kontot och tilldela det namnet när som helst innan scriptsteget körs.

  • Inbäddningsmodell är namnet på den modell som genererar inbäddningsvektorer. Ange modellnamnet som ett textuttryck, som är tillgängligt från modelleverantören.

  • Text är ett textuttryck för frågan på naturligt språk. Den resulterande texten skickas till modellen för inbäddningsvektorer, som sedan jämförs med inbäddningsvektorerna i Målfältför likhet.

Alternativen är endast tillgängliga när Fråga efter är Vektordata:

  • Vektor är de inbäddningsvektorer som representerar den text eller de bilder som ska hittas. Det här är ett uttryck som returnerar containerdata, till exempel en referens till ett containerfält. Resultaten kommer att vara semantiskt lika den text eller bild som dessa vektordata representerar.

Kompatibilitet 

Produkt Stöds
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Anpassad webbpublicering Ja

Ursprungsversion 

21.0

Beskrivning 

Det här scriptsteget söker efter poster där innehållet i målfältet är semantiskt likt frågan. När du söker efter text kan det ge mer användbara resultat än att leta efter bokstavliga nyckelordsträffar som du gör med Utför sökning.

När du söker efter bilder kan du ange text på naturligt språk eller textinbäddningsvektorer som beskriver de bilder du söker efter. Eller så kan du ange inbäddningsvektorer för en bild som liknar de bilder du söker efter.

Det här scriptsteget har två lägen som bestäms av alternativet Fråga efter:

  • När du väljer Naturligt språk anger du frågan som text på naturligt språk i alternativet Text. Det här scriptsteget skickar den frågetexten till den angivna modellen för konvertering till inbäddningsvektorer. Därför kräver det här läget ett AI-kontonamn och en inbäddningsmodell.

  • När du väljer Vektordata anger du inbäddningsvektorerna som containerdata för frågan. Om du vanligtvis använder vissa frågor kan det vara mer effektivt att få inbäddningsvektorer för dessa frågor en gång och lagra dem snarare än att regelbundet hämta dem från modellen.

    När du anger inbäddningsvektorer för en bild som du vill söka efter ska du använda det här alternativet. Du måste använda samma bildinbäddningsmodell för att generera vektorerna för alternativet Vektor som för bildinbäddningsvektorerna i Målfält.

För bild- och textinbäddningsvektorer kan du använda de modeller som stöds av den modell med öppen källkod som tillhandahålls separat med FileMaker Pro eller installeras med FileMaker Server. Mer information finns i Claris teknikerblogg.

Med utgångspunkt från antingen alla poster i den aktuella tabellen eller endast posterna i aktuella hittade poster (anges med alternativet Postuppsättning), jämför detta scriptsteg data i Målfält med frågan om semantisk likhet (eller olikhet). Resultatet är en begränsad (förfinad) uppsättning hittade poster om högst Antal returnerade som uppfyller cosinuslikhetsvillkoren. De resulterande hittade posterna sorteras i ordning efter fallande cosinuslikhet så att de mest relevanta posterna står först.

Kommentarer 

  • Normaliserade inbäddningsvektorer krävs. Alla inbäddningsvektorer måste genereras från samma modell för att säkerställa kompatibilitet och prestanda. Det går inte att blanda inbäddningsvektorer från olika modeller.

Exempel 1 

Konfigurerar ett AI-konto, går till layouten Mötesinformation och utför sedan en semantisk sökning i alla poster efter Text (som naturligt språk) i containerfältet Möten::Anteckning_Inbäddning, som innehåller inbäddningsvektorer för innehållet i fältet Möten::Anteckning (se Exempel 1 i Infoga inbäddning i hittade poster). För mer användbara resultat är antalet returnerade begränsat till 10 och cosinuslikheten mellan Text och innehållet i fältet Möten::Anteckning_Inbäddning måste vara större än 0,4. De resulterande hittade posterna sorteras med de mest relevanta posterna först.

Kopiera
Konfigurera AI-konto [ Kontonamn: "mitt-konto" ; Modelleverantör: OpenAI ; API-nyckel: "sk-RZCtpWT..." ]

Gå till layout [ "Mötesinformation (Möten) ; Animering: Ingen ]

Utför semantisk sökning [ Fråga efter: Naturligt språk ; Kontonamn: "mitt-konto" ; Inbäddningsmodell: "Text-Embedding-3-small" ; Text: "Rekrytering, jobbeskrivning, utbildningsplan" ; Postuppsättning: Alla poster ; Målfält: Möten::Anteckning_Inbäddning ; Antal returnerade: 10 ; Cosinuslikhetsvillkor: större än ; Cosinuslikhetsvärde: ,4 ]

Exempel 2 

Konfigurerar ett AI-konto, går till layouten Mötesinformation och ber sedan användaren om text att söka efter. Funktionen Funktionen GetEmbedding skickar texten till modellen och Tilldela fält lagrar sedan inbäddningsvektorerna i det globala containerfältet Möten::Indata. Om vi antar att containerfältet Möten::Anteckning_Inbäddning innehåller inbäddningsvektorer för innehållet i fältet Möten::Anteckning (se Exempel 1 i Infoga inbäddning i hittade poster), jämför scriptsteget Utför semantisk sökning vektordata i Möten::Indata med Möten::Anteckning_Inbäddning i alla poster och returnerar hittade poster som uppfyller värdet för antal returnerade och likhetsvillkoren.

Kopiera
Konfigurera AI-konto [ Kontonamn: "mitt-konto" ; Modelleverantör: OpenAI ; API-nyckel: "sk-RZCtpWT..." ]
        
Gå till layout [ "Mötesinformation" (Möten) ; Animering: Ingen ]
Visa anpassad dialogruta [ "Hitta möten med anteckningar om:" ; $Indata ]

Tilldela fält [ Möten::Indata ; GetEmbedding ( "mitt-konto" ; "text-embedding-3-small" ; $Indata ) ]

Utför semantisk sökning [ Fråga efter: Vektordata ; Möten::Indata ; Postuppsättning: Alla poster ; Målfält: Möten::Anteckning_Inbäddning ; Antal returnerade: 10 ; Cosinuslikhetsvillkor: är större än ; Cosinuslikhetsvärde: ,5 ; Spara resultat: $$resultat]

Med alternativet Spara resultat markerat och för en given fråga som returnerar tre poster, returnerar JSONFormatElement($$resultat):

Kopiera
[
    {
        "recordId" : "7",
        "similarity" : 0,999999947111836
    },
    {
        "recordId" : "1",
        "similarity" : 0,529809641529481
    },
    {
        "recordId" : "5",
        "similarity" : 0,524595621039394
    }
]

Exempel 3 

Söker i en uppsättning bilder efter de som bäst matchar en textbeskrivning. Scriptet konfigurerar ett AI-konto för den modell med öppen källkod som installeras med FileMaker Server, går till layouten Mötesinformation, visar alla poster och får sedan inbäddningsvektorer för bilderna i fältet Möten::Bild med hjälp av en modell för inbäddning av bilder och lagrar dem som binära data i containerfältet Möten::Bild_Inbäddning. Utför semantisk sökning skickar en frågetext på naturligt språk (”Personer som sitter runt ett bord”) till en modell för textinbäddning med samma konto och jämför sedan resultatet med Möten::Bild_Inbäddning i alla poster och returnerar en uppsättning som uppfyller likhetskriterierna.

Kopiera
Konfigurera AI-konto [ Kontonamn: "mitt-konto" ; Modelleverantör: Anpassat; Slutpunkt: "https://min-server.exempel.com:8080/" ; Verifiera SSL-certifikat ; API-nycke: Global::API-nyckel ]

Gå till layout [ "Mötesinformation" (Möten) ; Animering: Ingen ]
Visa alla
Infoga inbäddning i hittade poster [ Kontonamn: "mitt-konto" ; Inbäddningsmodell: "clip-ViT-B-32" ; Källfält: Möten::Bild ; Målfält: Möten::Bild_Inbäddning ]

Utför semantisk sökning [ Fråga efter: Naturligt språk ; Kontoamn: "mitt-konto" ; Inbäddningsmodell: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; Text: "Personer som sitter runt ett bord" ; Postuppsättning: Alla poster; Målfält: Möten::Bild_Inbäddning ; Cosinuslikhetsvillkor: större än ; Cosinuslikhetsvärde: ,7 ]