
벡터 임베딩이란 무엇인가요?
벡터 임베딩은 유사한 데이터 포인트는 더 가깝게, 그렇지 않은 포인트는 더 멀리 떨어진 고차원 공간에서 데이터 포인트를 수치로 표현한 것입니다. 이 과정을 통해 관련 데이터를 보다 효과적으로 처리하고 식별할 수 있습니다. 예를 들어, 단어 사이의 거리는 벡터 공간에서 의미적 유사성을 나타낼 수 있습니다. 파리와 도쿄는 서로 가깝지만 Apple과는 멀리 떨어져 있습니다.
벡터 임베딩은 일반적으로 머신러닝과 인공지능에서 텍스트, 동영상, 이미지, 오디오 등 비정형 데이터의 시맨틱 의미를 파악하여 보다 효율적이고 정확한 분석, 검색, 검색을 가능하게 하는 데 사용됩니다. 벡터 임베딩은 일반적으로 신경망 모델(또는 최신 트랜스포머 아키텍처) 모델에 의해 생성됩니다.
데이터 객체의 임베딩 벡터 표현은 숫자만 포함하기 때문에 벡터 유사도 검색을 "밀도 벡터 검색" 또는 "임베딩 벡터 검색"이라고도 하며, 이는 검색 단어와 반환되는 데이터 간에 정확히 일치해야 하는 기존 키워드 검색과는 다릅니다. "어휘 검색"과 "희소 벡터 검색"은 일반적으로 기존 키워드 검색을 지칭하는 용어입니다.
벡터 임베딩은 일반적으로 인덱싱과 효율적인 유사도 검색을 위해 최신 벡터 데이터베이스에 저장됩니다.
벡터 임베딩은 어떻게 생성되나요?
벡터 임베딩은 원시 데이터를 벡터 공간에 매핑하는 방법을 학습하는 머신 러닝 모델(임베딩 모델이라고도 함)을 사용하여 생성되는 경우가 많습니다. 임베딩 모델은 각 정보 단위를 숫자 벡터로 변환하며, 두 벡터 사이의 거리는 두 벡터가 의미적으로 얼마나 유사한지를 나타냅니다.
**벡터 임베딩을 생성하는 주요 단계는 다음과 같습니다.
- 첫 번째 단계는 데이터를 선택하고 어떤 변수가 벡터를 형성할지 결정하는 것입니다. 여기에는 텍스트 말뭉치의 단어, 시각적 이미지, 사용자 선호도 등이 포함될 수 있습니다.
다음으로 토큰화 및 형태소 분석을 통해 데이터의 관련 특징을 추출하고 텍스트 데이터의 단어 제거를 중지합니다. 이미지 데이터의 이미지 특징을 인식하고 추출하려면 컨볼루션 신경망(CNN)을 사용하는 것을 고려해 보세요.
데이터를 전처리한 후 Word2Vec, GloVe, OpenAI 또는 다른 심층 신경망 모델과 같은 머신 러닝 모델에 입력합니다. 학습 과정에서 모델은 데이터 세트의 모든 항목에 대해 벡터 표현을 생성하는 방법을 학습합니다. 모델은 이러한 벡터의 크기를 재조정하여 유사한 항목 간의 차이는 최소화하고 다른 항목 간의 차이는 확대합니다.
그 결과 특정 벡터가 데이터 세트의 각 항목을 나타내는 다차원 벡터 공간이 생성됩니다. 이 공간에서 유사한 항목은 서로 가깝게, 서로 다른 항목은 서로 멀리 떨어져 있습니다.
스파스, 밀도, 이진 벡터 임베딩 ## 스파스, 밀도, 이진 벡터 임베딩
벡터 임베딩은 표현 방식과 속성에 따라 크게 세 가지 유형으로 분류할 수 있습니다: 고밀도 임베딩, 스파스 임베딩, 이진 임베딩 각 유형마다 고유한 장점과 사용 사례가 있습니다.
고밀도 임베딩(고밀도 벡터)
고밀도 임베딩 또는 고밀도 벡터는 대부분의 요소가 0이 아닌 벡터로, 간결한 수치 표현을 제공하여 풍부하고 연속적인 데이터 특징을 포착합니다. 일반적으로 저차원의 고밀도 임베딩은 정보를 더 작은 공간에 효율적으로 압축할 수 있어 저장 및 계산에 유용합니다. 고밀도 임베딩은 단어 임베딩(예: Word2Vec, GloVe, FastText), 문장 임베딩(예: 범용 문장 인코더, InferSent, Sentence-BERT), 컨볼루션 신경망에서 파생된 이미지 임베딩(예: ResNet, VGG) 같은 애플리케이션에서 흔히 볼 수 있습니다. 고밀도 임베딩은 의미론적 정보를 캡처하는 데 매우 유리합니다. 특히 분류, 클러스터링, 유사도 검색 작업을 위해 이러한 상세한 표현에 의존하는 신경망 기반 모델과 딥 러닝에 적합합니다.
스파스 임베딩(스파스 벡터)
스파스 임베딩 또는 스파스 벡터는 대부분의 요소가 0인 벡터로, 특정 특징의 존재 유무를 강조하는 고차원 표현을 생성하는 경우가 많습니다. 이러한 임베딩은 텍스트 마이닝 및 정보 검색에서 TF-IDF(용어 빈도 역 문서 빈도) 및 단어 가방과 같은 방법을 통해 사용됩니다. 스파스 임베딩은 이해와 구현이 간단하기 때문에 기존의 머신 러닝 알고리즘과 선형 모델에 효과적입니다.
이진 임베딩(이진 벡터)
이진 임베딩 또는 이진 벡터는 각 요소가 0 또는 1인 벡터로, 저장과 검색에 매우 효율적인 간결한 표현을 만들어냅니다. 이러한 임베딩은 고차원 공간에서 근사 최인접 이웃 검색을 위한 지역성 민감 해싱(LSH), 가중치와 활성화가 이진인 이진 신경망, 큰 범주형 특징을 고정 크기의 이진 벡터로 변환하는 특징 해싱(해싱 트릭) 등 높은 효율성이 요구되는 애플리케이션에서 자주 사용됩니다. 이진 벡터 임베딩은 저장 및 계산과 관련된 효율성을 높여 대규모 데이터 처리 및 실시간 애플리케이션에 이상적입니다. 특히 크기가 작기 때문에 유사도 검색 및 검색 작업에 유용합니다.
벡터 임베딩을 만드는 간단한 가이드
다음은 사전 학습된 임베딩 모델을 사용하여 자체 단어에 대한 임베딩을 생성하는 예제입니다. 따라 하려면 파이썬을 설치하고 벡터 저장 및 검색을 위해 Milvus 벡터 데이터베이스를 설정해야 합니다.
먼저, 종속 요소인 [milvus], pymilvus, gensim을 설치합니다. Pymilvus는 Milvus용 Python SDK이고, gensim은 자연어 처리(NLP)를 위한 Python 라이브러리입니다.
Gensim은 다양한 비지도 알고리즘을 이용한 토픽 모델링 및 문서 유사도 분석을 위한 오픈소스 Python 라이브러리입니다. 대규모 텍스트 코퍼스를 처리하는 데 특화되어 있으며 자연어 처리(NLP) 작업에 널리 사용됩니다. Gensim은 Word2Vec, FastText, Doc2Vec과 같은 머신 러닝 모델을 통해 단어 임베딩을 학습하고 사용할 수 있도록 지원합니다. 이러한 임베딩은 단어 간의 의미 관계를 포착하여 다양한 NLP 작업에 사용할 수 있습니다.
pip 설치 밀버스, 파이밀버스, 젠심
라이브러리를 가져옵니다.
gensim.downloader를 API로 가져옵니다.
에서 가져 오기 (
연결
FieldSchema,
CollectionSchema,
DataType,
Collection)
Milvus 서버에 대한 연결을 생성합니다.
connect(
alias="default",
사용자='사용자명',
password='password',
host='localhost',
port='19530'
)
컬렉션을 만듭니다.
#컬렉션을 생성합니다:
fields = [
FieldSchema(name="pk", dtype=DataType.INT64, is_primary=True, auto_id=False),
FieldSchema(name="words", dtype=DataType.VARCHAR, max_length=50),
FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=50)
]
schema = CollectionSchema(fields, "임베딩을 저장하고 검색하는 데모")
demo_milvus = Collection("milvus_demo", schema)
gensim에서 사전 학습된 모델을 로드합니다.
model = api.load("glove-wiki-gigaword-50")
샘플 단어에 사용되는 텍스트 임베딩을 생성합니다.
ice = model['ice']
water = model['water']
cold = model['cold']
tree = model['tree']
man = model['man']
woman = model['woman']
child = model['child']
female = model['female']
다음은 "female"이라는 단어에 대한 벡터 임베딩의 예시입니다.
array([-0.31575 , 0.74461 , -0.11566 , -0.30607 , 1.524 , 1.9137 ,
-0.392 , -0.67556 , -0.1051 , -0.17457 , 1.0692 , -0.68617 ,
1.2178 , 1.0286 , 0.35633 , -0.40842 , -0.34413 , 0.67533 ,
-0.5443 , -0.21132 , -0.61226 , 0.95619 , 0.43981 , 0.59639 ,
0.02958 , -1.1064 , -0.48996 , -0.82416 , -0.97248 , -0.059594,
2.396 , 0.74269 , -0.16044 , -0.69316 , 0.55892 , 0.22892 ,
0.013605, -0.44858 , -0.52965 , -0.96282 , -0.54444 , 0.18284 ,
0.16551 , 0.33446 , 0.53432 , -1.4824 , -0.34574 , -0.82834 ,
0.10107 , 0.024414], dtype=float32)
생성된 벡터 임베딩을 컬렉션에 삽입합니다.
#컬렉션에 데이터 삽입
data = [
[1,2,3,4,5,6,7,8], # 필드 pk
['얼음','물','추위','나무','남자','여자','아이','여자'], # 필드 단어
[얼음, 물, 추위, 나무, 남자, 여자, 아이, 여자], # 필드 임베딩
]
insert_result = demo_milvus.insert(data)
# 최종 엔티티가 삽입된 후, 메모리에 증가하는 세그먼트가 남지 않도록 flush를 호출하는 것이 가장 좋습니다.
demo_milvus.flush()
엔티티에 인덱스를 생성합니다.
index = {
"index_type": "IVF_FLAT",
"metric_type": "L2",
"params": {"nlist": 128},
}
demo_milvus.create_index("embeddings", index)
컬렉션을 메모리에 로드하여 업로드가 성공했는지 확인하고 벡터 유사성 검색을 수행합니다.
demo_milvus.load()
# 는 벡터 유사도 검색을 수행합니다:
data = [cold]
search_params = {
"metric_type": "L2",
"params": {"nprobe": 10},
}
result = demo_milvus.search(data, "embeddings", search_params, limit=4, output_fields=["words"])
결과를 반복하여 단어를 인쇄합니다.
범위(0,4)의 i에 대해:
hit = result[0][i]
print(hit.entity.get('words'))
예상 출력은 다음과 같습니다.
cold
얼음
물
남자
임베딩은 어떻게 작동하나요?
임베딩은 이미지, 텍스트, 오디오 등의 데이터를 숫자 표현으로 변환함으로써 기계가 원시 데이터 내의 기본적인 의미론적 의미와 관계를 이해할 수 있게 해줍니다. 이를 통해 다양한 영역에 걸쳐 혁신적인 애플리케이션의 문을 열 수 있습니다.
유사한 이미지, 동영상 또는 오디오 파일 찾기
키워드가 아닌 콘텐츠를 기반으로 유사한 사진이나 동영상을 검색한다고 상상해 보세요. 예를 들어, 소리로 이미지를 검색하거나(새는 보기보다 듣기가 더 쉽습니다), 이미지로 동영상을 검색할 수 있습니다. 벡터 임베딩은 이러한 유형의 검색을 가능하게 합니다. 컨볼루션 신경망(CNN)](https://zilliz.com/glossary/convolutional-neural-network)과 같은 기술을 통해 이미지, 비디오 프레임 또는 오디오 세그먼트에서 임베딩을 추출하면 이러한 임베딩을 Milvus 또는 Zilliz Cloud와 같은 벡터 데이터베이스에 저장할 수 있습니다. 사용자가 쿼리 이미지, 동영상 또는 오디오 클립으로 검색하면 시스템은 순차적인 데이터와 임베딩된 벡터 표현을 비교하여 유사한 항목을 검색합니다.
신약 개발 가속화
신약 개발은 복잡하고 오랜 시간이 걸리는 과정입니다. 벡터 임베딩은 과학자들이 유망한 약물 후보를 식별하는 데 도움을 주어 이 과정을 가속화할 수 있습니다. 약물 화합물의 화학 구조를 위에서 생성된 벡터 임베딩에 인코딩함으로써 표적 단백질과의 유사성을 측정할 수 있습니다. 이를 통해 연구자들은 가장 유망한 후보에 집중할 수 있어 신약 발견 및 개발 속도를 높일 수 있습니다.
시맨틱 검색으로 검색 관련성 높이기
기존 검색 엔진은 사용자 쿼리의 진정한 의도를 파악하는 데 어려움을 겪어 관련 없는 결과를 제공하는 경우가 많습니다. 한 회사에서 내부 문서를 벡터로 임베드하여 벡터 데이터베이스에 저장한다고 가정해 보겠습니다. 이제 직원들은 일반 사람과의 채팅을 통해 해당 문서를 검색할 수 있습니다. 직원의 채팅 질문 임베딩과 가장 가까운 데이터 임베딩이 벡터 데이터베이스에서 검색되어 직원의 질문에 대한 인간과 유사한 텍스트 답변을 생성하는 프롬프트의 일부로 ChatGPT로 전송될 수 있습니다. 답변은 회사의 데이터를 기반으로 가장 가까운 답변이 될 것입니다. 이 전체 프로세스를 RAG(검색 증강 생성)라고 합니다. 회사 문서에 대한 의미론적 이해를 추가하면 해당 회사의 내부 검색 관련성을 크게 향상시키고 AI 환각을 피할 수 있습니다.
추천 시스템
추천 시스템은 온라인 플랫폼에서 매우 중요하지만, 일반적인 추천 시스템은 실망스러울 수 있습니다. 벡터 임베딩은 사용자와 아이템을 모두 임베딩으로 표현할 수 있는 솔루션을 제공합니다. 사용자와 아이템 간의 유사성을 측정하여 벡터 임베딩을 생성함으로써 각 사용자의 고유한 선호도에 맞춘 개인화된 추천을 제공할 수 있습니다. 이를 통해 보다 효과적인 추천 시스템을 구축하고 사용자 참여도를 높일 수 있습니다.
이상 징후 감지
데이터에서 비정상적인 패턴을 식별하는 것은 사기 탐지, 네트워크 보안, 산업 장비 모니터링과 같은 다양한 애플리케이션에서 매우 중요합니다. 벡터 임베딩은 이상 징후 탐지를 위한 강력한 도구를 제공합니다. 데이터 포인트를 임베딩으로 표현함으로써 데이터 포인트 간의 거리 또는 유사성을 계산할 수 있습니다. 상당한 거리는 조사해야 할 잠재적 이상 징후를 나타낼 수 있습니다. 이를 통해 문제를 사전에 파악하여 이상 징후를 조기에 식별하고 예방할 수 있습니다.
표현되는 데이터의 특성에 따른 다양한 벡터 임베딩 유형
벡터 임베딩은 애플리케이션과 표현되는 데이터의 특성에 따라 단어 임베딩, 이미지 임베딩, 그래프 임베딩, 멀티모달 임베딩 등으로 나눌 수 있습니다. 다음은 가장 일반적인 벡터 임베딩의 몇 가지 유형입니다.
- 단어 임베딩:** 단어 임베딩은 단어를 연속 벡터 공간에서 숫자 벡터로 표현합니다. 단어 임베딩은 Wikipedia와 같은 대규모 텍스트 말뭉치에 대해 Word2Vec, GloVe 또는 fastText와 같은 다양한 모델을 사용해 학습됩니다. 이러한 모델은 각 단어를 숫자 벡터로 표현하기 위해 다양한 메커니즘을 사용합니다. Word2Vec은 방대한 텍스트 코퍼스에서 단어를 예측하여 단어 임베딩을 생성합니다. 단어 간의 언어적 관계를 정의합니다. 예를 들어, '왕'과 '여왕'을 공간에서 서로 가까운 벡터로 표현하여 [의미적 유사성]을 보여줄 수 있습니다(https://zilliz.com/glossary/semantic-similarity). 반면, GloVe는 단어의 동시 발생 데이터에 의존하여 벡터를 구성합니다. 글로브는 "얼음"과 "물"이라는 단어가 텍스트에서 자주 함께 나타나고 의미 관계를 공유하기 때문에 서로 가까운 벡터로 나타낼 수 있습니다. 패스트 텍스트는 단어 임베딩을 하위 단어 수준으로 가져와 어휘 외(OOV) 단어나 변형을 처리할 수 있습니다.
- 문장 및 문서 임베딩: 문장 및 문서 임베딩은 Doc2Vec 및 BERT와 같은 모델을 사용해 전체 문장이나 문서를 숫자 벡터로 표현합니다. Doc2Vec은 Word2Vec 패러다임을 기반으로 문서 수준의 임베딩을 생성하여 전체 문서 또는 구절의 인코딩을 가능하게 합니다. BERT(양방향 인코더 표현)는 문장에 포함된 각 용어의 문맥을 고려하여 고도로 문맥을 인식하는 임베딩 벡터를 생성합니다.
- 이미지 임베딩: CNN은 다양한 네트워크 계층에서 특징 추출을 통해 이미지 임베딩을 생성할 수 있습니다. 이는 이미지 분류 및 검색에 유용한 접근 방식을 제공합니다. 예를 들어, 고양이 사진에는 귀, 털, 꼬리를 나타내는 특징이 포함된 이미지 임베딩 벡터가 있을 수 있습니다. Inception 및 ResNet과 같은 다른 모델에도 이미지에서 특징을 추출할 수 있는 레이어가 있습니다. Inception 모델은 물체나 패턴과 같은 이미지의 시각적 속성을 나타내는 임베딩을 생성할 수 있습니다.
- 시계열 임베딩: 시간적 종속성을 포착할 수 있는 장기 단기기억(LSTM) 및 게이트 순환 유닛(GRU) 신경망을 사용해 시계열 데이터를 임베드할 수 있습니다. LSTM 또는 GRU 기반 임베딩은 주가와 같은 시계열 데이터의 시간적 종속성을 포착할 수 있습니다. 예를 들어, 이러한 벡터 임베딩은 주가 움직임의 패턴을 나타낼 수 있습니다.
- 오디오 임베딩: 오디오 처리에서 멜 주파수 세분화 계수(MFCC) 임베딩은 오디오 분류 작업을 위한 오디오 데이터를 나타냅니다. 음성 인식에서 MFCC 임베딩은 오디오 신호의 음향 특성을 포착합니다. 예를 들어, 음성 단어의 스펙트럼 내용을 나타낼 수 있습니다.
- 그래프 임베딩: 소셜 네트워크 그래프를 생각해 봅시다. Node2Vec은 유사한 사용자(노드)가 더 가까운 벡터를 갖는 노드 임베딩을 생성할 수 있습니다. 예를 들어, 비슷한 관심사를 가진 사용자들은 비슷한 벡터 임베딩을 가질 수 있습니다. 또한 그래프 신경망(GNN)을 사용해 노드에 대한 임베딩을 생성하고 그래프에서 복잡한 관계를 포착할 수 있습니다. GNN은 추천 시스템에서 사용자와 항목을 표현하고 사용자와 항목의 상호작용을 예측할 수 있습니다.
벡터 임베딩의 활용 분야
다양한 도메인에서 벡터 임베딩을 적용하는 방법은 다음과 같습니다.
- 이미지, 동영상, 오디오 벡터 유사도 검색**: 이미지 또는 특징 추출을 위한 CNN과 같은 기술을 사용하여 이미지, 비디오 프레임 또는 오디오 세그먼트에서 임베딩을 추출할 수 있습니다. 이러한 임베딩을 벡터 데이터베이스에 저장합니다. 사용자가 이미지, 비디오 프레임 또는 오디오 클립으로 쿼리할 때 임베딩 간의 유사도를 측정하여 유사한 항목을 검색합니다.
- AI 신약 개발: 화합물의 화학 구조를 임베딩으로 인코딩하여 이러한 임베딩을 사용해 약물 화합물 간의 유사성을 측정하고 약물 화합물에 대한 잠재적인 표적 단백질을 예측할 수 있습니다.
- 시맨틱 검색 엔진: 벡터 임베딩은 쿼리의 의미를 관련 문서와 일치시켜 검색 관련성을 향상시킴으로써 검색 엔진의 기능을 향상시킵니다.
추천 시스템: 사용자와 항목을 임베딩으로 표현할 수 있습니다. 사용자와 항목의 유사성을 측정하여 개인화된 추천을 제공합니다. 맞춤형 추천은 사용자 경험을 향상시킵니다.
- 이상 감지: 데이터 포인트를 임베딩으로 표현하여 데이터의 비정상적인 패턴을 식별할 수 있습니다. 데이터 포인트 간의 거리 또는 유사성을 계산하여 이를 달성할 수 있습니다. 거리가 큰 데이터 포인트는 잠재적인 이상 징후입니다. 이는 사기 탐지, 네트워크 보안, 산업 장비 또는 프로세스 모니터링에 유용할 수 있습니다.
벡터 임베딩과 벡터 데이터베이스 사용 사례를 자세히 알아보세요.
벡터 임베딩을 사용하는 이유
- 패턴 인식: 벡터 임베딩은 데이터의 패턴, 유사성, 차이점을 포착합니다. 머신 러닝 모델은 의미 있는 패턴을 나타내는 임베딩을 통해 분류 및 클러스터링과 같은 작업에서 성능을 향상시킬 수 있습니다.
차원 감소: 임베딩은 데이터의 차원을 줄여줍니다. 임베딩은 고차원 데이터를 저차원 벡터로 변환하여 계산 작업을 간소화하고 종종 효율성을 향상시킵니다.
- 의미론적 이해: 벡터 임베딩은 데이터 포인트 간의 의미적 관계를 인코딩하여 기계가 복잡한 정보를 더 쉽게 이해하고 해석할 수 있도록 합니다.
- 효율적인 처리: 숫자 벡터는 계산 효율이 높습니다. 머신 러닝 알고리즘은 더 적은 계산 비용으로 더 빠르게 수치 데이터를 처리할 수 있습니다.
- 전사 학습: NLP](https://zilliz.com/learn/A-Beginner-Guide-to-Natural-Language-Processing)의 단어 임베딩이나 컴퓨터 비전의 이미지 임베딩과 같이 사전 학습된 임베딩을 특정 작업에 맞게 미세 조정할 수 있습니다. 이를 통해 방대한 양의 라벨링된 데이터의 필요성을 줄이고, 모델 융합을 가속화하며, 모델 성능을 향상시킬 수 있습니다.
벡터 임베딩 FAQ
벡터 임베딩은 어디에 저장하나요?
벡터 임베딩은 Milvus와 같은 벡터 데이터베이스, Redis와 같은 인메모리 데이터베이스, PostgreSQL과 같은 데이터베이스 또는 파일 시스템에 저장할 수 있습니다. 벡터 임베딩을 저장할 위치는 데이터 볼륨, 액세스 패턴, 애플리케이션의 특정 요구 사항 등의 요인에 따라 달라집니다.
벡터 데이터베이스와 벡터 임베딩의 차이점은 무엇인가요?
벡터 데이터베이스는 벡터 데이터를 색인, 저장 및 검색하는 특수 데이터베이스입니다. 반면에 벡터 임베딩은 연속 벡터 공간에서 데이터 포인트(예: 문장, 이미지 또는 기타 개체)를 숫자로 표현한 것입니다. 임베딩은 데이터 내에서 의미 있는 관계와 패턴을 포착하는 반면, 데이터베이스는 벡터를 저장하고 벡터 [유사성 메트릭]을 기반으로 유사성 검색을 최적화합니다(https://docs.zilliz.com/docs/search-metrics-explained).
벡터란 무엇인가요?
벡터는 다차원 숫자 배열을 사용해 비정형 데이터를 나타냅니다. 예를 들어 오디오 벡터, 이미지 벡터, 동영상 또는 텍스트 등이 있습니다. 벡터는 벡터 검색과 같은 작업을 가능하게 합니다. KNN](https://zilliz.com/blog/k-nearest-neighbor-algorithm-for-machine-learning), ANNS, HNSW 같은 검색 알고리즘은 벡터 간의 거리를 빠르게 계산할 수 있도록 데이터를 구성합니다. 벡터 사이의 거리에 따라 유사성이 결정되며, 가장 가까운 벡터가 검색에 반환됩니다. 이는 클러스터링, 이상 징후 감지, 역방향 이미지 검색, 채팅 질문에 대한 답변 또는 추천에 유용합니다. 효율적인 벡터 검색을 위한 데이터 구조를 만드는 것을 벡터 인덱스 생성이라고 합니다.
임베딩은 벡터와 어떻게 다른가요?
임베딩과 벡터: 기술적으로 벡터는 숫자의 다차원 배열로 표현되는 기본적인 수학적 객체이지만, 임베딩은 데이터 포인트 간의 의미 관계를 포착하는 수학적 연산을 사용해 비정형 데이터를 벡터 표현으로 변환하는 기술입니다. 그러나 대부분의 경우, 특히 머신 러닝의 맥락에서는 '벡터'와 '임베딩'을 같은 의미로 사용할 수 있습니다.
벡터 인덱스란 무엇인가요?
벡터 인덱스](https://zilliz.com/learn/choosing-right-vector-index-for-your-project)는 벡터 데이터베이스 인덱스 또는 유사성 인덱스라고도 하며, 유사성 메트릭을 기반으로 벡터 데이터의 검색을 구성하고 최적화하기 위해 벡터 데이터베이스에서 사용되는 데이터 구조입니다. 인덱스의 예로는 CPU 기반 ANN 검색의 경우 FLAT, IVF_FLAT, IVF_PQ, IVF_SQ8, HNSW 및 SCANN이 있으며, GPU 기반 ANN 검색의 경우 GPU_IVF_FLAT 및 GPU_IVF_PQ가 있습니다.
사전 학습된 임베딩과 맞춤형 임베딩의 차이점은 무엇인가요?
사전 학습된 임베딩은 체크포인트라고 하는 사전 학습된 딥 러닝 모델에서 비롯됩니다. 이러한 체크포인트는 일반적으로 공개 데이터로 학습된 오픈 소스 트랜스포머 모델입니다. 사용자 지정 임베딩은 도메인별 맞춤형 학습 데이터로 학습된 자체 딥러닝 모델에서도 제공됩니다.
질리즈 벡터 데이터베이스는 벡터 임베딩을 생성하나요?
예. 질리즈 클라우드는 밀버스의 완전 관리형 벡터 데이터베이스 서비스로, 수십억 개의 벡터 임베딩을 생성, 저장, 검색할 수 있습니다.
질리즈 클라우드는 강력한 파이프라인 기능을 통해 비정형 데이터를 검색 가능한 고품질 벡터 임베딩으로 변환할 수 있습니다. 이 기능은 벡터 생성, 검색, 삭제 등 개발자의 벡터화 워크플로우를 간소화하여 신속하고 효율적인 작업을 지원합니다. 또한 애플리케이션 구축을 위해 임베딩 모델과 같은 추가 기술 스택을 도입할 필요가 없어 개발자와 비즈니스의 유지 관리 비용을 최소화합니다.
벡터 임베딩을 위한 최고의 벡터 데이터베이스 ####
보편적인 "최고의" 벡터 데이터베이스는 없으며, 필요에 따라 선택이 달라집니다. 따라서 벡터 데이터베이스의 확장성, 기능, 성능, 특정 사용 사례와의 호환성을 평가하는 것이 중요합니다.
최신 벡터 임베딩 데이터베이스는 벡터를 효율적으로 검색하고, 메타데이터를 사용해 필터링하며, 시맨틱 검색과 키워드 검색을 모두 수행할 수 있어야 합니다. 또한 엔터프라이즈급 워크로드를 처리할 수 있도록 확장 가능하고 구성 가능하며 성능이 뛰어나야 합니다.
평가에 도움이 되는 잘 알려진 오픈 소스 벤치마킹 도구 중 하나는 ANN-Benchmark입니다. ANN-Benchmark를 사용하면 미리 계산된 여러 데이터 세트를 기반으로 다양한 알고리즘의 초당 리콜/쿼리 테스트 결과를 그래프로 표시할 수 있습니다. 이 그래프는 X축의 리콜률과 Y축의 QPS를 비교하여 다양한 수준의 검색 정확도에서 각 알고리즘의 성능을 보여줍니다.
벤치마킹 도구를 사용하는 것 외에도 주요 오픈 소스 벡터 데이터베이스의 비교 차트 및 완전 관리형 벡터 데이터베이스 서비스에서 아키텍처, 확장성, 성능, 사용 사례, 비용 및 기능 세트에 대해 참조할 수 있습니다.