Index-realated chians
인덱스(벡터저장소)에 저장된 데이터들을 LLM과 어떻게 결합하여 사용할 것인가에 대해 4가지 방법론이 있다.
Stuffing
- 모든 관련 데이터를 프롬프트에 context로 채워 넣어 모델에 전달
장점: LLM을 한번만 호출
단점: 대부분의 LLM은 입력 가능한 최대 context가 정해져 있음. 따라서 큰 문서에 대해선 작동 하지 않을 가능성
Map Reduce
- 각 데이터 chunk에 대해 초기 프롬프트를 실행. 모든 초기출력들을 조합 하여 최종적인 프롬프트를 실행
장점: 개별Chunk에 대한 LLM호출을 병렬로 실행 가능. Stuffing에 비해 더 큰 문서 사용 가능.
단점: 많은 LLM 호출이 필요. 마지막 조합 호출 시에는 일부 정보가 손상
Refine
- 첫번째 데이터 청크에서 초기 프롬프트를 실행하여 출력 생성. 다음 문서에는 앞에서의 출력과 함께 조합하여 다시 출력하신 식의 체인을 구성한다.
장점: 컨텍스트들의 관련성이 더 높아져 Map Reduce 방식보다 손실이 적을 확률이 높아짐
단점: LLM 호출을 병렬적으로 실행 할 수 없다. 또한 Chunk각각에 대한 종속성에 대한 리스크 생김
Map Rerank
- 각 데이터 Chunk에 대해 초기 프롬프트를 실행 할 뿐만 아니라 답변이 얼마나 확실한지에 대한 점수를 부여
- 점수에 기반하여 응답의 순위가 매겨지고 가장 높은 점수를 반환
장점: 개별Chunk에 대한 LLM호출을 병렬로 실행 가능.
단점: 문서간 정보를 결합하지는 않으므로 하나의 문서에 대해 간단한 답변을 찾으려고 할 때 가장 유용
'[실무개발] > Generative AI' 카테고리의 다른 글
모델 평가 방법(Numeric Output) (1) | 2024.03.07 |
---|---|
OpenAI Functions Agent (Feat. Zero-shot ReAct Agent) (0) | 2024.02.26 |
ReAct (0) | 2024.02.24 |
Tree of Thought (0) | 2024.02.24 |
Self-Consistency (0) | 2024.02.24 |