Ch2. LangSmith API를 활용한 프롬프트 최적화
01. LangChain Dataset Testing에 데이터셋 생성
데이터셋을 구축하기 위해선 크게 3가지 과정에 대한 이해 필요
Retrieval이 Question에 Relevant 한지 평가
Answer이 Question에 Relevant 한지 평가
Answer가 검색된 문서 안에서 답변하였는지 (할루시네이션)
Langsmith의 Dataset에 생성
데이터셋 예제는 추가 가능
02. LLM-as-judge
LLM을 평가자로 두는 방법
input(질문), prediction(생성 답변), reference(정답 혹은 문맥)을 전달해줘야한다.
평가가 빠르며 비용이 저렴
1. Question-Answer Evaluator
가장 기본적이며 질문과 답변을 평가
ask_question이라는 함수를 만들어 input key에 해당하는 데이터를 evaluate에 넣어서 평가를 실행
정답이 맞았는지 correct or incorrect로 평가
함수를 생성해 LangSmith에 테스트 데이터셋 업로드 (랜덤 100개)
100개 질문을 테스트하는데 약 10분 소요
맞았는데 incorrect로 나온 문장들 제외하면 incorrect 3개 - 정확도 97%
2. Context-Answer Evaluator
참조를 사용하도록 지시
context를 반환하는 함수를 별도로 정의해야한다.
정답 답변에 관련있는 문서가 들어갔는지 correct or incorrect로 평가
03. Criteria Evaluator
기준들을 정의해놓고 평가
04. Embedding Evaluator
답변과 정답 답변 사이의 거리를 측정하는 평가자를 생성한다.
cosine 유사도는 할루시네이션 말고 답변 형태가 비슷한지를 더 고려한다.
정답 형태가 비슷했으면 좋을 때 사용한다.
양식에 맞춘 답변을 평가하고 싶을 때 사용한다.
05. Custom LLM-as-judge
사용자 정의 Evaluator로 평가로 사용자가 점수를 정의할 수 있다.
06. 한글 형태소 분석기
문장을 형태소 단위로 분리
각 형태소의 품사 태깅
형태소의 기본형 추출
07. 휴리스틱 평가
Rouge
자동 요약 및 기계 번역의 품질을 평가하는 데 사용되는 평가지표
생성된 텍스트가 참조 텍스트의 중요 키워드를 얼마나 포함하는지 측정
n-gram
중첩을 기반으로 계산한다.Rouge-1, Rouge-2, Rouge-L 등으로 계산한다.
BLEU
생성된 텍스트가 참조 텍스트와 얼마나 유사한지 측정
1-gram부터 4-gram까지의 정밀도를 계산
단어의 중요도를 구분하지 않고 문자열 일치만 확인하기에 한계가 있다.
METEOR
단어 매칭, 정밀도와 재현율 계산, F-mean 계산, 순서 패널티 계산
동의어와 어간 변형을 인식해 더 유연한 평가가 가능
Rouge와 달리 단어 순서를 명시적으로 고려
계산이 더 복잡하고 시간이 오래걸릴 수 있다.
SemScore
의미적 텍스트 유사성 기반
단순한 단어 매칭을 넘어 문장의 전반적인 의미를 고려한다.
사전 훈련된 언어 모델을 사용해 문장 임베딩을 생성한다.
08. 실험별 비교 분석
LangSmith에서 제공하는 Compare 기능 활용
09. Summary Evaluators
전체 수준의 점수를 사용자 재정의 가능
리스트에 질문을 통째로 받는다.
retriever answer에 가중치를 더 줄 수 있다.
10. Groundedness Evaluator
할루시네이션 평가하는 방식에 활용
11. 실험 비교 분석을 위한 Pairwise 평가
llm 2개 모델이 생성해낸 답변을 비교한다.
끝낸 2개의 실험에 대해 생성
12. 반복 평가
여러 번 평가를 내서 평균을 구한다.
num_repetition을 지정
13. 온라인 LLM 평가를 활용한 평가 자동화
LangSmith 자체적인 기능
Chain을
RunnableParallel
로 묶고 context, answer, question key를 넣어줘야한다.태그를 통해 분류해서 평가 가능