Azure AI Search는 포함 모델을 호스트하지 않으므로 쿼리 입력 및 출력에 대한 벡터를 만들어야 합니다. 다음 방법 중 하나를 선택합니다.
| 접근법 | 설명 |
|---|---|
| 통합 벡터화 | Azure AI Search에서 기본 제공 데이터 청크 및 벡터화를 사용합니다. 이 방법은 Azure AI Foundry와 같은 외부 포함 모델을 가리키는 인덱서, 기술 세트 및 기본 제공 또는 사용자 지정 기술에 대한 종속성을 사용합니다. |
| 수동 벡터화 | 데이터 청크 및 벡터화를 직접 관리합니다. 인덱싱의 경우 사전 벡터화된 문서를 검색 인덱스 내의 벡터 필드로 푸시합니다. 쿼리의 경우 사전 계산된 벡터를 검색 엔진에 제공합니다. 이 방법의 데모는 azure-search-vector-samples GitHub 리포지토리를 참조하세요. |
대부분의 시나리오에서 통합 벡터화를 사용하는 것이 좋습니다. 지원되는 임베딩 모델을 사용할 수 있지만 이 문서에서는 Azure OpenAI 모델을 사용하여 설명합니다.
벡터 쿼리에 포함 모델을 사용하는 방법
모델 포함은 쿼리 입력 및 쿼리 출력 모두에 대한 벡터를 생성합니다. 쿼리 입력은 다음과 같습니다.
쿼리를 처리하는 동안 벡터로 변환되는 텍스트 또는 이미지입니다. 통합 벡터화의 일부로 벡터라이저 가 이 작업을 수행합니다.
미리 계산된 벡터입니다. 원하는 포함 모델에 쿼리 입력을 전달하여 이러한 벡터를 생성할 수 있습니다. 속도 제한을 방지하려면 워크로드에서 재시도 논리를 구현합니다. Python 데모에서는 끈기를 사용합니다.
쿼리 입력에 따라 검색 엔진은 검색 인덱스에서 일치하는 문서를 검색합니다. 이러한 문서는 쿼리 출력입니다.
검색 인덱스에는 포함으로 채워진 하나 이상의 벡터 필드가 있는 문서가 이미 포함되어 있어야 합니다. 통합 또는 수동 벡터화를 통해 이러한 포함을 만들 수 있습니다. 정확한 결과를 보장하려면 인덱싱 및 쿼리에 동일한 포함 모델을 사용합니다.
모델 통합을 포함하기 위한 팁
사용 사례를 식별합니다. 벡터 검색 기능에 대한 모델 통합 포함이 검색 솔루션에 가치를 더하는 특정 사용 사례를 평가합니다. 예를 들어 다중 모드 검색 또는 텍스트 콘텐츠와 이미지 콘텐츠 일치, 다국어 검색 및 유사성 검색이 있습니다.
청크 분할 전략을 설계합니다. 포함 모델에는 허용되는 토큰 수에 제한이 있으므로 대용량 파일에 는 데이터 청크가 필요합니다.
비용 및 성능을 최적화합니다. 벡터 검색은 리소스를 많이 사용하며 최대 한도의 적용을 받으므로 의미 체계 의미를 포함하는 필드만 벡터화합니다. 동일한 가격에 더 많은 벡터를 저장하도록 벡터 크기를 줄입니다.
올바른 포함 모델을 선택합니다. 텍스트 기반 검색에 대한 단어 포함 또는 시각적 검색에 대한 이미지 포함과 같은 사용 사례에 대한 모델을 선택합니다. OpenAI의 text-embedding-ada-002 또는 Azure AI Vision의 이미지 검색 REST API와 같은 미리 학습된 모델을 고려합니다.
벡터 길이를 정규화합니다. 유사성 검색의 정확도와 성능을 향상시키려면 검색 인덱스에 저장하기 전에 벡터 길이를 정규화합니다. 대부분의 미리 학습된 모델은 이미 정규화되어 있습니다.
모델을 미세 조정합니다. 필요한 경우 도메인별 데이터에서 모델을 미세 조정하여 검색 애플리케이션의 성능과 관련성을 향상시킵니다.
테스트 및 반복합니다. 원하는 검색 성능과 사용자 만족도를 달성하기 위해 포함 모델 통합을 지속적으로 테스트하고 구체화합니다.
리소스를 같은 지역에 만듭니다.
Azure OpenAI 포함 모델과 통합된 벡터화는 리소스가 동일한 지역에 있어야 하는 것은 아니지만 동일한 지역을 사용하면 성능을 향상시키고 대기 시간을 줄일 수 있습니다.
리소스에 동일한 지역을 사용하려면 다음을 수행합니다.
동일한 지역에 Azure OpenAI 리소스 및 Azure AI Search 서비스를 만듭니다.
팁 (조언)
AI 보강을 위한 사용자 지정 기술에서 하이브리드 쿼리 또는 기계 학습 모델에 의미 체계 순위를 사용하시겠습니까? 이러한 기능을 제공하는 Azure AI Search 지역을 선택합니다.
Azure AI Foundry에서 포함 모델 선택
Azure AI Foundry 포털의 에이전트 워크플로에 지식을 추가할 때 검색 인덱스 만들기 옵션이 있습니다. 마법사가 단계를 안내합니다.
한 단계에서는 포함 모델을 선택하여 일반 텍스트 콘텐츠를 벡터화합니다. 지원되는 모델은 다음과 같습니다.
- 텍스트 임베딩 3 스몰
- 텍스트-임베딩-3-라지
- 텍스트-임베딩-아다-002
- Cohere-embed-v3-english
- Cohere-embed-v3-multilingual
모델을 이미 배포해야 하며, 모델에 액세스할 수 있는 권한이 있어야 합니다. 자세한 내용은 Azure AI Foundry 모델의 배포 개요를 참조하세요.
즉석 쿼리의 포함 생성
통합 벡터화를 사용하지 않으려면 포함을 수동으로 생성하여 벡터 쿼리의 속성에 붙여넣 vectorQueries.vector 을 수 있습니다. 자세한 내용은 Azure AI Search에서 벡터 쿼리 만들기를 참조하세요.
다음 예제에서는 text-embedding-ada-002 모델을 가정합니다. Azure OpenAI 리소스 세부 정보로 대체 YOUR-API-KEY 합니다 YOUR-OPENAI-RESOURCE .
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static async Task Main(string[] args)
{
var apiKey = "YOUR-API-KEY";
var apiBase = "https://YOUR-OPENAI-RESOURCE.openai.azure.com";
var apiVersion = "2024-02-01";
var engine = "text-embedding-ada-002";
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var requestBody = new
{
input = "How do I use C# in VS Code?"
};
var response = await client.PostAsync(
$"{apiBase}/openai/deployments/{engine}/embeddings?api-version={apiVersion}",
new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json")
);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
출력은 1,536차원의 벡터 배열입니다.