>  기사  >  기술 주변기기  >  LLM 애플리케이션 빌드: Azure Cognitive Services의 벡터 검색 기능 활용

LLM 애플리케이션 빌드: Azure Cognitive Services의 벡터 검색 기능 활용

王林
王林앞으로
2023-08-23 22:49:06759검색

작성자 | Simon Bisson

선별 | Ethan

Microsoft의 Cognitive Search API는 이제 Azure OpenAI 등에서 대규모 언어 모델과 함께 사용할 수 있는 서비스로 벡터 검색을 제공합니다.

Semantic Core, TypeChat 및 LangChain과 같은 도구를 사용하면 Azure OpenAI와 같은 생성 AI 기술을 기반으로 애플리케이션을 구축할 수 있습니다. 이는 자연어 인터페이스를 구축하고 실행하기 위한 도구로 사용할 수 있는 기본 LLM(대형 언어 모델)에 제약 조건을 부과할 수 있기 때문입니다.

기본적으로 LLM은 심층 신경이 사용되는 의미 공간을 탐색하기 위한 도구입니다. 네트워크는 초기 신호부터 시작하는 토큰 체인의 다음 음절을 예측할 수 있습니다. 프롬프트가 개방형인 경우 LLM은 입력을 초과하여 합리적으로 보이지만 실제로는 완전히 넌센스인 결과를 생성할 수 있습니다.

우리 모두가 검색 엔진의 결과를 신뢰하는 경향이 있는 것처럼 LLM의 결과도 익숙한 기술의 또 다른 측면으로 보기 때문에 신뢰하는 경향이 있습니다. 그러나 Wikipedia, Stack Overflow, Reddit과 같은 사이트의 신뢰할 수 있는 데이터를 사용하여 대규모 언어 모델을 훈련하면 콘텐츠에 대한 이해가 전달되지 않고 해당 소스의 텍스트와 동일한 패턴을 따르는 텍스트를 생성할 수 있습니다. 때로는 출력이 정확할 수도 있지만 때로는 잘못될 수도 있습니다.

대규모 언어 모델의 오류와 무의미한 출력을 방지하고 사용자가 쿼리에 대해 정확하고 합리적인 답변을 얻을 수 있도록 하려면 어떻게 해야 합니까?

1. 의미론적 메모리 제약으로 대규모 모델 제한

우리가 해야 할 일은 LLM이 더 작은 데이터 세트에서만 텍스트를 생성하도록 제한하는 것입니다. 이것이 바로 Microsoft의 새로운 LLM 기반 개발 스택이 등장하는 곳입니다. 모델을 제어하고 오류 발생을 방지하는 데 필요한 도구를 제공합니다.

TypeChat과 같은 도구를 사용하여 특정 출력 형식을 강제로 적용하거나 Semantic Kernel과 같은 오케스트레이션 파이프라인을 사용하여 다른 신뢰할 수 있는 정보 소스를 처리할 수 있습니다. 이는 효과적으로 "루팅"됩니다. 알려진 의미 공간에 모델을 적용하여 LLM을 제한합니다. 여기서 LLM은 자신이 잘하는 일을 할 수 있고, 구성된 프롬프트를 요약하고, 오버슈팅 없이 해당 프롬프트를 기반으로 텍스트를 생성할 수 있습니다(또는 적어도 오버슈팅 가능성을 크게 줄입니다).

Microsoft에서 "의미 기억"이라고 부르는 것이 마지막 방법의 기초입니다. 의미론적 메모리는 벡터 검색을 사용하여 LLM의 실제 출력을 제공하는 데 사용할 수 있는 힌트를 제공합니다. 벡터 데이터베이스는 초기 프롬프트의 컨텍스트를 관리하고, 벡터 검색은 초기 사용자 쿼리와 일치하는 저장된 데이터를 찾고, LLM은 해당 데이터를 기반으로 텍스트를 생성합니다. Bing의 기본 벡터 검색 도구를 사용하여 검색 데이터베이스에서 파생된 답변을 구축하는 Bing Chat에서 이 접근 방식이 실제로 실행되는 것을 확인하세요.

의미론적 메모리를 사용하면 벡터 데이터베이스와 벡터 검색을 통해 LLM 기반 응용 프로그램 수단을 제공할 수 있습니다. 점점 늘어나는 오픈 소스 벡터 데이터베이스 중 하나를 사용하거나 익숙한 SQL 및 NoSQL 데이터베이스에 벡터 인덱스를 추가할 수 있습니다. 특히 유용해 보이는 새 제품은 Azure Cognitive Search를 확장하여 데이터에 벡터 인덱스를 추가하고 해당 인덱스를 쿼리하기 위한 새로운 API를 제공합니다.

2. Azure Cognitive Search에 벡터 인덱스 추가

Azure Cognitive Search는 Microsoft 자체 검색을 기반으로 구축되었습니다. 도구. 익숙한 Lucene 쿼리와 자체 자연어 쿼리 도구의 조합을 제공합니다. Azure Cognitive Search는 Cognitive Services API를 사용하여 개인 데이터를 호스팅하고 콘텐츠에 액세스할 수 있는 SaaS(Software-as-a-Service) 플랫폼입니다. 최근 Microsoft는 벡터 인덱스 구축 및 사용에 대한 지원도 추가했습니다. 이를 통해 유사성 검색을 사용하여 데이터에서 관련 결과의 순위를 매기고 AI 기반 애플리케이션에서 사용할 수 있습니다. 따라서 Azure Cognitive Search는 Semantic Kernel 및 Azure OpenAI로 구축된 Azure 호스팅 LLM 애플리케이션을 위한 이상적인 도구이며, C# 및 Python용 Cognitive Search용 Semantic Kernel 플러그인도 사용할 수 있습니다.

다른 Azure 서비스와 마찬가지로 Azure Cognitive Search는 관리되는 다른 Azure 서비스와 함께 작동하는 서비스입니다. 이를 통해 다양한 Azure 스토리지 서비스, 호스팅 텍스트, 이미지, 오디오 및 비디오 전반에 걸쳐 인덱싱하고 검색할 수 있습니다. 데이터는 여러 지역에 저장되어 고가용성을 제공하고 대기 시간과 응답 시간을 줄입니다. 또한 엔터프라이즈 애플리케이션의 경우 Microsoft Entra ID(Azure Active Directory의 새 이름)를 사용하여 개인 데이터에 대한 액세스를 제어할 수 있습니다

3. 콘텐츠에 대한 임베딩 벡터를 생성하고 저장할 수 있습니다

Azure Cognitive Search는 "자신만의 임베딩 벡터 가져오기" 서비스. Cognitive Search는 필요한 벡터 임베딩을 생성하지 않으므로 Azure OpenAI 또는 OpenAI 임베딩 API를 사용하여 콘텐츠에 대한 임베딩을 생성해야 합니다. 서비스의 토큰 한도 내에서 유지하려면 대용량 파일을 청크해야 할 수도 있습니다. 필요할 때 벡터 데이터를 인덱싱하기 위해 새 테이블을 만들 준비를 하세요.

Azure Cognitive Search에서 벡터 검색은 가장 가까운 이웃 모델을 사용하여 원래 쿼리와 유사한 사용자가 선택한 수의 문서를 반환합니다. 이 프로세스는 원래 쿼리의 벡터 임베딩을 사용하여 벡터 인덱싱을 호출하고 LLM 프롬프트에서 사용할 준비가 된 데이터베이스에서 유사한 벡터 및 인덱스 콘텐츠를 반환합니다

Microsoft는 이 벡터 저장소를 Azure Machine Learning을 위한 RAG(Retrieval Augmented Generation) 디자인 패턴의 일부로 프롬프트 흐름 도구와 함께 사용합니다. RAG는 ​​인지 검색에서 벡터 인덱싱을 활용하여 LLM 프롬프트의 기초를 형성하는 컨텍스트를 구축합니다. 이를 통해 쿼리에서 반환되는 유사한 문서 수를 설정하는 등 벡터 인덱스를 구축하고 사용하는 로우 코드 방법이 제공됩니다. 동일한 지역에서 Azure OpenAI 및 Cognitive Search용 리소스를 만드는 것부터 시작하세요. 이렇게 하면 지연 시간을 최소화하면서 삽입된 검색 색인을 로드할 수 있습니다. 인덱스를 로드하려면 Azure OpenAI API 및 Cognitive Search API를 호출해야 하므로 재시도를 관리하는 코드를 추가하여 코드가 서비스에서 가능한 모든 속도 제한에 응답할 수 있는지 확인하는 것이 좋습니다. 서비스 API를 사용하는 경우 비동기 호출을 사용하여 임베드를 생성하고 인덱스를 로드해야 합니다.

벡터는 검색 색인에 벡터 필드로 저장되며, 여기서 벡터는 차원이 있는 부동 소수점 숫자입니다. 이러한 벡터는 벡터를 유사한 벡터의 이웃으로 정렬하는 계층적 탐색 가능한 작은 세계 이웃 그래프를 통해 매핑되어 벡터 인덱스를 검색하는 실제 프로세스의 속도를 높입니다.

벡터 검색을 위한 인덱스 스키마를 정의한 후 인지 검색을 위해 인덱스에 데이터를 로드할 수 있습니다. 데이터는 여러 벡터와 연관될 수 있습니다. 예를 들어 인지 검색을 사용하여 회사 문서를 호스팅하는 경우 주요 문서 메타데이터 용어 및 문서 콘텐츠에 대한 별도의 벡터가 있을 수 있습니다. 데이터 세트는 JSON 문서로 저장되어야 하며, 이는 결과를 사용하여 프롬프트 컨텍스트를 구성하는 프로세스를 단순화합니다. 인덱스는 가장 일반적인 Azure 저장소 옵션 사용을 지원하므로 소스 문서를 포함할 필요가 없습니다.

쿼리를 실행하기 전에 먼저 쿼리 본문을 사용하여 선택한 포함 모델을 호출해야 합니다. 그러면 선택한 인덱스를 검색하는 데 사용할 수 있는 다차원 벡터가 반환됩니다. 벡터 검색 API를 호출할 때 대상 벡터 인덱스, 원하는 일치 항목 수, 인덱스의 관련 텍스트 필드를 지정합니다. 적절한 유사성 측정값을 선택하면 쿼리에 매우 도움이 될 수 있으며, 그 중 가장 일반적으로 사용되는 것은 코사인 메트릭입니다(

5). 단순한 텍스트 벡터를 넘어서

Azure Cognitive Search의 벡터 기능은 텍스트 일치 그 이상입니다. Cognitive Search는 다국어 임베딩과 함께 사용되어 여러 언어에 대한 문서 검색을 지원할 수 있습니다. 더 복잡한 API를 사용할 수도 있습니다. 예를 들어 하이브리드 검색에서 Bing 의미 체계 검색 도구를 혼합하여 보다 정확한 결과를 제공함으로써 LLM 기반 응용 프로그램의 출력 품질을 향상시킬 수 있습니다.

Microsoft는 자체 GPT-4 기반 Bing 검색 엔진은 물론 다양한 Copilot을 구축하는 데 사용한 도구와 기술을 빠르게 제품화하고 있습니다. Semantic Kernel 및 Azure AI Studio의 프롬프트 흐름과 같은 오케스트레이션 엔진은 대규모 언어 모델 작업에 대한 Microsoft 접근 방식의 핵심입니다. 이제 이러한 기반이 마련되었으므로 회사가 필요한 구현 기술을 더 많이 출시하는 것을 볼 수 있습니다. 벡터 검색과 벡터 인덱싱은 정확한 응답을 제공하는 데 핵심입니다. 이러한 서비스를 제공하는 친숙한 도구를 구축함으로써 Microsoft는 비용과 학습 곡선을 최소화하는 데 도움을 줄 것입니다

위 내용은 LLM 애플리케이션 빌드: Azure Cognitive Services의 벡터 검색 기능 활용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제