no image
[Elasticsearch] Elasticsearch / Kibana 로컬 설치(Windows 용)
1. Elasticsearch 설치(8.17.4)1) 아래의 링크로 접속해 최신 Elasticsearch 설치 파일을 다운로드.https://www.elastic.co/kr/downloads/elasticsearch Download ElasticsearchDownload Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic....www.elastic.co  Windows 선택 후 다운로드  2) 적절한 경로에 압축 풀기 3) 배치 파일 실행 액세스 허용 클릭 4) Elasticsearch 설치 확인cmd 창 중간 쯤에 패스워..
2025.03.26
no image
[Elasticsearch] 무료 평가 체험판 시작하기
https://www.elastic.co/kr/elasticsearch Elasticsearch: 공식 분산형 검색 및 분석 엔진 | ElasticElasticsearch는 속도, 수평적 확장성, 신뢰성 및 용이한 관리를 위해 설계된 앞서가는 분산형 RESTful 오픈 소스 검색 및 분석 엔진입니다. 무료로 시작하세요....www.elastic.co Elasticsearch 사이트 접속 후 을 클릭합니다. Sign up 진행 여러 스텝을 통해 개인 정보들과 선호도를 기입하면 아래와 같이 환경 구성이 진행됩니다. 환경 구성이 끝나면 아래와 같은 화면이 나타납니다.
2025.03.26
[Elasticsearch] 쿼리 시 유사성 측정 방법(코사인 유사성, 점 곱 유사성, 유클리드 거리)
벡터 데이터베이스는 벡터 임베딩 간의 유사도를 측정해 유사한 데이터를 검색해주는 데 최적화된 데이터베이스입니다.그렇다면, 유사도는 어떻게 측정할 수 있을까요? 유사성 측정 방법벡터 데이터베이스는 쿼리를 수신하면 인덱싱된 벡터를 쿼리 벡터(벡터 임베딩된 쿼리)와 비교하여 가장 가까운 벡터를 검색합니다.최근접 항목을 설정하기 위해 벡터 데이터베이스는 유사성 측정이라는 수학적 방법을 사용합니다.다음과 같이 다양한 유형의 유사성 측정이 존재합니다.코사인 유사성(Cosine similarity)-1 ~ 1 범위의 유사성을 설정합니다.벡터 공간에서 두 벡터 사이의 각도의 코사인을 측정하여정반대(-1로 표시)직교(0으로 표시)동일한(1로 표시)벡터를 결정합니다. 점 곱(Dot product) 유사성 측정어떻게 보면 ..
2025.03.25
no image
[Elasticsearch] 벡터 데이터베이스 : Vector Search (인덱싱 / 쿼리)
아래는 Elasticsearch의 벡터 데이터베이스 파이프라인입니다. 왼쪽이 인덱싱(색인)에 대한 내용이고, 오른쪽이 쿼리에 대한 내용입니다.벡터 데이터베이스는 알고리즘을 사용하여 벡터 임베딩을 인덱싱(색인)하고 쿼리하는 방식으로 작동합니다. 인덱싱 (Indexing) 벡터 간 유사도를 빠르게 계산하고 검색 속도를 높이기 위해 데이터 구조를 미리 구성하는 과정입니다.(RDBMS에서 일반적으로 쓰였던 인덱싱과는 다른 개념입니다)  쉽게 말해, "유사한 벡터끼리 모아주는 과정이다"로 이해하면 될 것 같습니다.   왜 인덱싱이 필요할까?벡터 검색의 목적은 "이 벡터와 가장 비슷한 벡터들을 빨리 찾아줘!" 입니다.그런데 벡터가 수백만 개 있고, 고차원인 전체 벡터를 하나하나 비교하면 시간 복잡도가 너무 커져서 ..
2025.03.25
[Elasticsearch] 벡터 임베딩(=임베딩)이란?
벡터 임베딩(=임베딩)벡터 임베딩은 두 가지 의미가 혼용되어 사용되는 것 같습니다. 1) 단어와 문장 및 기타 데이터를 의미와 관계를 포착하는 숫자(벡터)로 변환하는 방법2) 주제, 단어, 이미지 또는 기타 데이터를 숫자로 표현한 것 즉, 벡터 임베딩은 비정형 데이터를 벡터로 변환하는 방법을 의미하기도 하고변환된 결과물인 벡터를 지칭하기도 하는 것 같습니다. 또한 벡터 임베딩을 줄여서 그냥 "임베딩"이라고 말하기도 합니다. 벡터 임베딩은 대규모 언어 모델 및 기타 AI 모델에 의해 생성됩니다.
2025.03.25
[Elasticsearch] 벡터 데이터베이스(Vector Database)
Elastic Search는 벡터 데이터베이스를 기반으로 한 "벡터 검색 엔진"입니다.📌  벡터 데이터베이스(Vector Database)벡터 형태(고차원 숫자 배열)로 저장된 데이터를 빠르게 검색하고 유사도를 비교하는 데이터베이스 특히 자연어 처리(NLP), 이미지 검색, 추천 시스템 등에서 유사한 데이터를 찾는 데 최적화.( "유사한 데이터를 검색하고 분석하는 데 특화된 데이터베이스") 1. 벡터 데이터베이스가 필요한 이유기존 RDBMS (관계형 데이터베이스)의 한계텍스트 검색, 이미지 검색, 추천 시스템에서는 벡터 연산이 중요하지만, 기존 RDBMS(Oracle, MySQL 등)는 벡터 연산에 최적화되어 있지 않음.예를 들어, "강아지 사진과 비슷한 이미지 검색" 을 하려면 단순한 SQL 쿼리로는..
2025.03.25
[Elasticsearch] Hybrid Search
📌 Hybrid Search 전통적인 키워드 검색(Keyword Search) + 벡터 검색(Vector Search, 임베딩 검색)을 결합하여더 정확한 검색 결과를 제공하는 방식. 문서의 단순 키워드 매칭뿐만 아니라 의미적 유사성까지 반영하여 검색 정확도를 향상.1️⃣ Hybrid Search가 필요한 이유전통적인 키워드 검색(TF-IDF, BM25) : 의미를 잘 이해하지 못함.예) "고양이 먹이"를 검색했을 때, "고양이 사료"도 원하는 검색 결과일 수 있지만, 단순 키워드 검색은 이를 인식하지 못함.벡터 검색(임베딩 검색) : 완벽하지 않음.예) 단순히 "의미적 유사성"만 고려하면 정확한 키워드 기반 결과를 놓칠 수도 있음.Hybrid Search는 키워드 검색과 벡터 검색의 장점을 결합하여, ..
2025.03.25
[AI] Zero-shot 학습(Zero-shot Learning, ZSL)
Zero-shot 학습(Zero-shot Learning, ZSL)이란?모델이 학습하지 않은(본 적 없는) 데이터에 대해서도 올바르게 예측하는 능력즉, 새로운 개념이나 클래스에 대한 데이터가 없어도 모델이 추론할 수 있는 능력1. Zero-shot 학습이 필요한 이유기존 머신러닝 모델은 훈련 데이터에 없는 개념을 학습할 수 없었음.하지만, 인간은 몇 가지 개념만 배워도 새로운 상황을 이해할 수 있음.사자가 뭐야? 🦁"고양이과 동물이고, 덩치가 크고, 갈기가 있어.""그럼, '백사자'는?"한 번도 본 적 없지만, "사자의 한 종류겠구나!" 라고 추론 가능.2. Zero-shot Learning의 핵심 원리Zero-shot Learning은 텍스트, 이미지, 코드 등 다양한 데이터를 활용하여 일반적인 개념..
2025.03.25
no image
[AI/AWS]비정형 데이터 수집/저장(S3, Glue)
개요AWS에서 Glue를 사용해 비정형 데이터(json)를 csv 파일로 변환시켜 저장하는 방법에 대해 알아보겠습니다.전체과정json 파일 parsingS3에 json 파일 업로드테이블 생성을 위한 크롤러 생성(json 파일용)테이블 생성(json)ETL Job 생성 후 CSV 파일로 변환테이블 생성을 위한 크롤러 생성(csv 파일용)테이블 생성(csv)1. json 파일 parsing{ "id": 1, "name": "Wireless Keyboard", "category": "Electronics", "price": 39.99, "stock": 120},{ "id": 2, "name": "Gaming Mouse", "category": "Electronics", "price": 29.9..
2025.02.04
728x90

1. Elasticsearch 설치(8.17.4)

1) 아래의 링크로 접속해 최신 Elasticsearch 설치 파일을 다운로드.

https://www.elastic.co/kr/downloads/elasticsearch

 

Download Elasticsearch

Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in minutes with Elastic....

www.elastic.co

 

 Windows 선택 후 다운로드

 

 

2) 적절한 경로에 압축 풀기

 

3) 배치 파일 실행

 

액세스 허용 클릭

 

4) Elasticsearch 설치 확인

cmd 창 중간 쯤에 패스워드 확인 후 따로 기록합니다.

 

인터넷 브라우저를 열고

localhost:9200 접속

  • 사용자 이름 : elastic
  • 비밀번호 : 위에서 조회한 패스워드

 아래와 같이 정보가 표시되었다면 정상적으로 설치된 것입니다.

 


2. Kibana 설치(8.17.4)

1) 아래 링크로 접속해 마찬가지로 Windows 용 설치 파일을 다운로드 받습니다.

https://www.elastic.co/kr/downloads/kibana

 

Download Kibana Free | Get Started Now

Download Kibana or the complete Elastic Stack (formerly ELK stack) for free and start visualizing, analyzing, and exploring your data with Elastic in minutes....

www.elastic.co

 

 

2) 적절한 경로에 압축 풀기

 

3) 배치 파일 실행

 

4) Kibana 설치 확인

elasticsearch 배치 파일을 실행한 cmd 창에서 비밀번호를 확인한 위치 밑에 토큰 값을 확인합니다.

 

인터넷 브라우저를 열고

localhost:5601 접속

 

 

 

아래와 같은 화면이 표시되었다면 정상 설치 완료.

 

 

728x90
728x90

https://www.elastic.co/kr/elasticsearch

 

Elasticsearch: 공식 분산형 검색 및 분석 엔진 | Elastic

Elasticsearch는 속도, 수평적 확장성, 신뢰성 및 용이한 관리를 위해 설계된 앞서가는 분산형 RESTful 오픈 소스 검색 및 분석 엔진입니다. 무료로 시작하세요....

www.elastic.co

 

Elasticsearch 사이트 접속 후 <무료 체험판 사용 시작>을 클릭합니다.

 

Sign up 진행

 

여러 스텝을 통해 개인 정보들과 선호도를 기입하면 아래와 같이 환경 구성이 진행됩니다.

 

환경 구성이 끝나면 아래와 같은 화면이 나타납니다.

 

728x90
728x90

벡터 데이터베이스는 벡터 임베딩 간의 유사도를 측정해 유사한 데이터를 검색해주는 데 최적화된 데이터베이스입니다.

그렇다면, 유사도는 어떻게 측정할 수 있을까요?

 

유사성 측정 방법

벡터 데이터베이스는 쿼리를 수신하면 인덱싱된 벡터를 쿼리 벡터(벡터 임베딩된 쿼리)와 비교하여 가장 가까운 벡터를 검색합니다.

최근접 항목을 설정하기 위해 벡터 데이터베이스는 유사성 측정이라는 수학적 방법을 사용합니다.

다음과 같이 다양한 유형의 유사성 측정이 존재합니다.

코사인 유사성(Cosine similarity)

-1 ~ 1 범위의 유사성을 설정합니다.

벡터 공간에서 두 벡터 사이의 각도의 코사인을 측정하여

  • 정반대(-1로 표시)
  • 직교(0으로 표시)
  • 동일한(1로 표시)

벡터를 결정합니다.

 

점 곱(Dot product) 유사성 측정

어떻게 보면 코사인 유사성과 흡사한데,

코사인 유사성은 -1 ~ 1 범위에서 벡터 유사성을 결정하는데 반해

점 곱 유사성 측정은 마이너스(-) 무한대 ~ 무한대 범위에서 벡터 유사성을 결정합니다.

점 곱은 두 벡터의 크기와 그 사이의 각도의 코사인의 곱을 측정하여 반대로 떨어진 벡터에는 음의 값을, 직교하는 벡터에 0을, 같은 방향을 가리키는 벡터에 양의 값을 할당합니다.

 

유클리드 거리(Euclidean distance)

벡터 사이의 직선 거리를 측정하여 0 ~ 무한대 범위에서 유사성을 결정합니다.

  • 동일한 벡터는 0으로 표시되고, 값이 클수록 벡터 간의 차이가 커집니다.
728x90
728x90

아래는 Elasticsearch의 벡터 데이터베이스 파이프라인입니다.

 

왼쪽이 인덱싱(색인)에 대한 내용이고, 오른쪽이 쿼리에 대한 내용입니다.

벡터 데이터베이스는 알고리즘을 사용하여 벡터 임베딩을 인덱싱(색인)하고 쿼리하는 방식으로 작동합니다.

 

인덱싱 (Indexing)

벡터 간 유사도를 빠르게 계산하고 검색 속도를 높이기 위해 데이터 구조를 미리 구성하는 과정입니다.

(RDBMS에서 일반적으로 쓰였던 인덱싱과는 다른 개념입니다)

 

쉽게 말해, "유사한 벡터끼리 모아주는 과정이다"로 이해하면 될 것 같습니다.

 

왜 인덱싱이 필요할까?

벡터 검색의 목적은 "이 벡터와 가장 비슷한 벡터들을 빨리 찾아줘!" 입니다.

그런데 벡터가 수백만 개 있고, 고차원인 전체 벡터를 하나하나 비교하면 시간 복잡도가 너무 커져서 엄청 느려지게 되겠죠.

 

그래서 유사한 벡터만 빠르게 골라서 검색할 수 있도록 인덱싱을 통해 미리 데이터를 구조화해 두는 겁니다.

나중에 모여 있는 벡터 사이에서 가까운 일부 벡터들만 비교하면 되니 훨씬 빨리 검색되겠죠.

 

인덱싱 알고리즘 종류

해싱: 

Locality-Sensitive Hashing(LSH)

  • 빠른 결과를 제공하고 대략적인 결과를 생성하므로 근사 최근접 유사 항목 검색에 가장 적합합니다.
  • LSH는 스도쿠 퍼즐과 같은 해시 테이블을 사용하여 최근접 유사 항목을 매핑합니다.
  • 쿼리는 테이블로 해시된 다음 동일한 테이블의 벡터 집합과 비교되어 유사성을 결정합니다.

양자화: 

Product Quantization(PQ)

  • 벡터를 여러 조각(서브벡터)으로 나누고 각 조각을 미리 정의된 코드북을 통해 압축된 코드로 저장한 다음 다시 합칩니다.
  • 쿼리가 수행되면 벡터 데이터베이스는 쿼리를 코드로 나눈 다음 코드북과 일치시켜 가장 유사한 코드를 찾아 결과를 생성합니다.

그래프 기반: 

Hierarchical Navigable Small World(HNSW) 알고리즘

  • 그래프 구조를 만들어 벡터 간 탐색 경로를 최적화
  • 벡터를 노드로 보고, 비슷한 벡터들끼리 연결하는 그래프를 생성
  • 쿼리가 수행되면 알고리즘은 그래프 계층 구조를 탐색하여 쿼리 벡터와 가장 유사한 벡터가 포함된 노드를 찾습니다.

인덱싱이 이루어지기까지

벡터 데이터베이스 파이프라인의 왼쪽 과정을 간략하게 설명하면 아래와 같습니다.

 

1️⃣ 비정형 데이터 수집

텍스트, 이미지, 오디오, 영상, 코드 등

 

2️⃣ 벡터 임베딩(Embedding)
AI 모델을 통해 의미 있는 고차원 벡터로 변환

 

텍스트: Sentence-BERT, GPT, FastText

이미지: CLIP, ResNet

오디오: wav2vec

멀티모달: OpenAI의 CLIP

 

3️⃣ 벡터 인덱싱(Indexing)

벡터를 빠르게 검색하기 위해 IVF, HNSW, PQ 등으로 인덱스 구성

 

인덱싱의 효과

  • 검색 속도 향상 : 전체 벡터를 비교하지 않고, 유사할 가능성이 높은 일부만 비교
  • 메모리 최적화 : 필요한 데이터만 빠르게 접근 가능
  • 근사 최근접 유사 항목(approximate nearest neighbor, ANN) 검색 지원 : 약간 부정확하더라도 훨씬 빠르게 유사 벡터를 찾음

 

 

 



 

728x90
728x90

벡터 임베딩(=임베딩)

벡터 임베딩은 두 가지 의미가 혼용되어 사용되는 것 같습니다.

 

1) 단어와 문장 및 기타 데이터를 의미와 관계를 포착하는 숫자(벡터)로 변환하는 방법

2) 주제, 단어, 이미지 또는 기타 데이터를 숫자로 표현한 것

 

즉, 벡터 임베딩은 비정형 데이터를 벡터로 변환하는 방법을 의미하기도 하고

변환된 결과물인 벡터를 지칭하기도 하는 것 같습니다.

 

또한 벡터 임베딩을 줄여서 그냥 "임베딩"이라고 말하기도 합니다.

 

벡터 임베딩은 대규모 언어 모델 및 기타 AI 모델에 의해 생성됩니다.

728x90
728x90
Elastic Search벡터 데이터베이스를 기반으로 한 "벡터 검색 엔진"입니다.

📌  벡터 데이터베이스(Vector Database)

벡터 형태(고차원 숫자 배열)로 저장된 데이터를 빠르게 검색하고 유사도를 비교하는 데이터베이스

 

특히 자연어 처리(NLP), 이미지 검색, 추천 시스템 등에서 유사한 데이터를 찾는 데 최적화.

( "유사한 데이터를 검색하고 분석하는 데 특화된 데이터베이스")

 

1. 벡터 데이터베이스가 필요한 이유

기존 RDBMS (관계형 데이터베이스)의 한계

  • 텍스트 검색, 이미지 검색, 추천 시스템에서는 벡터 연산이 중요하지만,
    기존 RDBMS(Oracle, MySQL 등)는 벡터 연산에 최적화되어 있지 않음.
  • 예를 들어, "강아지 사진과 비슷한 이미지 검색" 을 하려면 단순한 SQL 쿼리로는 불가능하고,
    고차원 벡터 간의 유사도를 계산해야 함.

2. 벡터 데이터베이스의 주요 용도

(1) 이미지 & 영상 검색 (Visual Search)

  • 사용자가 이미지를 업로드하면 비슷한 이미지를 빠르게 검색할 수 있음.
  • AI 모델(CNN, CLIP 등) 을 이용해 이미지를 벡터로 변환하고, 벡터 DB에서 유사도를 비교하여 검색.

💡 예제:

  • Google Lens → 사용자가 업로드한 사진과 비슷한 이미지를 검색.
  • Pinterest → 이미지 기반 추천 시스템
  • E-commerce(쇼핑몰) → 제품 사진을 업로드하면 비슷한 상품을 추천 (Amazon, 쿠팡 등)

(2) 자연어 검색 & 문서 검색 (Semantic Search)

  • 기존 키워드 검색(BM25, TF-IDF)은 단어 일치에 의존하지만,
    벡터 검색은 문장의 의미를 분석하여 유사한 문서를 검색할 수 있음.
  • NLP 모델(BERT, GPT 등)을 활용하여 문장 의미를 벡터로 변환한 후,
    벡터 DB에서 유사도를 계산하여 검색.

💡 예제:

  • Google 검색 & 네이버 검색 → 유사 의미 검색 지원
  • 기업 내부 문서 검색 → "프로젝트 A 관련 자료" 검색 시, 유사한 문서까지 검색 가능
  • 질문-답변 시스템(QnA) → 사용자의 질문과 가장 유사한 질문/답변을 검색

(3) 추천 시스템 (Recommendation System)

  • 사용자의 행동 데이터를 벡터로 변환하고, 유사한 사용자를 찾아 추천 시스템을 구축할 수 있음.
  • 콘텐츠(영화, 음악, 뉴스 등)의 벡터를 저장하고, 유사한 콘텐츠를 추천 가능.

💡 예제:

  • 넷플릭스 & 유튜브 추천 시스템 → 사용자의 시청 기록을 벡터로 변환하여 유사한 콘텐츠 추천
  • 스포티파이(Spotify) 음악 추천 → 사용자의 청취 패턴을 분석하여 유사한 곡 추천
  • 전자상거래(쿠팡, 아마존) → "이 제품을 본 고객이 함께 본 제품" 추천

(4) 보안 & 이상 탐지 (Security & Anomaly Detection)

  • 이상한 패턴을 감지하거나, 보안 침해 가능성을 예측하는 데 활용.
  • 사용자 행동 데이터를 벡터로 변환하고, 정상적인 행동과 유사도를 비교하여 이상 징후를 감지.

💡 예제:

  • 은행 & 금융권 이상 탐지 (Fraud Detection) → 신용카드 부정 사용 탐지
  • 네트워크 보안 (IDS, IPS) → 이상 트래픽 패턴 감지
  • 사용자 인증(생체 인증) → 지문, 얼굴 인식 데이터 비교

(5) 생성형 AI & 챗봇 (Generative AI & Chatbot)

  • GPT, LLaMA 같은 대형 언어 모델(LLM)을 사용할 때,
    벡터 DB를 활용하여 문맥(Context)을 저장하고 빠르게 검색할 수 있음.
  • "유사한 질문-답변 검색""문서 기반 질문-답변 시스템" 구축 가능.

💡 예제:

  • RAG(Retrieval-Augmented Generation) 시스템 → GPT 같은 AI 모델이 질문을 받았을 때, 벡터 DB에서 관련 정보를 검색하여 답변 생성
  • 기업용 AI 챗봇 → 고객 서비스 챗봇에서 "자주 묻는 질문(FAQ)"을 벡터 DB에 저장하고, 유사한 질문이 오면 자동 답변 제공
728x90

[Elasticsearch] Hybrid Search

이상한금요일
|2025. 3. 25. 13:13
728x90

 

📌 Hybrid Search 

전통적인 키워드 검색(Keyword Search) + 벡터 검색(Vector Search, 임베딩 검색)을 결합하여

더 정확한 검색 결과를 제공하는 방식.

 

문서의 단순 키워드 매칭뿐만 아니라 의미적 유사성까지 반영하여 검색 정확도를 향상.


1️⃣ Hybrid Search가 필요한 이유

전통적인 키워드 검색(TF-IDF, BM25) : 의미를 잘 이해하지 못함.

  • 예) "고양이 먹이"를 검색했을 때, "고양이 사료"도 원하는 검색 결과일 수 있지만, 단순 키워드 검색은 이를 인식하지 못함.

벡터 검색(임베딩 검색) : 완벽하지 않음.

  • 예) 단순히 "의미적 유사성"만 고려하면 정확한 키워드 기반 결과를 놓칠 수도 있음.

Hybrid Search는 키워드 검색과 벡터 검색의 장점을 결합하여, 더 정확하고 관련성 높은 검색 결과를 제공하는 기술.

2️⃣ Hybrid Search의 구성 요소

(1) 전통적인 키워드 검색 (Textual Search)

  • 대표적인 알고리즘: TF-IDF, BM25
  • 검색어(Query)와 문서 간의 정확한 키워드 일치를 기반으로 검색.
  • 예) "강아지 먹이"를 검색하면, "강아지 먹이"라는 단어가 포함된 문서가 검색됨.

(2) 벡터 검색 (Vector Search, 임베딩 검색)

  • 대표적인 알고리즘: Word2Vec, BERT, CLIP, Dense Vector Search
  • 단어를 벡터(숫자)로 변환하여 의미적 유사성을 기반으로 검색.
  • 예) "강아지 먹이"를 검색하면, "강아지 사료"라는 단어가 없어도 의미적으로 유사한 문서를 검색 가능.

3️⃣ Hybrid Search 동작 방식

Hybrid Search는 키워드 검색과 벡터 검색의 점수를 조합하여 Hybrid Score를 계산해 최종 검색 결과를 생성.

 

(1) Hybrid Score 계산 방법

Final Score = α × Lexical Score + (1−α) × Vector Score
  • Lexical Score (BM25 등) → 키워드 매칭 기반 점수
  • Vector Score (임베딩 검색) → 의미적 유사성 기반 점수
  • α (가중치 조절 파라미터) → 키워드 검색과 의미 검색의 비율 조정

(2) Hybrid Search의 실제 검색 과정

  1. 사용자가 검색어(Query) 를 입력하면, 이를 두 가지 방식으로 처리.
    • BM25 등의 키워드 검색 수행 → 문서의 키워드 일치 점수( Lexical Score ) 계산
    • 벡터 임베딩 검색 수행 → 의미적 유사성을 기반으로 점수( Vector Score ) 계산
  2. 각 검색 방식의 점수를 결합하여 최종 랭킹 결정
  3. 최종적으로 관련성 높은 문서 순서대로 정렬하여 반환

4️⃣ Hybrid Search의 활용 예시

분야 활용 사례
웹 검색 엔진 구글, 네이버, 빙(Bing) 등에서 더 정확한 검색 결과 제공
전자상거래 검색 (Amazon, 쿠팡 등) 제품 검색 시, 키워드 + 유사 제품 추천
문서 검색 (기업 내부 검색) 사내 문서 검색 시, 키워드 일치 + 관련 문서 추천
AI 챗봇 & 질의응답 시스템 질문을 입력하면 키워드 검색 + 의미적 검색을 함께 활용

 

5️⃣Hybrid Search의 장점과 단점

장점

  1. 정확성과 의미적 유사성을 동시에 반영 → 더 정밀한 검색 가능
  2. 전통적인 키워드 검색의 강점 유지빠르고 효율적
  3. 임베딩 검색을 추가하여 검색 개선 → 더 똑똑한 검색 결과 제공

단점

  1. 계산 비용이 증가 → 키워드 검색 + 벡터 검색을 둘 다 수행해야 하므로 연산량 증가
  2. 가중치 조정이 필요 → 키워드 검색과 벡터 검색의 비율(α 값)을 잘 조절해야 최적의 성능 발휘
728x90
728x90

Zero-shot 학습(Zero-shot Learning, ZSL)이란?

모델이 학습하지 않은(본 적 없는) 데이터에 대해서도 올바르게 예측하는 능력
즉, 새로운 개념이나 클래스에 대한 데이터가 없어도 모델이 추론할 수 있는 능력

1. Zero-shot 학습이 필요한 이유

기존 머신러닝 모델은 훈련 데이터에 없는 개념을 학습할 수 없었음.
하지만, 인간은 몇 가지 개념만 배워도 새로운 상황을 이해할 수 있음.

  • 사자가 뭐야? 🦁
    • "고양이과 동물이고, 덩치가 크고, 갈기가 있어."
  • "그럼, '백사자'는?"
    • 한 번도 본 적 없지만, "사자의 한 종류겠구나!" 라고 추론 가능.

2. Zero-shot Learning의 핵심 원리

Zero-shot Learning은 텍스트, 이미지, 코드 등 다양한 데이터를 활용하여 일반적인 개념을 학습하는 방식으로 이루어짐.

 

(1) 사전 학습된 대형 모델(Pre-trained Model) 사용

  • GPT, BERT, CLIP 같은 사전 학습된 대형 언어 모델/멀티모달 모델을 활용.
  • 예를 들어, GPT-4는 수많은 문장을 학습했기 때문에 "새로운 단어"가 등장해도 문맥을 통해 유추 가능.

(2) 개념 간의 연관성 활용

  • 모델이 "A와 B는 비슷하다" 같은 개념을 배웠다면, B를 학습하지 않아도 A와의 유사성을 이용해 추론.
  • 예를 들어, "강아지 🐶"를 알고 있다면, "늑대 🐺"도 개와 비슷한 동물일 거라고 예측 가능.

(3) 자연어 프롬프트 활용 (Prompt Engineering)

  • GPT-4 같은 LLM은 텍스트 프롬프트를 이용해 Zero-shot 작업이 가능해.
    예) "이 문장이 긍정적인지 부정적인지 판단해 봐."
    • 모델은 감성 분석을 배운 적이 없어도 문맥을 이용해 추론 가능.

3. Zero-shot Learning의 주요 응용 사례

(1) 텍스트 분류 (Zero-shot Text Classification)

  • 기존 머신러닝 모델은 감성 분석(긍정/부정) 모델을 학습해야 했지만,
    GPT-4 같은 모델은 학습 없이도 감성 분석이 가능.
  • 예)
    • "이 영화 너무 감동적이야!" → 긍정 (Zero-shot 분류)
    • "서비스가 별로였어." → 부정 (Zero-shot 분류)

(2) 이미지 분류 (Zero-shot Image Classification)

  • CLIP(OpenAI) 같은 모델은 학습하지 않은 이미지도 설명 가능.
  • 예) "고양이처럼 생긴 동물을 보여주면?" → "이것은 스라소니입니다."
    (모델이 스라소니를 학습한 적 없지만, '고양이과 동물'이라는 점을 유추)

(3) 검색 & 추천 시스템 (Zero-shot Information Retrieval)

  • 사용자가 입력한 키워드와 정확히 일치하지 않더라도 의미적으로 유사한 문서를 찾아줌.
  • 예) "강아지 먹이 추천" → 모델은 "강아지 사료"라는 개념을 학습하지 않아도 적절한 결과를 추천할 수 있음.

(4) 자연어 처리 (NLP) - 문서 요약, 번역, 질의응답

  • GPT-4 같은 모델은 번역 모델을 따로 학습하지 않아도 번역이 가능.
  • 질문-답변 시스템도 Zero-shot 방식으로 구현 가능.
  • 예)
    • "이 기사 요약해줘!" → 모델이 요약 가능.
    • "이 문장 번역해줘!" → 학습하지 않은 언어라도 번역 가능.

4. Zero-shot Learning vs Few-shot Learning vs Supervised Learning

학습 방식 특징 예제
Supervised Learning (지도 학습) 레이블된 데이터를 학습 후 예측 "강아지"를 학습해야 "강아지"라고 예측 가능
Few-shot Learning (소수 학습) 몇 개의 예제만 보고 학습 2~5개의 강아지 사진만 보고도 예측 가능
Zero-shot Learning (제로샷 학습) 예제 없이도 예측 강아지 학습 없이도 "개과 동물"이라고 예측

5. Zero-shot Learning의 장점과 한계

장점

  1. 새로운 개념도 학습 없이 예측 가능 → 데이터가 부족한 상황에서 유용
  2. 다양한 작업에 활용 가능 (멀티태스킹) → 감성 분석, 번역, 질의응답 등
  3. 빠른 적용 가능 → 추가 학습 없이 즉시 사용 가능

한계

  1. 정확도가 낮을 수 있음 → 학습된 데이터가 부족하면 잘못된 예측 가능
  2. 추론 속도가 느릴 수 있음 → 대형 모델(GPT-4, CLIP 등)은 많은 연산 필요
  3. 설명 불가능성(Explainability) → 왜 특정 결과가 나왔는지 이해하기 어려움
728x90

'AI > 개념 정리' 카테고리의 다른 글

[AI/AWS]비정형 데이터 수집/저장(S3, Glue)  (0) 2025.02.04
728x90

개요

AWS에서 Glue를 사용해 비정형 데이터(json)를 csv 파일로 변환시켜 저장하는 방법에 대해 알아보겠습니다.

비정형 데이터 수집/저장 AWS 아키텍처

전체과정

  1. json 파일 parsing
  2. S3에 json 파일 업로드
  3. 테이블 생성을 위한 크롤러 생성(json 파일용)
  4. 테이블 생성(json)
  5. ETL Job 생성 후 CSV 파일로 변환
  6. 테이블 생성을 위한 크롤러 생성(csv 파일용)
  7. 테이블 생성(csv)

1. json 파일 parsing

{
  "id": 1,
  "name": "Wireless Keyboard",
  "category": "Electronics",
  "price": 39.99,
  "stock": 120
},
{
  "id": 2,
  "name": "Gaming Mouse",
  "category": "Electronics",
  "price": 29.99,
  "stock": 85
},
{
  "id": 3,
  "name": "Bluetooth Speaker",
  "category": "Audio",
  "price": 49.99,
  "stock": 60
}

 

아래와 같이 객체별 한 줄로 표현되도록 파싱합니다.

 

<test.json>

{"id":1,"name":"Wireless Keyboard","category":"Electronics","price":39.99,"stock":120},
{"id":2,"name":"Gaming Mouse","category":"Electronics","price":29.99,"stock":85},
{"id":3,"name":"Bluetooth Speaker","category":"Audio","price":49.99,"stock":60}

 

2. json 파일 S3에 업로드

파싱한 json 파일을 S3에 업로드합니다.

 

버킷 구성 방법

csv 파일이 들어갈 폴더와 json 파일이 들어갈 폴더를 각각 생성합니다.

[버킷]
csv
json

 

json 폴더 내에 test.json 파일 업로드

(버킷 내에 폴더 없이 바로 json 파일을 업로드하면, 이후 Athena에서 쿼리로 데이터 조회 결과가 나오지 않습니다)

 

3. 테이블 생성을 위한 크롤러 생성(json 파일용)

AWS Glue > Data Catalog > Crawlers > Create Crawler 선택

 

이름 입력 후 Next

 

Add a data source 클릭

 

Browse S3 클릭해서 json 폴더 경로 지정

 

 

Next 클릭

 

IAM 역할을 지정합니다.

 

(참고)역할에는 아래의 권한이 필요합니다.

 

Add database 클릭

데이터베이스 생성(Data Catalog의 Database가 생성됨)

 

Target Database와 Prefix 지정

(Database 내 Table이 생성될 때 j_가 접두어로 붙어서 생성됩니다)

 

확인 후 크롤러 생성

 

4. Table 생성 (json)

크롤러 생성 후 'Run crawler' 클릭해서 크롤러 실행

 

시간이 좀 걸림

 

Data Catalog에 테이블 확인

(표시되지 않을 시 새로고침 버튼 클릭)

 

스키마를 확인하면 아래와 같습니다.

 

5. ETL Job 생성 후 CSV 파일로 변환

AWS Glue > ETL jobs > Visual ETL

 

노드 추가

  • Sources : AWS Glue Data Catalog
  • Transforms : Change Schema
  • Targets : Amazon S3


AWS Glue Data Catalog에서

앞서 생성한 Database와 Table 지정

 

Change Schema 에서

price를 기존 double 타입 -> string 타입으로 변경

 

Amazon S3 에서

  • Format : CSV
  • Compression Type : None
    ( Compression Type에 None을 명시적으로 지정해주지 않으면 추후에 csv파일이 생성되지 않고snappy 형식의 파일이 생성되는데, 이 파일로 Data Catalog 테이블 생성 후Athena로 테이블 조회 시 데이터가 조회되지 않음 )
  • S3 Target Location : S3 CSV 폴더 경로 지정

 

Job Details 에서

Job 이름과 역할 설정

(역할은 crawler 생성 시 지정한 역할과 동일)

 

script를 눌러보면 glue가 생성한 스크립트 확인 가능

 

'Save'를 눌러 저장한 후 Job 실행

 

Succeeded 확인

 

S3에 CSV 파일 생성 여부 확인

 

6. 테이블 생성을 위한 크롤러 생성(CSV 파일용)

변환된 CSV 파일을 테이블로 생성하기 위한 크롤러 생성

CSV 파일용 Crawler 생성 Step 1

Data source는 csv 폴더 경로로 지정

CSV 파일용 Crawler 생성 Step 2

 

7. 테이블 생성(CSV 파일용)

크롤러 실행 후 테이블 확인

 

생성된 테이블 확인

 

8. Athena에서 데이터 조회

728x90

'AI > 개념 정리' 카테고리의 다른 글

[AI] Zero-shot 학습(Zero-shot Learning, ZSL)  (1) 2025.03.25