밀접 벡터
원본 보기Elasticsearch의 밀집 벡터 검색
밀집 벡터는 신경망 임베딩을 사용해 의미를 표현합니다. 텍스트, 이미지 또는 기타 데이터를 고정 길이의 부동 소수점 숫자 벡터로 변환합니다. 의미가 비슷한 콘텐츠는 벡터 공간에서 가까운 지점에 매핑되므로, 밀집 벡터 검색은 다음과 같은 작업에 강력한 기법입니다.
- 의미적으로 유사한 콘텐츠 찾기
- 자연어 질문과 관련 있는 답변 매칭하기
- 이미지 및 멀티미디어 유사도 검색 수행하기
- 콘텐츠 기반 추천 제공하기
대부분의 사용 사례에서는 semantic_text 필드 타입부터 시작하는 것을 권장합니다. 자동 모델 관리와 벡터 검색에 적합한 기본값을 제공합니다.
Elasticsearch에서 밀집 벡터 검색을 구현하려면 인덱스 구성과 임베딩 생성 방법이 모두 필요합니다.
임베딩과 함께 문서 인덱싱하기
- Elasticsearch에서 직접 임베딩 생성
- NLP 모델 옵션 개요를 참조하세요
- 또는 직접 만든 임베딩 가져오기
dense_vector필드 타입을 사용해 저장합니다
- Elasticsearch에서 직접 임베딩 생성
k-NN 검색으로 인덱스 쿼리하기
knn쿼리를 사용해 벡터 유사도 기반으로 결과를 조회합니다
API를 사용해 Elasticsearch Serverless 프로젝트를 생성할 때 general_purpose와 vector 두 가지 프로필 중에서 선택할 수 있습니다.
general purpose 프로필은 전문 검색, 희소 벡터, 그리고 BBQ 같은 압축을 사용하는 밀집 벡터를 포함해 대부분의 검색 사용 사례에 권장됩니다.
vector 프로필은 압축되지 않은 고차원 밀집 벡터를 기반으로 하는 사용 사례에만 권장됩니다.
프로필이 가상 컴퓨팅 단위(VCU) 할당과 비용에 미치는 영향에 대한 자세한 내용은 Elasticsearch Serverless 과금 항목을 참조하세요.
Better Binary Quantization(BBQ)은 dense_vector 필드를 위한 고급 벡터 양자화 기법입니다. 임베딩을 간결한 이진 형태로 압축해 유사도 검색 속도를 높이고 메모리 사용량을 줄입니다. 이는 특히 HNSW(Hierarchical Navigable Small World)와 함께 사용할 때 검색 적합성과 비용 효율성을 모두 개선합니다.
float 또는 bfloat16 벡터와 384개 이상의 차원을 사용하는 새 인덱스는 최적의 성능과 메모리 효율을 위해 자동으로 BBQ HNSW를 기본값으로 사용합니다. byte, bit 같은 다른 요소 타입은 양자화 없이 일반 hnsw를 기본값으로 사용합니다.
BBQ의 동작 방식, 지원되는 알고리즘, 구성 예시에 대한 자세한 내용은 Better Binary Quantization(BBQ) 문서에서 확인하세요.
semantic_text 필드 타입을 사용할 때는 index_options 파라미터를 통해 BBQ와 그 밖의 양자화 옵션을 구성할 수 있습니다. semantic text 필드에서 bbq_hnsw, int8_hnsw 및 기타 양자화 전략을 사용하는 예시는 index_options로 벡터 스토리지 최적화하기를 참조하세요.