관리 메뉴

너와 나의 스토리

[LLM] Text Embedding과 Vector DB 본문

Data Analysis/LLM

[LLM] Text Embedding과 Vector DB

노는게제일좋아! 2024. 6. 21. 11:03
반응형

텍스트 임베딩(Text Embedding)

  • 단어나 구문을 맥락적 의미를 기반으로 다차원 공간에서 기계가 읽을 수 있는 수치 벡터로 표현하는 방법

 

작업

비대칭적 의미 기반 검색

  • 의미 기반 검색 시스템
    • 사용자 쿼리의 의미와 맥락을 이해하고, 이를 검색 가능한 문서의 의미 및 맥락과 대조할 수 있다.
    • 정확한 키워드나 n-gram 일치에 의존하지 않고도 디비에서 관련된 결과를 찾아낼 수 있으며, 사전 훈련된 LLM을 이용하여 쿼리와 문서/정보의 뉘앙스를 이해한다.
  • '비대칭적' 의미 기반 검색?
    • 입력 쿼리의 의미 정보와 검색 시스템이 검색해야 하는 문서/정보 사이에 불균형이 있다.

 

 

문서 청킹

  • 큰 문서를 임베딩하기 위해 더 작고 관리 가능한 청크로 나누는 것을 의미한다.
  • 문서 청킹 방법:
    • 최대 토큰 범위 분할(Max Token Window Chunking)
      • 주어진 최대 크기의 청크로 문서를 나눈다.
      • 단순히 사이즈로만 자르면 중요한 텍스트 일부를 나눠질 수 있기 때문에, 토큰이 청크 사이에 공유되도록 지정된 양의 토큰으로 겹치는 범위를 설정할 수 있다.
    • 클러스터링
      • 의미적으로 유사한 작은 정보 청크를 결합하여 새로운 문서를 생성하는 것
      • 이 방식은 일반적으로는 의미적으로 더 연관성이 있는 청크를 생성하지만, 내용의 일부가 주변 텍스트와 맥락에서 벗어나는 단점이 있다.
      • 따라서, 이 방법은 청크들이 서로 관련이 없을 때, 잘 작동한다.

 

 

벡터 데이터베이스(Vector Database)

  • 벡터를 빠르게 저장하고 검색하기 위해 설계된 데이터 저장 시스템
  • 이러한 db는 문서나 문서 일부의 의미를 인코딩하고 저장하는 LLM에 의해 생성된 임베딩을 저장하는 데 유용함.
  • 임베딩을 벡터 디비에 저장함으로써, 의미적으로 유사한 텍스트를 검색하는 최근접 이웃 탐색(Nearest Neighbor Search, NNS)을 효율적으로 수행 가능
    • NNS: 주어진 집합에서 주어진 점에 가장 가까운 점을 찾는 최적화 문제
  • 벡터 디비 종류
    • 파인콘(Pinecone)
      • 소규모/중규모의 데이터셋(100만 개 미만)을 위해 설계됨
      • 기본 무료. 추가 기능과 확정성을 위한 유료 버전도 있음.
      • 빠른 벡터 검색에 최적화
    • 오픈 소스
      • Pgvector
      • Weaviate
        • 의미 기반 검색 지원
        • 텐서플로와 파이토치와 같은 다른 머신러닝 도구와 통합 가능
      • ANNOY
        • 대규모 데이터셋에 최적화된 NNS를 위한 라이브러리

 

검색 결과 재순위화(Re-ranking)

  • 벡터 디비로부터 유사도 비교를 사용하여 주어진 쿼리에 대한 결과를 검색한 후에, 사용자에게 가장 관련된 결과가 제시되도록 순위를 다시 지정하는 것이 유용할 때가 많다.
  • 결과를 재순위화하는 방법
    • 크로스-인코더(Cross-Encoder)
      • 입력 시퀀스 쌍을 취하고 두 번째 시퀀스가 첫 번째에 얼마나 관련이 있는지를 점수로 예측하는 트랜스포머 모델의 한 유형.
      • 이를 사용하면, 개별 키워드만이 아닌 전체 쿼리의 문맥을 고려할 수 있다.
      • 대신 대기시간이 길어짐
      • 크로스-인코더 모델을 사용할 수 있는 인기 있는 소스 중 하나는 '문장 트랜스포머 라이브러리'가 있다. 파인튜닝도 가능.

 

 

출처

- [Large Language Models 쉽고 빠르게 익히는 실전 LLM]

반응형
Comments