스토리지에서 선택적 벡터 인스턴스 제거
Azure AI Search는 특정 워크로드에 사용되는 벡터 필드의 여러 복사본을 저장합니다. 쿼리 응답에서 원시 벡터를 반환하는 것과 같은 특정 동작을 지원할 필요가 없는 경우 해당 워크로드에 대한 스토리지를 생략하는 속성을 인덱스에 설정할 수 있습니다.
필수 조건
- HNSW(Hierarchical Navigable Small Worlds) 또는 KNN(전체 K-가장 가까운 인접) 알고리즘 및 새 벡터 프로필을 사용하여 구성이 있는 검색 인덱
vectorSearch
스의 벡터 필드입니다.
벡터 필드 저장 방법
모든 벡터 필드에 대해 각각 다른 용도로 제공되는 세 개의 벡터 복사본이 있을 수 있습니다.
인스턴스 | 사용 | 다음을 사용하여 제어 |
---|---|---|
문서 인덱싱 중에 받은 JSON을 저장하는 원본 벡터 | 문서 인덱싱을 사용하거나 mergeOrUpload 인덱싱하는 동안 증분 데이터 새로 고침 merge 에 사용됩니다. 쿼리 응답에서 "검색 가능한" 벡터를 반환하려는 경우에도 사용됩니다. |
stored 벡터 필드의 속성 |
원래 전체 정밀도 벡터 | 기존 인덱스는 내부 인덱스 작업 및 철저한 KNN 검색에 사용됩니다. 압축을 사용하는 벡터의 경우 스칼라 또는 이진 양자화 압축을 사용하여 벡터 필드의 ANN 검색 결과에서 과다 샘플링된 후보 집합에서 다시 점수(사용하도록 설정된 경우)하는 데도 사용됩니다. | rescoringOptions.rescoreStorageMethod 의 속성입니다 vectorSearch.compressions . API 버전 이상을 사용하여 만든 2024-11-01-Preview 인덱스에 대한 압축되지 않은 벡터 필드의 경우 검색 활동이나 품질에 영향을 주지 않고 기본적으로 생략됩니다. |
ANN(근사 값 인접 항목) 검색을 위한 HNSW 그래프의 벡터 | ANN 쿼리 실행에 사용됩니다. 전체 정밀도 벡터(압축이 적용되지 않은 경우) 또는 정량화된 벡터(압축이 적용되는 경우)로 구성됩니다. | HNSW에만 적용됩니다. 이러한 데이터 구조는 효율적인 ANN 검색에 필요합니다. |
벡터 스토리지에서 처음 두 인스턴스를 영구적으로 삭제하는 속성을 설정할 수 있습니다.
ANN 벡터 쿼리 실행에는 마지막 인스턴스(벡터 및 그래프)가 필요합니다. 스칼라 또는 이진 양자화와 같은 압축 기술을 사용하는 경우 이 데이터 집합에 적용됩니다. 손실 압축을 오프셋하려는 경우 ANN 검색 품질을 개선하기 위해 다시 점수 지정을 위해 두 번째 인스턴스를 유지해야 합니다.
stored
속성 설정
이 stored
속성은 검색 가능한 벡터 필드 콘텐츠(원본 인스턴스)에 스토리지가 할당되는지 여부를 결정하는 벡터 필드 정의의 부울 속성입니다. stored
속성의 기본값은 True입니다. 쿼리 응답에 원시 벡터 콘텐츠가 필요하지 않은 경우 false로 변경 stored
하여 필드당 최대 50%의 스토리지를 저장할 수 있습니다.
stored
을(를) false로 설정하기 위한 고려 사항:
벡터는 사람이 읽을 수 없으므로 RAG 시나리오에서 LLM으로 전송된 결과와 검색 페이지에서 렌더링된 결과에서 생략할 수 있습니다. 그러나 벡터 콘텐츠를 사용하는 다운스트림 프로세스에서 벡터를 사용하는 경우 유지합니다.
그러나 인덱싱 전략에 기존 문서의 "merge" 또는 "mergeOrUpload"와 같은 부분 문서
stored=false
업데이트가 포함되어 있으면 병합 중에 해당 필드에 대한 콘텐츠 업데이트가 방지됩니다. 검색 문서에 대한 각 "merge" 또는 "mergeOrUpload" 작업에서 업데이트 중인 비벡터 필드와 함께 전체 벡터 필드를 제공해야 합니다. 그렇지 않으면 벡터가 삭제됩니다.
Important
특성 설정 stored=false
은 되돌릴 수 없습니다. 이 속성은 인덱스 만들기에만 설정할 수 있으며 벡터 필드에만 허용됩니다. 새 벡터 필드를 사용하여 기존 인덱스 업데이트 시 이 속성을 false
.로 설정할 수 없습니다. 나중에 검색 가능 벡터 콘텐츠를 원하는 경우 인덱스를 삭제하고 다시 작성하거나 새 특성이 있는 새 필드를 만들고 로드해야 합니다.
검색 인덱스 내의 새 벡터 필드의 경우 false로 설정 stored
하여 벡터 필드에 대해 검색 가능한 스토리지를 영구적으로 제거합니다. 다음 예제에서는 속성이 있는 벡터 필드 정의를 stored
보여줍니다.
PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name": "demo-index",
"fields": [
{
"name": "vectorContent",
"type": "Collection(Edm.Single)",
"retrievable": false,
"stored": false,
"dimensions": 1536,
"vectorSearchProfile": "vectorProfile"
}
]
}
요점 요약
벡터 데이터 형식이 있는 필드에 적용됩니다.
메모리가 아닌 디스크의 스토리지에 영향을 미치며 쿼리에는 영향을 주지 않습니다. 쿼리 실행에서는 벡터의 복사본이 항상 저장되므로 속성의 영향을
stored
받지 않는 별도의 벡터 인덱스가 사용됩니다.stored
속성은 벡터 필드에서 인덱스를 만드는 동안 설정되며 되돌릴 수 없습니다. 나중에 검색 가능 콘텐츠를 원하는 경우 인덱스를 삭제하고 다시 작성하거나 새 특성이 있는 새 필드를 만들고 로드해야 합니다.기본값 설정은
stored
가 true,retrievable
이 false입니다. 기본 구성에서는 검색 가능 복사본이 저장되지만 결과에 자동으로 반환되지는 않습니다.stored
가 true이면 인덱스를 다시 작성하지 않고도 언제든지retrievable
을 true 및 false로 전환할 수 있습니다.stored
가 false인 경우retrievable
이 false여야 하며 변경할 수 없습니다.
rescoreStorageMethod
속성 설정
참고 항목
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 사용하지 않는 것이 좋습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
이 속성은 rescoreStorageMethod
압축을 사용할 때 전체 정밀도 벡터의 스토리지를 제어합니다.
API 버전 이상을 사용하여 만든 2024-11-01-Preview
인덱스에 대한 압축되지 않은 벡터 필드의 경우 검색 활동이나 품질에 영향을 주지 않고 기본적으로 생략됩니다. 이 API 버전 이전에 만든 기존 벡터 필드의 경우 이 데이터 복사본을 제거할 수 있는 현재 위치 기능이 없습니다.
벡터 압축에서 rescoreStorageMethod
속성은 기본적으로 설정 preserveOriginals
되며, HNSW 그래프에 대한 손실 압축의 영향을 줄이기 위해 오버 샘플링 및 다시 점수 지정 기능을 위한전체 정밀도 벡터를 유지합니다. 이러한 기능을 사용하지 않는 경우 .로 설정 rescoreStorageMethod
하여 벡터 스토리지를 discardOriginals
줄일 수 있습니다.
Important
rescoreStorageMethod
속성을 설정하는 것은 되돌릴 수 없으며 압축 방법에 따라 검색 품질 손실 수준이 다릅니다. 인덱스를 만들거나 새 벡터 필드를 추가하는 동안 또는 나중에 만든 2024-11-01-Preview
인덱스에 대해 설정할 수 있습니다.
스칼라 또는 이진 양자화를 사용하려는 경우 검색 품질을 최대화하기 위해 preserveOriginals
집합을 rescoreStorageMethod
유지하는 것이 좋습니다.
이 속성을 설정하려면 다음을 수행합니다.
인덱스 만들기 또는 인덱스 만들기 또는 업데이트 2024-11-01-preview REST API 또는 기능을 제공하는 Azure SDK 베타 패키지를 사용합니다.
vectorSearch
프로필, 알고리즘 및 압축을 사용하여 인덱스에 섹션을 추가합니다.압축에서 true로
enableRescoring
설정된 상태로 추가하고rescoringOptions
,defaultOversampling
양의 정수로 설정하고,rescoreStorageMethod
로preserveOriginals
설정합니다.PUT https://[service-name].search.windows.net/indexes/demo-index?api-version=2024-11-01-preview { "name": "demo-index", "fields": [. . . ], . . . "vectorSearch": { "profiles": [ { "name": "myVectorProfile", "algorithm": "myHnsw", "compression": "myScalarQuantization" } ], "algorithms": [ { "name": "myHnsw", "kind": "hnsw", "hnswParameters": { "metric": "cosine", "m": 4, "efConstruction": 400, "efSearch": 500 }, "exhaustiveKnnParameters": null } ], "compressions": [ { "name": "myScalarQuantization", "kind": "scalarQuantization", "rescoringOptions": { "enableRescoring": true, "defaultOversampling": 10, "rescoreStorageMethod": "preserveOriginals" }, "scalarQuantizationParameters": { "quantizedDataType": "int8" }, "truncationDimension": null } ] } }