시맨틱 찾기 수행

지정된 필드에서 시맨틱 찾기를 수행하고, 사용할 해당 검색 텍스트와 모델 또는 해당 임베딩 벡터에 대해 지정된 레코드 세트를 제한합니다.

다음도 참조하십시오. 

옵션 

  • 쿼리 기준은 쿼리가 자연어 (텍스트)인지 아니면 벡터 데이터를 포함하는지 여부를 지정합니다.

  • 레코드 세트모든 레코드 또는 현재 찾기 세트를 검색할지 여부를 선택합니다.

  • 대상 필드는 검색할 텍스트 또는 컨테이너 필드를 지정합니다. 필드의 내용은 텍스트 필드의 경우 JSON 배열, 컨테이너 필드의 경우 이진 데이터인 임베딩 벡터여야 합니다.

  • 반환 횟수는 찾기 세트로 반환할 의미적으로 유사한 레코드의 수에 대한 숫자 표현식입니다. 지정하지 않을 시 기본값은 최대 10개의 레코드입니다.

  • 코사인 유사도 조건은 데이터의 코사인 유사도가 코사인 유사도 값과 어떻게 비교되는지 지정합니다. 지정하지 않을 시 찾기 세트는 코사인 유사도 조건에 의해 제한되지 않습니다.

  • 코사인 유사도 값은 데이터가 의미적으로 유사한지, 다른지 여부를 결정하기 위해 코사인 유사도 조건과 함께 사용되는 임계값입니다. 이 숫자 표현식은 -1(비유사) 및 1(유사) 사이의 값을 포함(-1, 1 포함)해야 합니다.

  • 결과 저장은 텍스트 필드 또는 변수의 찾기 세트를 레코드 ID의 JSON 배열 및 코사인 유사도 내림차순으로 정렬된 코사인 유사도 값으로 저장합니다.

쿼리 기준자연어일 때만 다음 옵션을 사용할 수 있습니다.

  • 계정 이름은 이 스크립트 단계에서 사용할 AI 계정의 텍스트 표현식입니다. 현재 파일에서 AI 계정 구성 스크립트 단계를 사용하여 계정을 설정하고 이 스크립트 단계가 실행되기 전에 언제든지 이 이름을 할당하십시오.

  • 임베딩 모델은 임베딩 벡터를 생성하는 모델의 이름입니다. 모델 제공자에서 사용할 수 있는 텍스트 표현식으로 모델 이름을 지정하십시오.

  • 텍스트는 자연어 텍스트 쿼리를 위한 텍스트 표현식입니다. 결과 텍스트는 임베딩 벡터를 위한 모델로 전송되며, 유사성을 위해 대상 필드의 임베딩 벡터와 비교됩니다.

쿼리 기준벡터 데이터일 때만 다음 옵션을 사용할 수 있습니다.

  • 벡터는 찾으려는 텍스트 또는 이미지를 나타내는 임베딩 벡터입니다. 이는 컨테이너 필드에 대한 참조와 같은 컨테이너 데이터를 반환하는 표현식입니다. 결과는 이 벡터 데이터가 나타내는 텍스트 또는 이미지와 의미적으로 유사합니다.

호환성 

제품 지원
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
사용자 설정 웹 발행

다음 버전에서 시작됨 

21.0

설명 

이 스크립트 단계는 대상 필드의 내용이 쿼리와 의미적으로 유사한 레코드를 찾습니다. 텍스트를 검색하는 경우, 찾기 수행와 같이 키워드 그대로 일치하는 항목을 찾는 것보다 더 유용한 결과가 나타날 수 있습니다.

이미지를 검색하는 경우, 검색 중인 이미지를 설명하는 자연어 텍스트 또는 텍스트 임베딩 벡터를 지정할 수 있습니다. 또는 검색 중인 이미지와 유사한 이미지에 대한 임베딩 벡터를 지정할 수 있습니다.

이 스크립트 단계에는 쿼리 기준 옵션에 의해 결정된 다음 두 가지 작동 모드가 있습니다.

  • 자연어로 설정하면, 텍스트 옵션에서 자연어 텍스트로 쿼리를 제공합니다. 이 스크립트 단계는 임베딩 벡터로의 변환을 위해 지정된 모델로 해당 쿼리 텍스트를 보냅니다. 그렇기 때문에 이 모드에 AI 계정 이름과 임베딩 모델이 필요합니다.

  • 벡터 데이터로 설정하면, 임베딩 벡터를 쿼리의 컨테이너 데이터로 제공합니다. 특정 쿼리를 자주 사용하는 경우, 모델에서 자주 얻는 것보다 해당 쿼리에 대한 벡터를 한 번 삽입하고 저장하는 것이 더 효율적일 수 있습니다.

    검색할 이미지에 임베딩 벡터를 지정하는 경우, 이 옵션을 사용하십시오. 대상 필드의 이미지 임베딩 벡터와 같은 방식으로 벡터 옵션에 대한 벡터를 생성하려면 동일한 이미지 임베딩 모델을 사용해야 합니다.

이미지 및 텍스트 임베딩 벡터의 경우, FileMaker Pro와 별도로 제공되거나 FileMaker Server와 함께 설치된 오픈 소스 모델 서버에서 지원하는 모델을 사용할 수 있습니다. Claris 엔지니어링 블로그를 참조하십시오.

현재 테이블의 모든 레코드 또는 현재 발견된 세트의 레코드(레코드 세트 옵션에서 설정)부터 이 스크립트 단계는 대상 필드의 데이터를 의미론적 유사성(또는 비유사성)에 대한 쿼리와 비교합니다. 결과는 코사인 유사도 조건을 충족하는 반환 횟수 레코드를 넘지 않는 제한된(좁은) 세트입니다. 결과 찾기 세트는 내림차순 코사인 유사도 순서대로 정렬되므로 가장 관련성이 높은 기록이 첫 번째로 표시됩니다.

참고 

  • 정규화된 임베딩 벡터가 필요합니다. 모든 임베딩 벡터는 동일한 모델에서 생성해야 호환성과 성능을 보장할 수 있으며, 서로 다른 모델의 임베딩 벡터를 혼합하는 것은 지원되지 않습니다.

예제 1 

AI 계정을 구성하고 미팅 세부 정보 레이아웃으로 이동한 다음 모든 기록에서 Meetings::Note 필드 내용에 대한 임베딩 벡터를 포함하는 Meetings::Note_Embedding 컨테이너 필드에서 텍스트(자연어)에 대한 시맨틱 찾기를 수행합니다(찾기 세트에 임베딩 삽입예제 1 참조). 더 유용한 결과를 얻으려면 반환 횟수를 10으로 제한하고 텍스트와 Meetings::Note_Embedding 필드 내용 간의 코사인 유사도가 0.4보다 커야 합니다. 결과 찾기 세트는 가장 관련성이 높은 레코드부터 정렬됩니다.

복사
AI 계정 구성 [계정 이름: "my-account" ; 모델 제공자: OpenAI ; API 키: "sk-RZCtpWT..." ]  

레이아웃으로 이동 [ "미팅 세부 사항" (미팅) ; 애니메이션: 없음 ]  

시맨틱 찾기 수행 [ 쿼리 기준: 자연어 ; 계정 이름: "my-account" ; 임베딩 모델: "text-embedding-3-small" ; 텍스트: "채용, 직업 정의, 교육 계획" ; 레코드 세트: 모든 레코드 ; 대상 필드: Meetings::Note_Embedding ; 반환 수: 10 ; 코사인 유사도 조건: 다음보다 큼 ; 코사인 유사도 값: .4 ]

예제 2 

AI 계정을 구성하고, 미팅 세부 정보 레이아웃으로 이동한 다음, 사용자에게 텍스트를 찾을 것을 요청합니다. GetEmbedding 함수가 해당 텍스트를 모델로 보낸 다음, 필드 설정이 전역 컨테이너 필드 Meetings::Input에 임베딩 벡터를 저장합니다. Meetings::Note_Embedding 컨테이너 필드에 Meetings::Note 필드의 내용에 대한 임베딩 벡터가 포함되어 있다고 가정하면(찾기 세트에 임베딩 삽입예제 1 참조), 시맨틱 찾기를 수행하면 Meetings::Input의 벡터 데이터를 모든 레코드의 Meetings::Note_Embedding과 비교하고 반환 수 및 유사성 기준을 충족하는 찾기 세트를 반환합니다.

복사
AI 계정 구성 [ 계정 이름: "my-account" ; 모델 제공자: OpenAI ; API 키: "sk-RZCtpWT..." ]
       
레이아웃으로 이동 [ "미팅 세부 정보" (미팅) ; 애니메이션: 없음 ]
사용자 설정 대화상자 보기 [ "다음에 대한 메모가 있는 미팅 찾기:" ; $Input ]

필드 설정 [ Meetings::Input ; GetEmbedding ( "my-account" ; "text-embedding-3-small" ; $Input ) ]

시맨틱 찾기 수행 [ 쿼리 기준: 벡터 데이터 ; Meetings::Input ; 레코드 세트: All records ; 대상 필드: Meetings::Note_Embedding ; 반환 횟수: 10 ; 코사인 유사도 조건: 다음보다 큼 ; 코사인 유사도 값: .5 ; 결과 저장: $$result]

결과 저장 옵션을 선택하면 세 개의 레코드를 반환하는 지정된 쿼리에 대해 JSONFormatElement($$result)는 다음과 같이 반환합니다.

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

예제 3 

텍스트 설명과 가장 일치하는 이미지 세트를 검색합니다. 스크립트는 FileMaker Server와 함께 설치된 오픈 소스 모델 서버에 대한 AI 계정을 구성하고, 미팅 세부 정보 레이아웃으로 가서 모든 레코드를 표시한 다음, 이미지 임베딩 모델을 사용하여 Meetings::Image 필드의 이미지에 대한 임베딩 벡터를 얻고 Meetings::Image_Embedding 컨테이너 필드에 이진 데이터로 저장합니다. 시맨틱 찾기 수행은 동일한 계정을 사용하여 텍스트 임베딩 모델로 자연어 쿼리 텍스트("테이블 주위에 앉아 있는 사람들")를 보낸 다음, 모든 레코드에서 Meetings::Image_Embedding과 결과를 비교하고 유사도 기준을 충족하는 찾기 세트를 반환합니다.

복사
AI 계정 구성 [ 계정 이름: "my-account" ; 모델 제공자: 사용자 설정 ; 엔드포인트: "https://my-server.example.com:8080/" ;SSL 인증서 확인 ; API 키: Global::API_Key ]

레이아웃으로 이동 [ "미팅 세부 정보" (미팅) ; 애니메이션: 없음 ]
모든 레코드 보기

찾기 세트에 임베딩 삽입 [ 계정 이름: "my-account" ; 임베딩 모델: "clip-ViT-B-32" ; 원본 필드: Meetings::Image ; 대상 필드: Meetings::Image_Embedding ]

시맨틱 찾기 수행 [ 쿼리 기준: 자연어 ; 계정 이름: "my-account" ; 임베딩 모델: "sentence-transformers/clip-ViT-B-32-multilingual-v1" ; 텍스트: "테이블 주위에 앉아 있는 사람들" ; 레코드 세트: 모든 레코드 ; 대상 필드: Meetings::Image_Embedding ; 코사인 유사도 조건: 다음보다 큼 ; 코사인 유사도 값: .7 ]