벡터 검색을 위한 ClickHouse!
- 검색을 수행하기 전에 ClickHouse의 필터링과 전문 검색 기능을 활용해 데이터셋을 더 정교하게 추릴 수 있습니다.
- 데이터셋에 대해 분석을 수행할 수 있습니다.
- 기존 데이터에 대해
JOIN을 수행할 수 있습니다. - 데이터베이스를 또 하나 더 관리하면서 인프라를 복잡하게 만들 필요가 없습니다.
1
임베딩 생성
데이터(문서, 이미지 또는 구조화된 데이터)는 _임베딩_으로 변환되어야 합니다. OpenAI Embeddings API를 사용하거나 오픈 소스 Python 라이브러리 SentenceTransformers를 사용해 임베딩을 생성하는 것을 권장합니다.임베딩은 데이터를 나타내는 큰 부동소수점 숫자 배열이라고 생각하면 됩니다. 임베딩에 대해 자세히 알아보려면 OpenAI의 이 가이드를 확인하십시오.
2
임베딩 저장
임베딩을 생성한 후에는 이를 ClickHouse에 저장해야 합니다. 각 임베딩은 별도의 행에 저장해야 하며, 필터링, 집계 또는 분석을 위한 메타데이터를 포함할 수 있습니다. 다음은 캡션이 있는 이미지를 저장할 수 있는 테이블 예시입니다.
3
관련 임베딩 검색
데이터셋에서 개 사진을 검색하려고 한다고 가정해 보겠습니다. 이 쿼리는 제공한 개 이미지와 가장 관련성이 높을 가능성이 있는 상위 10개 이미지의
cosineDistance와 같은 거리 함수를 사용해 개 이미지의 임베딩을 기준으로 관련 이미지를 검색할 수 있습니다._file 이름과 caption을 반환합니다.