LangChaing Retrieval-Retriever
Retriever
- 비정형 쿼리가 주어지면 문서를 반환하는 인터페이스로 문서를 반환한다.
- 벡터 저장소에서 사용자가 작성한 쿼리와 프롬프트에 따라 답변한다.
Chain
Stuff document
- 분할된 텍스트 청크를 Context에 그대로 주입
- 컨텍스트 청크가 너무 길면 그대로 주입하는 특성상 토큰 이슈가 발생할 수 있다.
Map-reduce
- Map : 문서 내 텍스트 청크 각각에 대해 요약을 수행, 병렬 수행 가능
- Reduce : 최종 요약을 생성
- 전체 과정을 통해 여러개의 문장을 llm에게 전달이 가능하다.
- 토큰 이슈를 만회할 수 있지만, 여러번 호출하는 비용 이슈 및 시간적으로 레이턴시 발생
Refine
- 고품질의 답변을 얻기 위함.
- 누적을 통해 고품질의 답변을 얻을 수 있다.
- 프롬프트에 질문과 컨텍스트로 첫번째 텍스트 청크를 넣어주고 이에 대한 답변을 llm이 하면 남긴 answer로 답변을 남기고 이전의 llm이 남긴 답변을 토대로 중간 답변을 넣어 고품질의 답변을 가질 수 있다.
- 하나씩 답변하기에 병렬 처리가 불가능하고 순서가 정해져있어 오랜 시간이 걸려서 자주 사용하는 편이 아님.
Map-rerank
- 사용자가 질문한 것에 대한 각각의 질문을 하나씩 답변을 생성하고 답변과 사용자의 질문과 모델의 답변에 대한 연관성 score를 받는다.
출처