Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- PersistenceContext
- JanusWebRTCServer
- 오블완
- python
- taint
- Value too long for column
- table not found
- 달인막창
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- preemption #
- JanusWebRTCGateway
- Spring Batch
- vfr video
- terminal
- VARCHAR (1)
- pytest
- PytestPluginManager
- 자원부족
- 코루틴 컨텍스트
- 깡돼후
- kotlin
- tolerated
- k8s #kubernetes #쿠버네티스
- JanusWebRTC
- 개성국밥
- mp4fpsmod
- JanusGateway
- 티스토리챌린지
- 겨울 부산
- 코루틴 빌더
Archives
너와 나의 스토리
[LLM] Text Embedding과 Vector DB 본문
반응형
텍스트 임베딩(Text Embedding)
- 단어나 구문을 맥락적 의미를 기반으로 다차원 공간에서 기계가 읽을 수 있는 수치 벡터로 표현하는 방법
작업
비대칭적 의미 기반 검색
- 의미 기반 검색 시스템
- 사용자 쿼리의 의미와 맥락을 이해하고, 이를 검색 가능한 문서의 의미 및 맥락과 대조할 수 있다.
- 정확한 키워드나 n-gram 일치에 의존하지 않고도 디비에서 관련된 결과를 찾아낼 수 있으며, 사전 훈련된 LLM을 이용하여 쿼리와 문서/정보의 뉘앙스를 이해한다.
- '비대칭적' 의미 기반 검색?
- 입력 쿼리의 의미 정보와 검색 시스템이 검색해야 하는 문서/정보 사이에 불균형이 있다.
문서 청킹
- 큰 문서를 임베딩하기 위해 더 작고 관리 가능한 청크로 나누는 것을 의미한다.
- 문서 청킹 방법:
- 최대 토큰 범위 분할(Max Token Window Chunking)
- 주어진 최대 크기의 청크로 문서를 나눈다.
- 단순히 사이즈로만 자르면 중요한 텍스트 일부를 나눠질 수 있기 때문에, 토큰이 청크 사이에 공유되도록 지정된 양의 토큰으로 겹치는 범위를 설정할 수 있다.
- 클러스터링
- 의미적으로 유사한 작은 정보 청크를 결합하여 새로운 문서를 생성하는 것
- 이 방식은 일반적으로는 의미적으로 더 연관성이 있는 청크를 생성하지만, 내용의 일부가 주변 텍스트와 맥락에서 벗어나는 단점이 있다.
- 따라서, 이 방법은 청크들이 서로 관련이 없을 때, 잘 작동한다.
- 최대 토큰 범위 분할(Max Token Window Chunking)
벡터 데이터베이스(Vector Database)
- 벡터를 빠르게 저장하고 검색하기 위해 설계된 데이터 저장 시스템
- 이러한 db는 문서나 문서 일부의 의미를 인코딩하고 저장하는 LLM에 의해 생성된 임베딩을 저장하는 데 유용함.
- 임베딩을 벡터 디비에 저장함으로써, 의미적으로 유사한 텍스트를 검색하는 최근접 이웃 탐색(Nearest Neighbor Search, NNS)을 효율적으로 수행 가능
- NNS: 주어진 집합에서 주어진 점에 가장 가까운 점을 찾는 최적화 문제
- 벡터 디비 종류
- 파인콘(Pinecone)
- 소규모/중규모의 데이터셋(100만 개 미만)을 위해 설계됨
- 기본 무료. 추가 기능과 확정성을 위한 유료 버전도 있음.
- 빠른 벡터 검색에 최적화
- 오픈 소스
- Pgvector
- Weaviate
- 의미 기반 검색 지원
- 텐서플로와 파이토치와 같은 다른 머신러닝 도구와 통합 가능
- ANNOY
- 대규모 데이터셋에 최적화된 NNS를 위한 라이브러리
- 파인콘(Pinecone)
검색 결과 재순위화(Re-ranking)
- 벡터 디비로부터 유사도 비교를 사용하여 주어진 쿼리에 대한 결과를 검색한 후에, 사용자에게 가장 관련된 결과가 제시되도록 순위를 다시 지정하는 것이 유용할 때가 많다.
- 결과를 재순위화하는 방법
- 크로스-인코더(Cross-Encoder)
- 입력 시퀀스 쌍을 취하고 두 번째 시퀀스가 첫 번째에 얼마나 관련이 있는지를 점수로 예측하는 트랜스포머 모델의 한 유형.
- 이를 사용하면, 개별 키워드만이 아닌 전체 쿼리의 문맥을 고려할 수 있다.
- 대신 대기시간이 길어짐
- 크로스-인코더 모델을 사용할 수 있는 인기 있는 소스 중 하나는 '문장 트랜스포머 라이브러리'가 있다. 파인튜닝도 가능.
- 크로스-인코더(Cross-Encoder)
출처
- [Large Language Models 쉽고 빠르게 익히는 실전 LLM]
반응형
'Data Analysis > LLM' 카테고리의 다른 글
[LLM] RAG with OpenAI 쉬운 구현 방법과 설명 (0) | 2024.08.10 |
---|---|
LLM Conditioning 방법 - RLHF, PEFT (0) | 2024.07.13 |
[LLM] 프롬프트 엔지니어링 - 인젝션 공격, 제로샷/퓨샷, CoT, Self-Consistency, ToT (1) | 2024.06.24 |
[LLM] Chat Completion API / RAG with Llama-index / 임베딩이란 (0) | 2024.05.22 |
NLP 발전 과정과 LLM의 등장 / GPT 로직 및 Attention Mechanism 설명 (0) | 2024.05.20 |
Comments