4️⃣Evaluation-Driven Development

EED(Evaluation-Driven Development)는 Evaluation 평가에 기반하여 LLM을 개발하는 방법론 입니다. LlamaIndex는 2가지 형태의 EED를 구성할 수 있습니다.

Why EDD?

  • 정확성 및 관련성 향상: EDD는 파이프라인의 출력과 관련된 잠재적인 문제를 식별하고 해결하여 생성된 응답이 정확하고 관련성이 있으며 제공된 컨텍스트와 일관성을 유지하도록 도와줍니다.

  • 약점 및 기회 식별: EDD는 파이프라인을 개선할 수 있는 영역을 쉽게 감지하여 개발자가 개선이 필요한 특정 측면에 집중할 수 있도록 합니다. 이러한 지속적인 평가 프로세스는 전반적인 성능 최적화로 이어집니다.

  • 모델 선택 및 파라미터 튜닝 가이드: EDD는 다양한 모델과 파라미터 구성을 평가하여 당면한 특정 작업에 가장 적합한 모델 아키텍처와 하이퍼파라미터를 선택할 수 있도록 안내합니다.

  • 견고성 및 일반화 보장: EDD는 파이프라인이 다양한 입력 시나리오와 데이터 분포에 걸쳐 일관되게 작동하도록 보장하여 견고성과 일반화 기능을 향상시킵니다.

  • 사용자 기대치에 부합: EDD는 파이프라인의 출력을 사용자의 기대 및 요구 사항에 맞춰 조정하여 생성된 응답이 대상 고객의 특정 요구 사항에 맞게 조정되도록 지원합니다.

  • 지속적인 개선 및 반복: EDD는 지속적인 개선과 반복 문화를 장려하여 개발자가 객관적인 평가 지표를 기반으로 정보에 입각한 의사 결정을 내릴 수 있도록 지원합니다.

요약하면, EDD는 지속적인 개선과 최적화를 촉진하며, 생성된 응답이 정확하고 관련성이 있으며 사용자의 기대에 부합하도록 보장함으로써 고품질 RAG 파이프라인을 개발하는 데 중요한 역할의 기대에 부합하도록 보장합니다.

How to Implement EDD?

  1. DatasetGenerator를 사용하여 평가 질문(evaluation questions)을 자동 생성합니다.

  2. faithfulness(충실도), relevancy(관련성)의 평가 evaluator를 정의합니다.

  3. BatchEvalRunner를 사용하여 응답에 대한 평가를 비동기적으로 실행합니다.

  4. 평가 결과를 비교합니다.

EED 활용 예시

  1. RAG Pipeline에 LLM을 결정하는 방법

  2. RAG Pipeline에 적합한 RAG 전략을 결정하는 방법

이제 위의 2가지 예시를 LlmaIndex 코드로 구현해 보겠습니다.


사례 1. Evaluation-Driven Development (EDD) for Multi Document RAG Pipeline with GPT-3.5 and Zephyr-7b-beta

EDD를 사용하여 Metadata replacement + node sentence window를 위한 다중 문서 RAG 파이프라인에 가장 적합한 두 가지 LLM을 결정하는 방법을 보여 드립니다:

  • gpt-3.5-turbo

  • zephyr-7b-beta

Library 설치

POC with Metadata Replacement + Node Sentence Window

SentenceWindowNodeParser는 주변 단어와 문장을 고려한 문장 표현을 만드는 데 사용할 수 있는 도구입니다. 검색 중에 검색된 문장을 LLM에 전달하기 전에 MetadataReplacementNodePostProcessor를 사용하여 단일 문장을 주변 문장이 포함된 창으로 대체합니다. 이는 문장의 전체 의미를 이해하는 것이 필수적인 기계 번역이나 요약과 같은 작업에 유용할 수 있습니다. 이는 보다 세분화된 세부 정보를 검색하는 데 도움이 되므로 대용량 문서에 가장 유용합니다.

Load documents

Set up node parser

gpt-3.5-turbo

Extract nodes and build index

Define query engine

Run test queries

zephyr-7b-beta

Huggingface hub에서 모델을 다운로드 하겠습니다.

Extract nodes and build index

Define query engine

Run test queries

Evaluations

  1. 데이터 세트 생성기를 사용하여 평가 질문을 자동 생성합니다.

  2. 충실도(faithfulness)와 관련성(relevancy)에 대한 평가자를 정의합니다.

  3. BatchEvalRunner를 사용하여 응답에 대한 평가를 비동기적으로 실행합니다.

  4. 평가 결과를 비교합니다.

Generate evaluation questions

Define evaluators

Define evaluation batch runner

Evaluation on gpt-3.5-turbo

Evaluation on zephyr-7b

최종 결과 비교

LLM
GPT3.5-Turbo
Zephyr-7B

Faithfulness Correct

0.933

0.867

Relevancy Correct

0.833

0.867


사례 2. Evaluation-Driven Development (EDD) for Multi Document RAG Pipeline

EDD(Evaluation-Driven Development)를 사용하여 이 두 가지 전략 중 다중 문서 RAG 파이프라인에 더 적합한 전략을 결정하는 방법을 보여드립니다:

  • Recursive retriever + document agent

  • Metadata replacement + node sentence window

Setup Environments

Common Tasks

Load documents

Recursive retriever + document agent

다양한 유형의 쿼리/요약을 제공하려면 각 문서에 대해 여러 개의 인덱스를 만드는 것이 가장 좋습니다. 그런 다음 문서 에이전트는 쿼리 엔진을 통해 질문에 기반한 트래픽을 올바른 인덱스로 전달하여 정확한 답변을 검색하는 디스패처 역할을 합니다.

인덱스 노드는 문서 에이전트 앞에 있는 추가 계층으로 도입됩니다. 하나의 인덱스 노드는 하나의 문서 에이전트에 해당하며, 각 문서에 대한 목록 쿼리 엔진(요약용)과 벡터 쿼리 엔진(Q&A용)에 매핑됩니다.

Create document agents

Create index nodes

Define recursive retriever and query engine

Run test queries

Metadata Replacement + Node Sentence Window

SentenceWindowNodeParser는 주변 단어와 문장을 고려한 문장 표현을 만드는 데 사용할 수 있는 도구입니다. 검색 중에 검색된 문장을 LLM에 전달하기 전에 MetadataReplacementNodePostProcessor를 사용하여 단일 문장을 주변 문장이 포함된 창으로 대체합니다. 이는 문장의 전체 의미를 이해하는 것이 필수적인 기계 번역이나 요약과 같은 작업에 유용할 수 있습니다. 이는 보다 세분화된 세부 정보를 검색하는 데 도움이 되므로 대용량 문서에 가장 유용합니다.

Set up node parser

Extract nodes and build index

Define query engine

Run test queries

Evaluations

  1. 데이터세트 생성기를 사용하여 30개의 평가 문항을 자동 생성합니다.

  2. 충실도(faithfulness)와 관련성(relevancy)에 대한 평가자를 정의합니다.

  3. BatchEvalRunner를 사용하여 두 전략에서 두 쿼리 엔진의 응답에 대한 평가를 비동기적으로 실행합니다.

  4. 평가 결과를 비교하여 더 높은 점수를 받은 전략을 선택합니다.

Generate evaluation questions

Define evaluators

Define evaluation batch runner

Be mindful not to define workers to be too high, as it may run into rate limit issues with OpenAI.

Evaluation of recursive retriever + document agent

Evaluation of metadata replacement + node sentence window

최종 결과 비교

Retriever + document agent
Metadata replacement + node sentence window

Faithfulness Correct

0.966

0.933

Relevancy Correct

0.966

0.867

Last updated