사용자 지정 서비스 통합 설정

Milvus 는 대규모 데이터 세트를 처리하는 데 사용할 수 있는 벡터 데이터베이스입니다. 실시간 검색 기능과 다수의 동시 사용자를 필요로 하는 애플리케이션의 경우, 분산형 아키텍처, 고성능, 유연한 데이터 모델을 갖춘 Milvus 사용할 수 있습니다.

사용자 지정 서비스 통합은 사용자가 만든 검색 기능을 사용하여 정보를 검색합니다. AI 어시스턴트의 대화형 검색 기능과 사용자 지정 서비스 연동을 활용하여 AI 응답을 생성할 수 있습니다. 이 통합은 서버 측과 클라이언트 측의 정보 검색을 모두 지원합니다.

중요:

환경당 하나의 검색 통합 기능만 사용할 수 있습니다. 기존 검색 통합을 Elasticsearch 또는 Milvus 와 같은 다른 통합 유형으로 변경하면, 기존 검색 통합의 설정이 덮어쓰게 됩니다.

사용자 지정 서비스 선택

사용자 지정 서비스를 검색 연동으로 선택하려면 다음 절차 중 하나를 따르세요:

  • 연동 서비스 페이지에서 사용자 지정 서비스 검색 연동 선택하기

    1. AI 어시스턴트 빌더 인스턴스를 생성한 후, > 동으로 이동하세요.

    2. 검색 타일 내부에서 열기를 클릭하여 '검색 열기' 창을 확인합니다.

    3. AI 어시스턴트의 드래프트 환경에서 사용자 지정 서비스를 설정하려면 “검색 열기” 창에서 드롭다운 메뉴의 옵션을 Draft 선택하세요. AI 어시스턴트의 라이브 환경에서 사용자 지정 서비스를 설정하려면 드롭다운 메뉴에서 해당 Live 옵션을 선택하세요.

    4. 다음 '기존 새 검색 연동 서비스 편집' 창에서 사용자 지정 서비스 타일을 선택합니다.

  • 환경 페이지에서 사용자 지정 서비스 검색 연동 서비스 선택하기

    1. AI 어시스턴트 빌더 인스턴스를 생성한 후, > 환경 으로 이동하세요.

    2. 초안 환경에서 사용자 지정 서비스를 설정하려면 ' Draft ' 탭을 선택합니다. 라이브 환경에서 사용자 지정 서비스를 설정하려면 ' Live ' 탭을 선택합니다.

    3. 사용자 지정 서비스 검색 연동 기능을 추가하려면 ' 해결 방법 ' 섹션에서 ' 검색 타일 아래의 ' 확장 기능 ' 안에 있는 ' 추가 '를 클릭합니다.

팁:

이미 ‘사용자 지정 서비스 검색’ 통합 기능을 추가한 경우, ‘확장 프로그램’ 아래의 ‘검색’ 타일에서 ‘추가’ 대신 ‘열기’ 버튼이 표시됩니다.

  1. '새 검색 확장 프로그램 설정' 창에서 사용자 지정 서비스 타일을 선택하여 '검색 통합' 대화 상자를 표시합니다.

세관 서비스 선택

서버 자격 증명으로 사용자 지정 서비스 설정하기

서버 자격 증명을 사용하여 AI 어시스턴트에 사용자 지정 서비스를 설정하려면 다음 절차를 따르세요:

  1. 사용자 지정 서비스 창의 검색 제공업체 연결 섹션에서 자격 증명 제공 방법을 선택합니다. 기본적으로 이 옵션은 선택되어 있습니다.

  2. AI 어시스턴트가 사용자 지정 서비스 인스턴스에 연결할 수 있도록 다음 필드를 입력하세요:

    • URL

    • 인증 유형 선택

      • ' Basic authentication'을 선택하는 경우 사용자 아이디와 비밀번호를 입력해야 합니다.

      • ' API key'을 선택한 경우 API 키를 제공해야 합니다.

      • ' None'을 선택하면 다른 인증 정보를 제공할 수 없습니다.

  3. 다음을 클릭하여 대화형 검색(선택 사항)으로 이동합니다.

  4. 대화형 검색을 활성화하려면 대화형 검색 토글을 ' on'로 전환하세요. 대화형 검색에 대한 자세한 내용은 대화형 검색을 참조하세요.

  5. 기본 필터메타데이터 채우기는 선택 사항입니다. 서버가 검색 요청을 수행할 수 있도록 이 필드에 정보를 입력할 수 있습니다. 메타데이터는 JSON 객체여야 하며 기본 필터는 텍스트 문자열일 수 있습니다. 검색을 시작하는 작업 단계에서 기본 필터를 재정의할 수 있습니다. 다른 옵션을 통해 메타데이터를 재정의할 수 없으며 제공한 메타데이터는 이 통합의 모든 사용에 적용됩니다. 자세한 내용은 서버의 기본 필터 및 메타데이터 설정을 참조하십시오.

  6. 결과를 찾을 수 없음연결 문제 탭을 사용하여 검색 성공 여부에 따라 사용자에게 공유할 다양한 메시지를 사용자 지정할 수 있습니다.

표 1. 맞춤형 서비스 검색 결과 메시지

시나리오

예제 메시지

결과를 찾을 수 없음

검색 결과를 찾을 수 없습니다.

I searched my knowledge base for information that might address your query, but did not find anything useful to share.

연결 문제

어떤 이유로 인해 검색을 완료할 수 없음

I might have information that could help address your query, but am unable to search my knowledge base at the moment.

  1. 저장닫기를 클릭하여 서버 자격 증명으로 설정된 사용자 지정 서비스를 종료합니다.

세관 서비스 서버 선택

클라이언트를 통해 사용자 지정 서비스 설정

클라이언트를 통해 AI 어시스턴트에 사용자 지정 서비스를 설정하려면 다음 절차를 따르십시오:

  1. 사용자 지정 서비스 창의 검색 제공업체 연결 섹션에서 '클라이언트를 통해'를 선택합니다.

  2. 다음을 클릭하여 대화형 검색(선택 사항)으로 이동합니다.

  3. 대화형 검색을 활성화하려면 대화형 검색 토글을 ' on'로 전환하세요. 대화형 검색에 대한 자세한 내용은 대화형 검색을 참조하세요.

  4. 기본 필터메타데이터 채우기는 선택 사항입니다. 서버가 검색 요청을 수행할 수 있도록 이 필드에 정보를 입력할 수 있습니다. 메타데이터는 JSON 객체여야 하며 기본 필터는 텍스트 문자열일 수 있습니다. 검색을 시작하는 작업 단계에서 기본 필터를 재정의할 수 있습니다. 다른 옵션을 통해 메타데이터를 재정의할 수 없으며 제공한 메타데이터는 이 통합의 모든 사용에 적용됩니다. 자세한 내용은 ‘클라이언트에 대한 기본 필터 및 메타데이터 설정’을 참조하십시오.

  5. 결과를 찾을 수 없음연결 문제 탭을 사용하여 검색 성공 여부에 따라 사용자에게 공유할 다양한 메시지를 사용자 지정할 수 있습니다.

표 2. 맞춤형 서비스 검색 결과 메시지

시나리오

예제 메시지

결과를 찾을 수 없음

검색 결과를 찾을 수 없습니다.

I searched my knowledge base for information that might address your query, but did not find anything useful to share.

연결 문제

어떤 이유로 인해 검색을 완료할 수 없음

I might have information that could help address your query, but am unable to search my knowledge base at the moment.

  1. 저장을 클릭한 다음 닫기를 클릭하여 클라이언트 측에서 설정한 사용자 지정 서비스를 종료합니다.

맞춤형 서비스를 위한 Milvus 설정

맞춤형 서비스를 사용하는 것보다 watsonx.data Milvus 와 직접 통합하여 대화형 검색을 수행할 수 있습니다. 자세한 내용은 Milvus 의 검색 통합 설정 문서를 참조하세요.

Milvus 다음과 같은 고급 검색 기능을 이용하려면 사용자 지정 서비스 검색을 사용해야 합니다

  • Milvus 와 watsonx.ai 에서 지원하는 모든 임베딩 모델을 유연하게 사용할 수 있습니다.

Milvus 에서 지원하는 임베딩 모델 목록은 Milvus supported embedding models을 참조하십시오.

서버 자격 증명을 사용하여 Milvus 설정하기

  1. watsonx.data ( Milvus )을 설정하려면, watsonx.data ( Milvus )과의 검색 통합 설정 가이드를 참조하십시오.

  2. 서버 자격 증명을 사용하여 어시스턴트에서 일반적인 설정을 수행하려면 서버 자격 증명을 사용하여 사용자 지정 서비스 설정을 참조하세요.

  3. Milvus 의 예제 및 참조 자료에 대한 자세한 내용은 [ Milvus 를 사용한 예제]( https://github.com/watson-developer-cloud/assistant-toolkit/blob/master/integrations/extensions/starter-kits/search-with-custom-service/custom-search-server-setup-guide.md#example-with-milvus )를 참조하십시오.

클라이언트를 통해 Milvus 설정하기

‘클라이언트를 통한 사용자 지정 서비스 설정’에 설명된 단계를 따라 클라이언트를 통해 AI 어시스턴트에 ‘ Milvus ’을 설정하세요.

사용자 지정 서비스를 위한 검색 시스템 설정하기

검색 통합 기능에서 사용자 지정 서비스를 사용하려면, 서버를 제공하거나 AI 어시스턴트를 호출하는 클라이언트가 검색 결과를 제공하도록 하여 검색 기능을 통합해야 합니다. 사용자 정의 검색 기능을 사용할 수 있습니다. 단, 해당 검색 스키마가 AI 어시스턴트에서 제공하는 스키마와 일치해야 합니다. 사용자의 검색 스키마가 AI 어시스턴트의 스키마와 일치하지 않는 경우, 스키마 매핑을 수행하는 래퍼를 제공해야 합니다. 래퍼를 서비스로 배포하거나 채팅 클라이언트에서 시작할 수 있습니다. AI 어시스턴트 검색 결과의 스키마를 따르지 않는 다른 소스나 라이브러리, 서비스를 결합하거나 호출하려는 경우 래퍼를 구축하는 것이 유용합니다.

사용자 지정 서비스 조회를 위한 서버 설정

사용자 지정 서비스 검색을 위한 서버는 다음 API를 구현해야 합니다:

조회: POST <server_url>

요청

{
    "query": "<QUERY>",
    "filter": "<FILTER>", // optional
    "metadata": {
        // optional, you can fill any information here
    }
}

응답

{
    
  "search_results": [
    {
      "result_metadata": { // optional
        "score": <SCORE as a number>
      },
      "title": "<TITLE>",
      "body": "<BODY>",
      "url": "<URL>", // optional
      "highlight": { // optional, will be used instead of "body" for Conversational Search if provided
        "body": [
          "<HIGHLIGHT1>",
          "<HIGHLIGHT2>",
           ...
        ]
      }
    }
  ]

}
중요:

요청에 포함된 메타데이터와 전체 응답 객체의 크기는 100KB를 초과해서는 안 됩니다.

사용자 지정 서비스 조회를 위한 클라이언트 설정

실행 시점에 /message API 를 통해 검색을 요청하면 다음과 같은 API 응답을 확인할 수 있습니다:

{
    "output": {
        "intents": [ ... ],
        "actions": [
            {
                "type": "search",
                "query": "<QUERY>",
                "filter": "<FILTER>",
                "metadata": { // optional
                    /* you can use any JSON object here */
                }
            }
        ]
    }
}

채팅 클라이언트가 해당 형식의 응답을 수신할 때마다(해당 형식의 output.actions 항목이 search목록에 존재할 경우), 다음과 /message API 같이 함수를 다시 호출하여 결과를 AI 어시스턴트에게 전달합니다:

{
    "input": {
        "message_type": "search_results",
         "search_results": [
          {
            "result_metadata": { // optional
                "score": <SCORE as a number>
            },
            "title": "<TITLE>",
            "body": "<BODY>",
            "url": "<URL>", // optional
            "highlight": { // optional, will be used instead of "body" for Conversational Search if provided
                "body": [
                "<HIGHLIGHT1>",
                "<HIGHLIGHT2>",
                ...
                ]
            }
         }
     ]
  }
}
중요:

AI 비서의 응답 용량은 100KB를 초과할 수 없습니다. AI 비서가 본문 용량이 100KB를 초과하는 메시지를 search_results 수신하면 400 응답을 반환합니다.

대화형 검색에서 검색 결과 처리하기

서버 자격 증명을 제공하거나 클라이언트에서 결과를 전송하여 사용자 지정 서비스를 설정하고 사용자 지정 서비스로 대화형 검색을 사용 설정하는 경우 다음과 같은 동작이 발생합니다:

  1. 대화형 검색은 검색 결과를 첫 번째부터 마지막까지 반복합니다.

  2. 각 검색 결과에서:

    • ' highlight.body 목록이 없는 경우 ' body '를 텍스트 스니펫으로 사용합니다.

    • ' highlight.body 목록이 있는 경우 해당 목록의 각 요소를 텍스트 스니펫으로 가져옵니다.

  3. 중복된 텍스트 스니펫을 삭제한 후, 5개의 텍스트 스니펫이 나올 때까지 검색 결과와 ' highlight.body 목록을 계속 반복합니다.

  4. 대화형 검색은 사전 생성 필터 모델을 적용하여 쿼리와 검색 결과를 비교하여 쿼리와 결과의 관련성을 판단합니다. 사전 생성 필터 모델이 두 개의 점수를 생성하는 경우:

    • 점수가 낮은 대화형 검색은 ' 모름 ' 신호를 반환합니다. 신호를 모름에 대한 자세한 내용은 대화형 검색을 참조하세요.

    • 점수가 높은 대화형 검색은 해당 제목과 함께 스니펫을 생성 AI 모델에 전송하여 답변을 생성합니다.

  5. 생성 AI 모델이 처리하기에는 텍스트가 너무 길면 짧아질 때까지 마지막 스니펫 또는 제목 쌍을 반복해서 삭제합니다. 텍스트가 없으면 검색이 실패합니다.

  6. 대화형 검색은 필터 후 모델에 응답을 적용합니다. 필터 후 모델이 두 개의 점수를 생성하는 경우:

    • 점수가 낮은 대화형 검색은 ' 모름 ' 신호를 반환합니다.

    • 점수가 높은 대화형 검색은 생성된 응답을 모든 ' search_results '와 함께 호출 애플리케이션에 반환합니다.

AI 비서는 ‘ Elasticsearch ’와 같은 다른 검색 옵션에 대해서도 동일한 절차를 따릅니다.

…에 대한 body 별도의 필드를 추가하고 highlight.body

' highlight.body '이 있으면 대화형 검색 답변을 생성하는 데 사용되며, 그렇지 않으면 ' body '가 사용됩니다. 두 가지 모두 검색 결과 객체의 일부로 클라이언트에 전달되며 클라이언트는 답변에 대한 컨텍스트를 제공합니다. 예를 들어 기본 제공 웹 채팅에는 ' body ' 텍스트가 표시됩니다. 일부 검색 결과에 대한 인용 카드를 클릭하면 해당 검색 결과의 URL 볼 수 없습니다.

필드 사용을 위한 권장 사항

  • 검색 기술이 문서의 짧은 부분을 반환하는 경우 ' body ' 필드에 문서의 해당 부분을 사용하고 ' highlight.body' 를 생략합니다. 예를 들어, 많은 벡터 데이터베이스 솔루션은 문서의 토큰 세그먼트를 512개만 저장합니다.

  • 검색 기술이 문서의 짧은 부분('구절' 또는 '하이라이트' 또는 '스니펫')과 전체 텍스트를 모두 반환하는 경우, ' highlight.body ' 필드에 짧은 부분을 사용하고 ' body ' 필드에 전체 텍스트를 사용합니다.

선택적 사용자 정의 메타데이터 추가

클라이언트와 서버 모두 결과의 스키마에는 ' metadata 필드와 ' result_metadata ' 필드가 포함됩니다.

필드 사용을 위한 권장 사항

  • ' metadata ' 필드는 구성 정보를 검색 기능으로 전송합니다. 검색 기능에 사용되는 구성 정보의 예로는 인덱스 이름, 임베딩 모델 이름, 요청된 구절 길이, 부스트할 필드 등이 있습니다. 서버나 클라이언트에 구성 정보를 전달할 때 ' metadata ' 필드를 사용하는 것이 도움이 되는 이유는 다음과 같습니다:

    • 여러 어시스턴트가 동일한 서버 또는 클라이언트 코드를 사용하지만 구성이 다를 수 있습니다.

    • 어시스턴트가 한 명만 있어도 어시스턴트 인터페이스를 통해 구성을 쉽게 업데이트할 수 있습니다.

  • result_metadata 필드는 서버나 클라이언트에서 AI 어시스턴트로 검색 결과에 대한 추가 정보를 전송합니다. AI 어시스 턴트는 해당 정보를 최종 응답의 객체 search_results 일부로 전달합니다. 호출 애플리케이션은 추가 정보를 사용합니다. 예를 들어, 서버가 검색 결과의 이미지 result_metadata URL을 전송하면 호출하는 애플리케이션이 응답과 함께 이미지를 표시합니다.