Azure Cache for Redis의 벡터 포함 및 벡터 검색이란?
VSS(벡터 유사성 검색)는 AI 기반 지능형 애플리케이션에 널리 사용되는 기술이 되었습니다. Azure Cache for Redis는 검색 증강 생성형 AI 및 분석 시나리오를 위한 Azure OpenAI와 같은 모델을 결합하여 벡터 데이터베이스로 사용할 수 있습니다. 이 문서는 벡터 포함, 벡터 유사성 검색의 개념과 Redis를 지능형 애플리케이션을 지원하는 벡터 데이터베이스로 사용하는 방법에 대한 개략적인 소개입니다.
Azure Cache for Redis 및 Azure OpenAI를 사용하여 벡터 유사성 검색을 수행하는 방법에 대한 자습서 및 샘플 애플리케이션은 다음을 참조하세요.
- 자습서: LangChain과 함께 Azure Cache for Redis를 사용하여 Azure OpenAI 포함에 대한 벡터 유사성 검색 수행
- 샘플: .NET Semantic Kernel이 포함된 챗봇 애플리케이션에서 Redis를 벡터 데이터베이스로 사용
- 샘플: Redis OM for .NET을 통해 Dall-E 기반 이미지 갤러리에서 Redis를 의미 체계 캐시로 사용
가용성 범위
Redis의 벡터 검색 기능에는 Redis 스택, 특히 RediSearch 모듈이 필요합니다. 이 기능은 Azure Cache for Redis의 엔터프라이즈 계층에서만 사용할 수 있습니다.
이 표에는 다양한 계층의 벡터 검색 가용성에 대한 정보가 포함되어 있습니다.
계층 | 기본/표준 | Premium | Enterprise | Enterprise Flash |
---|---|---|---|---|
사용 가능 | 아니요 | 아니요 | 예 | 예(미리 보기) |
벡터 포함이란?
개념
벡터 포함은 단어, 문서 또는 이미지와 같은 데이터를 고차원 벡터 공간에서 숫자 벡터로 표현할 수 있도록 하는 기계 학습 및 자연어 처리의 기본 개념입니다. 벡터 포함의 기본 개념은 이 벡터 공간의 지점에 매핑하여 데이터의 기본 관계 및 의미 체계를 캡처하는 것입니다. 이는 텍스트나 이미지를 데이터를 나타내는 일련의 숫자로 변환한 다음 다른 숫자 시퀀스를 비교하는 것을 의미합니다. 이렇게 하면 복잡한 데이터를 수학적으로 조작하고 분석할 수 있으므로 유사성 비교, 권장 사항 및 분류와 같은 작업을 더 쉽게 수행할 수 있습니다.
각 기계 학습 모델은 데이터를 분류하고 다른 방식으로 벡터를 생성합니다. 또한 일반적으로 각 벡터 차원이 나타내는 의미 체계의 의미를 정확히 확인할 수 없습니다. 그러나 모델은 입력 데이터의 각 블록 간에 일치하기 때문에 유사한 단어, 문서 또는 이미지에도 비슷한 벡터가 있습니다. 예를 들어 basketball
과 baseball
이라는 단어에는 rainforest
같은 단어보다 서로 훨씬 가까운 포함 벡터가 있습니다.
벡터 비교
다양한 메트릭을 사용하여 벡터를 비교할 수 있습니다. 벡터를 비교하는 가장 널리 사용되는 방법은 다차원 공간에서 두 벡터 사이 각도의 코사인을 측정하는 코사인 유사성을 사용하는 것입니다. 벡터가 가까울수록 각도가 작습니다. 기타 일반적인 거리 메트릭에는 유클리드 거리와 내부 제품이 포함됩니다.
포함 생성
많은 기계 학습 모델은 포함 API를 지원합니다. Azure OpenAI Service를 사용하여 벡터 포함을 만드는 방법에 대한 예는 Azure OpenAI를 사용하여 포함을 생성하는 방법을 참조하세요.
벡터 데이터베이스란?
벡터 데이터베이스는 벡터를 저장, 관리, 검색 및 비교할 수 있는 데이터베이스입니다. 벡터 데이터베이스는 높은 차원 벡터를 효율적으로 저장하고 최소한의 대기 시간과 높은 처리량으로 검색할 수 있어야 합니다. 비관계형 데이터 저장소는 PostgreSQL과 같은 관계형 데이터베이스를, 예를 들어 pgvector 확장과 함께 사용할 수 있지만 가장 일반적으로 벡터 데이터베이스로 사용됩니다.
인덱스 및 검색 방법
벡터 데이터베이스는 빠른 검색을 위해 데이터를 인덱싱해야 합니다. 또한 벡터 데이터베이스는 간소화된 프로그래밍 환경을 위해 기본 제공된 검색 쿼리를 지원해야 합니다.
다음과 같은 여러 가지 인덱스 방법이 있습니다.
- FLAT - 무차별 암호 대입 인덱스
- HNSW - Hierarchical Navigable Small World 그래프를 사용한 효율적이고 강력한 대략적인 가장 인접한 항목 검색
다음과 같은 몇 가지 일반적인 검색 방법이 있습니다.
- KNN(K-가장 가까운 인접 항목) - 가장 큰 정밀도를 제공하지만 계산 비용이 더 높은 철저한 방법입니다.
- ANN(근사 가장 인접한 항목) - 더 빠른 속도와 낮은 처리 오버헤드를 위해 정밀도를 거래하는 것이 더 효율적입니다.
검색 기능
마지막으로, 벡터 데이터베이스는 선택한 벡터 비교 메서드를 사용하여 가장 유사한 벡터를 반환하는 방식으로 벡터 검색을 실행합니다. 일부 벡터 데이터베이스는 벡터 검색을 수행하기 전에 먼저 데이터베이스에 저장된 특성 또는 메타데이터에 따라 결과 범위를 좁혀 하이브리드 검색을 수행할 수도 있습니다. 이는 벡터 검색을 보다 효과적이고 사용자 지정 가능하게 만드는 방법입니다. 예를 들어 벡터 검색은 데이터베이스에 특정 태그가 있는 벡터 또는 특정 지역의 지리적 위치 데이터가 있는 벡터로만 제한될 수 있습니다.
벡터 검색 키 시나리오
여러 애플리케이션에서 벡터 유사성 검색을 사용할 수 있습니다. 몇 가지 일반적인 사용 사례에는 다음이 포함됩니다.
- 의미 체계 Q&A. 사용자 고유의 데이터에 대한 질문에 응답할 수 있는 챗봇을 만듭니다. 예를 들어, 의료 보험에 대한 직원의 질문에 응답할 수 있는 챗봇입니다. 수백 페이지의 빽빽한 의료 보험 설명서를 청크로 분할하여 포함 벡터로 변환하고 벡터 유사성에 따라 검색할 수 있습니다. 그런 다음, 다른 LLM(대규모 언어 모델)을 사용하여 직원을 위해 결과 문서를 요약할 수 있습니다. 의미 체계 Q&A 예제
- 문서 검색. LLM에서 제공하는 텍스트에 대한 보다 심층적인 의미 체계 이해를 사용하여 기존 키워드 기반 검색으로는 부족한, 보다 풍부한 문서 검색 환경을 제공합니다. 문서 검색 예제
- 제품 추천. 검색 기록 또는 이전 구매와 같은 과거 사용자 활동을 기반으로 추천할 유사한 제품 또는 서비스를 찾습니다. 제품 권장 사항 예제
- Visual Search. 사용자가 찍은 사진이나 다른 제품의 사진과 비슷한 제품을 검색합니다. Visual Search 예제
- 의미 체계 캐싱. LLM 완성을 캐싱하여 LLM의 비용 및 대기 시간을 줄입니다. LLM 쿼리는 벡터 유사성을 사용하여 비교됩니다. 새 쿼리가 이전에 캐시된 쿼리와 충분히 유사한 경우, 캐시된 쿼리가 반환됩니다. LangChain을 사용하는 의미 체계 캐싱 예제
- LLM 대화 메모리. LLM을 사용하여 대화 기록을 벡터 데이터베이스에 포함으로 유지합니다. 애플리케이션은 벡터 검색을 사용하여 관련 기록 또는 "메모리"를 LLM에서 응답으로 끌어올 수 있습니다. LLM 대화 메모리 예제
벡터를 저장하고 검색하기 위해 Azure Cache for Redis를 선택하는 이유는 무엇인가요?
Azure Cache for Redis를 효과적으로 벡터 데이터베이스로 사용하여 포함 벡터를 저장하고 벡터 유사성 검색을 수행할 수 있습니다. 벡터 저장 및 검색에 대한 지원은 다음과 같은 여러 주요 기계 학습 프레임워크에서 사용할 수 있습니다.
이러한 프레임워크는 Redis와의 풍부한 통합 기능을 제공합니다. 예를 들어 Redis LangChain 통합은 Redis를 벡터 저장소로 사용할 때 전달되는 메타데이터에 대한 인덱스 스키마를 자동으로 생성합니다. 이렇게 하면 메타데이터를 기반으로 결과를 훨씬 쉽게 필터링할 수 있습니다.
Redis는 Azure Cache for Redis의 엔터프라이즈 계층에서 사용할 수 있는 RediSearch 모듈을 통해 광범위한 검색 기능을 제공합니다. 여기에는 다음이 포함됩니다.
Euclidean
,Cosine
및Internal Product
를 비롯한 여러 개의 거리 메트릭입니다.- KNN(
FLAT
사용) 및 ANN(HNSW
사용) 인덱싱 메서드를 모두 지원합니다. - 해시 또는 JSON 데이터 구조의 벡터 스토리지
- 상위 K 쿼리
- 벡터 범위 쿼리(즉, 특정 벡터 거리 내의 모든 항목 찾기)
- 다음과 같은 강력한 쿼리 기능을 사용하는 하이브리드 검색:
- 지리 공간적 필터링
- 숫자 및 텍스트 필터
- 접두사 및 유사 일치
- 표기 일치
- 부울 쿼리
또한 Redis는 이미 매우 일반적으로 캐싱 또는 세션 저장소 애플리케이션에 사용되기 때문에 많은 경우에 경제적인 선택입니다. 이러한 시나리오에서는 벡터 검색 애플리케이션을 동시에 처리하는 동시에 일반적인 캐싱 역할을 수행하여 두 가지 역할을 끌어올 수 있습니다.
벡터를 저장하고 검색할 수 있는 다른 옵션은 무엇인가요?
Azure에는 벡터 스토리지 및 검색을 위한 여러 다른 솔루션이 있습니다. 다른 솔루션은 다음과 같습니다.
- Azure AI 검색
- MongoDB vCore API를 사용하는 Azure Cosmos DB
pgvector
를 사용하는 Azure Database for PostgreSQL – 유연한 서버
관련 콘텐츠
포함 및 벡터 검색을 시작하는 가장 좋은 방법은 직접 해 보는 것입니다!