메인 콘텐츠로 건너뛰기

소개

Hacker News 데이터셋에는 2,874만 건의 게시물과 해당 벡터 임베딩이 포함되어 있습니다. 임베딩은 SentenceTransformers 모델 all-MiniLM-L6-v2를 사용해 생성되었습니다. 각 임베딩 벡터의 차원은 384입니다. 이 데이터셋은 사용자 생성 텍스트 데이터를 기반으로 구축된 대규모 실제 벡터 검색 애플리케이션의 설계, 사이징, 성능 측면을 살펴보는 데 활용할 수 있습니다.

데이터셋 세부 정보

벡터 임베딩이 포함된 전체 데이터셋은 ClickHouse에서 S3 버킷의 단일 Parquet 파일로 제공합니다. 먼저 문서를 참고하여 이 데이터셋에 필요한 스토리지(Storage) 및 메모리 요구 사항을 추정하는 사이징 작업을 수행하는 것이 좋습니다.

단계

1

테이블 생성

게시물과 해당 임베딩, 관련 속성을 저장할 hackernews 테이블을 생성합니다:
id는 단순히 순차적으로 증가하는 정수입니다. 추가 속성은 프레디케이트에 사용하여 문서에서 설명한 포스트필터링/프리필터링이 결합된 벡터 유사도 검색을 이해하는 데 활용할 수 있습니다
2

데이터 불러오기

Parquet 파일의 데이터셋을 불러오려면 다음 SQL 문을 실행하십시오:
테이블에 2,874만 개의 행을 삽입하는 데는 몇 분 정도 걸립니다.
3

벡터 유사성 인덱스 구축하기

다음 SQL을 실행하여 hackernews 테이블의 vector 컬럼에 벡터 유사성 인덱스를 정의하고 구축합니다:
인덱스 생성 및 검색에 대한 매개변수와 성능 고려 사항은 문서에 설명되어 있습니다. 위 구문에서는 HNSW 하이퍼매개변수 Mef_construction에 각각 64와 512를 사용합니다. 선택한 값에 따른 인덱스 빌드 시간과 검색 결과 품질을 평가하여 이 매개변수의 최적값을 신중하게 선택해야 합니다.전체 2,874만 건의 데이터셋에 대해 인덱스를 빌드하고 저장하는 데는 사용 가능한 CPU 코어 수와 스토리지 대역폭에 따라 몇 분에서 몇 시간까지 걸릴 수 있습니다.
4

ANN 검색 수행

벡터 유사도 인덱스가 구축되면 벡터 검색 쿼리는 자동으로 해당 인덱스를 사용합니다:
Query
벡터 인덱스를 처음 메모리에 로드할 때는 몇 초에서 몇 분까지 걸릴 수 있습니다.
5

검색 쿼리용 임베딩 생성

Sentence Transformers는 문장과 단락의 의미론적 의미를 파악하기 위한 임베딩(embedding) 모델을 로컬 환경에서 간편하게 사용할 수 있도록 제공합니다.이 HackerNews 데이터셋에는 all-MiniLM-L6-v2 모델로 생성된 벡터 임베딩(vector embedding)이 포함되어 있습니다.아래에 예시 Python 스크립트가 제공됩니다. 이 스크립트는 sentence_transformers Python 패키지를 사용하여 프로그래밍 방식으로 임베딩 벡터를 생성하는 방법을 보여줍니다. 생성된 검색 임베딩 벡터는 SELECT 쿼리에서 cosineDistance() 함수의 인수로 전달됩니다.
위 Python 스크립트를 실행한 예시와 유사도 검색 결과는 다음과 같습니다 (상위 20개 posts 각각에서 100자만 출력됩니다):

요약 데모 애플리케이션

위의 예시에서는 ClickHouse를 사용한 시맨틱 검색(semantic search) 및 문서 검색 방법을 살펴보았습니다.매우 간단하지만 높은 잠재력을 지닌 생성형 AI 예시 애플리케이션을 다음에서 소개합니다.애플리케이션은 다음 단계를 수행합니다:
  1. 사용자로부터 topic을 입력받습니다
  2. SentenceTransformersall-MiniLM-L6-v2 모델을 사용해 topic에 대한 임베딩 벡터를 생성합니다
  3. hackernews 테이블(table)에서 벡터 유사도 검색을 사용해 관련도가 매우 높은 게시물/댓글을 검색합니다
  4. LangChain 및 OpenAI gpt-3.5-turbo Chat API를 사용해 3단계에서 가져온 콘텐츠를 요약합니다. 3단계에서 가져온 게시물/댓글은 Chat API에 컨텍스트로 전달되며, Generative AI의 핵심 연결 요소입니다.
요약 애플리케이션 실행 예시를 먼저 아래에 제시하고, 이어서 요약 애플리케이션의 코드를 설명합니다. 애플리케이션을 실행하려면 환경 변수 OPENAI_API_KEY에 OpenAI API Key를 설정해야 합니다. OpenAI API Key는 https://platform.openai.com 에서 등록 후 발급받을 수 있습니다.이 애플리케이션은 고객 감성 분석, 기술 지원 자동화, 사용자 대화 마이닝, 법률 문서, 의료 기록, 회의 녹취록, 재무제표 등 다양한 엔터프라이즈 도메인에 적용할 수 있는 Generative AI 활용 사례를 보여줍니다.
위 애플리케이션의 코드:
마지막 수정일 2026년 7월 2일