로드맵
임베딩과 벡터 DB 를 이용한 검색 시스템
로드맵 개요
주제: Milvus 기반 벡터 검색 시스템 구축 및 데이터 전처리
벡터 DB란?
Milvus 기본 이해 및 환경 설정
데이터 전처리 및 삽입
효율적인 검색 로직 구현
추가 최적화 및 기능 확장
Markdown 기반 TIL 정리 템플릿
1단계: Milvus 기본 이해 및 환경 설정
학습 목표:
Milvus의 기본 개념과 설치 방법을 이해.
Milvus 클라이언트와 컬렉션 생성 및 설정 방법 익히기.
TIL 작성 항목:
Milvus란 무엇인가?
벡터 데이터베이스의 개념.
Milvus의 주요 특징(벡터 검색, 고성능, 확장성).
Milvus 설치 및 환경 설정
Docker 기반 Milvus 설치 명령어.
Python SDK 설치 및 간단한 연결 테스트 코드.
실습 및 기록 예제:
Milvus 서버 실행:
bash코드 복사docker run -d --name milvus \ -p 19530:19530 \ milvusdb/milvus:v2.2.3
Python SDK를 통한 Milvus 연결:
python코드 복사from pymilvus import connections connections.connect(alias="default", host="localhost", port="19530")
2단계: 데이터 전처리 및 삽입
학습 목표:
Markdown 파일에서 데이터 추출, 전처리(HTML 및 Markdown 태그 제거).
Milvus 컬렉션 스키마 생성 및 데이터 삽입.
TIL 작성 항목:
Markdown 전처리
HTML 및 Markdown 태그 제거 방법.
BeautifulSoup과 정규식을 활용한 전처리.
Milvus 컬렉션 생성
컬렉션 스키마 정의 및 생성 코드.
임베딩 생성 및 데이터 삽입
텍스트를 청크로 분리하여 임베딩 생성 및 Milvus 삽입.
실습 및 기록 예제:
Markdown 파일 전처리 코드:
python코드 복사def remove_html_tags(text): soup = BeautifulSoup(text, "html.parser") return soup.get_text()
Milvus 컬렉션 스키마 생성:
python코드 복사from pymilvus import FieldSchema, CollectionSchema, DataType, Collection fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=1024), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=3000), FieldSchema(name="tag", dtype=DataType.VARCHAR, max_length=255), ] schema = CollectionSchema(fields) collection = Collection("example_collection", schema)
3단계: 효율적인 검색 로직 구현
학습 목표:
Milvus에서 태그 기반 검색 및 벡터 검색 구현.
태그를 활용한 검색 범위 제한 및 정확도 향상.
TIL 작성 항목:
태그 기반 검색
Milvus의
query()
메서드를 활용하여 태그로 필터링.
벡터 유사도 검색
Milvus의
search()
메서드를 활용하여 벡터 검색.
태그와 벡터 검색의 조합
태그로 후보를 좁힌 뒤 벡터 검색으로 최적화.
실습 및 기록 예제:
태그 검색:
python코드 복사tag_results = collection.query( expr="tag == 'example_tag'", output_fields=["content", "tag"] )
벡터 검색:
python코드 복사search_results = collection.search( data=[query_embedding], anns_field="embedding", param={"metric_type": "L2", "params": {"nprobe": 10}}, limit=5, output_fields=["content", "tag"] )
4단계: 추가 최적화 및 기능 확장
학습 목표:
검색 속도와 정확도를 개선하기 위한 최적화 기법.
BERT를 활용한 태그와 입력 쿼리 간 유사도 계산.
멀티-모달 검색(ElasticSearch와의 통합).
TIL 작성 항목:
검색 성능 최적화
nprobe
값 조정으로 Milvus 검색 성능 개선.
BERT 기반 태그 유사도 계산
입력 쿼리와 태그의 문장 임베딩 비교.
ElasticSearch와 Milvus 통합
텍스트 검색을 ElasticSearch로, 벡터 검색을 Milvus로 처리.
5단계: Markdown 기반 TIL 정리 템플릿
TIL 구조 제안:
markdown코드 복사# TIL: Milvus 기반 벡터 검색 시스템 구축
## 📌 오늘 배운 것
- Milvus 기본 개념 및 설치 방법.
- Markdown 데이터 전처리 방법.
- 태그와 벡터를 활용한 효율적인 검색 구현.
---
## 📂 학습 내용
### 1️⃣ Milvus 설치 및 환경 설정
- Docker 명령어를 사용하여 Milvus 서버 실행.
- Python SDK로 Milvus에 연결.
### 2️⃣ Markdown 데이터 전처리
- HTML 및 Markdown 태그 제거 코드:
```python
def remove_html_tags(text):
...
3️⃣ 검색 로직 구현
태그 검색:
python코드 복사results = collection.query(expr="tag == 'example'", output_fields=["content"])
벡터 검색:
python코드 복사...
Last updated
Was this helpful?