데이터셋 세부 정보
Parquet 파일이 포함되어 있습니다. 파일 이름은 0.parquet, 1.parquet, …, 25.parquet입니다. 데이터셋의 예시 행 몇 개를 보려면 이 Hugging Face 페이지를 방문하십시오.
테이블 생성
dbpedia 테이블을 생성합니다:
테이블 불러오기
dbpedia 테이블에 100만 개의 행이 있는지 확인하십시오:
시맨틱 검색
- 사용자가 자연어로 검색 쿼리를 입력합니다. 예: “경치 좋은 철도 여행을 알려줘”, “유럽을 배경으로 한 서스펜스 소설” 등
- LLM 모델을 사용해 검색 쿼리의 임베딩 벡터를 생성합니다
- 데이터셋에서 검색 임베딩 벡터와 가장 가까운 이웃을 찾습니다
브루트포스 방식의 벡터 유사도 검색 실행
dbpedia 데이터셋에서는
시맨틱 검색을 시각적으로 빠르게 확인하는 한 가지 방법으로 데이터셋 자체의 임베딩 벡터를 검색
벡터로 사용할 수 있습니다. 예를 들면 다음과 같습니다:
Query
Response
max_threads=1일 때의 쿼리 지연 시간도 기록하십시오
(이를 수백만 개의 벡터가 있는 프로덕션 데이터셋에 외삽해 보십시오!)
벡터 유사도 인덱스 생성
vector 컬럼에 벡터 유사도 인덱스를 정의하고 생성하십시오:
ANN 검색 수행
Query
Response
검색 쿼리를 위한 임베딩 생성
dbpedia
테이블에 있는 기존 벡터 중 하나를 검색 벡터로 사용합니다. 실제 애플리케이션에서는
자연어일 수 있는 사용자 입력 쿼리로부터 검색 벡터를 생성해야 합니다. 검색 벡터는
데이터셋의 임베딩 벡터를 생성할 때 사용한 것과 동일한 LLM 모델을 사용해 생성해야
합니다.
아래는 OpenAI API를 프로그래밍 방식으로 호출하여
text-embedding-3-large 모델로 임베딩 벡터를 생성하는 방법을 보여주는 Python 예시 스크립트입니다. 그런 다음 검색 임베딩 벡터를
SELECT 쿼리의 cosineDistance() 함수에 인수로 전달합니다.
스크립트를 실행하려면 환경 변수 OPENAI_API_KEY에 OpenAI API Key가 설정되어 있어야 합니다.
OpenAI API Key는 https://platform.openai.com에 등록한 후 발급받을 수 있습니다.
Q&A 데모 애플리케이션
- 사용자로부터 주제를 입력받습니다
text-embedding-3-large모델로 OpenAI API를 호출하여 주제에 대한 임베딩 벡터를 생성합니다dbpedia테이블(table)에서 벡터 유사도 검색을 사용해 관련성이 매우 높은 Wikipedia 문서를 검색합니다- 주제와 관련된 자유 형식의 자연어 질문을 사용자로부터 입력받습니다
- OpenAI
gpt-3.5-turboChat API를 사용하여 3단계에서 검색된 문서의 지식을 바탕으로 질문에 답변합니다. 3단계에서 검색된 문서는 Chat API에 컨텍스트로 전달되며, 이것이 생성형 AI의 핵심 연결 고리입니다.
OPENAI_API_KEY에 OpenAI API Key가 설정되어 있어야 합니다.
OpenAI API Key는 https://platform.openai.com 에 등록한 후 발급받을 수 있습니다.