검색 엔진 시스템
벡터 유사성을 사용하여 이미지 및 텍스트 검색 기능을 모두 지원하는 확장 가능한 검색 엔진 시스템.

이미지 검색

텍스트 검색
시스템 아키텍처

시스템 아키텍처
특징
기술적 인 세부 사항
이미지 검색 파이프 라인
전처리 :
- 이미지 크기 조정 및 정규화
- 교육을위한 데이터 확대
- JPEG, PNG 및 Webp Formats 지원
기능 추출 :
- Deep CNN 아키텍처 (RESNET/ENGICIONNET)
- 크로스 플랫폼 호환성을위한 ONNX 형식
- GPU 추론에 대한 Tensorrt 최적화
- 출력 : 512/1024 차원 임베딩 벡터
벡터 저장 및 검색 :
- 효율적인 유사성 검색을위한 Qdrant 벡터 데이터베이스
- 가장 가까운 가장 가까운 이웃 검색을위한 HNSW 인덱스
- 구성 가능한 거리 메트릭 (코사인/유클리드)
텍스트 검색 파이프 라인
텍스트 처리 및 분석 :
- 사용자 정의 Elasticsearch 분석기 :
- 소문자 및 ASCII 접이식이있는 키워드 분석기
- AutoComplete 용 Edge NGRAM 분석기 (Min_Gram : 2, Max_Gram : 5)
- 전체 텍스트 검색을위한 표준 분석기
- 문자 필터 및 토큰 화
- 베트남어 텍스트 지원
검색 접근법 :
AutoComplete (search-as-you-type) :
- 접두사 매칭을위한 Edge Ngram Tokenizer
- 사용자 정의 완료 Suggester
- 즉각적인 제안에 최적화되었습니다
- 제안을 위해 최소 2 자
전체 텍스트 검색 :
- 필드의 다중 매치 쿼리 :
- Auto Fuzziness와 퍼지 일치
- 비즈니스 메트릭을 기반으로하는 사용자 정의 점수 :
- 판매율 (할인 비율)
- 판매량 (> 1000 판매 보너스)
- 품목 가격 정규화
검색 최적화 :
- Elasticsearch 스크립트를 사용한 사용자 정의 점수 템플릿
- 효율적인 데이터 수집을위한 배치 인덱싱
- 비동기 검색 작업
- 구성 가능한 결과 크기
- 오류 처리 및 로깅
Elasticsearch 기능 :
- 맞춤형 색인 매핑
- 다중 필드 유형 및 분석기
- 함수 점수 쿼리
- 스크립트 기반 점수
- 대량 인덱싱 작업
기술 스택
모델 서빙
- NVIDIA TRITON 추론 서버 :
- Triton 서버 문서
- 모델 버전 및 A/B 테스트
- 동적 배치
- 동시 모델 실행
- Tensorrt를 사용한 GPU 최적화
- 모델 형식 변환 파이프 라인 :
- Pytorch → Onnx → Tensorrt
하부 구조
컨테이너화 :
- Docker Multi-Stage 빌드
- 최적화 된 컨테이너 이미지
- Docker Compose 개발을위한
오케스트레이션 :
- Kubernetes 배포
- 패키지 관리를위한 헬름 차트
- 수평 포드 자동화
- 자원 관리 및 스케일링
모니터링 및 로깅 :
- 프로 메테우스 메트릭
- Grafana 대시 보드
- 분산 추적
- 성능 모니터링
시작하기
- 저장소 복제 :
git clone https://github.com/vectornguyen76/search-engine-system.git
- Docker Compose를 사용하여 서비스를 시작하십시오.
- 서비스 액세스 :
- 이미지 검색 UI : http : // localhost : 8501
- 텍스트 검색 UI : http : // localhost : 8502
- Triton 서버 : http : // localhost : 8000
개발
CI/CD 파이프 라인
개발 환경 :
- 코드 라인 (Flake8)
- 단위 테스트
- 통합 테스트
준비 환경 :
생산 환경 :
코드 품질
- 파이썬 코드 라인 용 Flake8
- 힌트 및 문서를 입력하십시오
- CI/CD 파이프 라인의 자동 테스트
- 코드 검토 프로세스
기여
- 저장소를 포크하십시오
- 기능 분기를 만듭니다
- 당신의 변화를 저지르십시오
- 지점으로 밀어 넣으십시오
- 새 풀 요청을 만듭니다
특허
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.