평가자 LLM 선택하기(Choose evaluator llm)

평가자 LLM 선택하기(Choose evaluator llm)

Ragas의 평가 지표는 내부적으로 평가자 LLM(evaluator LLM)을 사용해요. 점수 품질이 이 LLM에 크게 좌우되므로 자신의 환경에 맞는 LLM 제공자를 골라 연결하는 방법을 아는 게 중요해요. 여기서는 OpenAI, AWS, Google Cloud, Azure, 그리고 그 외 제공자를 평가자 LLM으로 설정하는 방법을 하나씩 살펴볼게요.

출처: 문서

본문

OpenAI

langchain-openai 패키지를 설치해요.

pip install langchain-openai

OpenAI 키가 준비되어 환경에 있도록 해요.

import os
os.environ["OPENAI_API_KEY"] = "your-openai-key"

LLM을 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from ragas.llms import LangchainLLMWrapper
from langchain_openai import ChatOpenAI
from ragas.embeddings import OpenAIEmbeddings
import openai

evaluator_llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-4o"))
openai_client = openai.OpenAI()
evaluator_embeddings = OpenAIEmbeddings(client=openai_client)

AWS

langchain-aws 패키지를 설치해요.

pip install langchain-aws

그런 다음 AWS 자격 증명과 구성을 설정해야 해요.

config = {
    "credentials_profile_name": "your-profile-name",  # E.g "default"
    "region_name": "your-region-name",  # E.g. "us-east-1"
    "llm": "your-llm-model-id",  # E.g "anthropic.claude-3-5-sonnet-20241022-v2:0"
    "embeddings": "your-embedding-model-id",  # E.g "amazon.titan-embed-text-v2:0"
    "temperature": 0.4,
}

LLM을 정의하고 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from langchain_aws import ChatBedrockConverse
from langchain_aws import BedrockEmbeddings
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper

evaluator_llm = LangchainLLMWrapper(ChatBedrockConverse(
    credentials_profile_name=config["credentials_profile_name"],
    region_name=config["region_name"],
    base_url=f"https://bedrock-runtime.{config['region_name']}.amazonaws.com",
    model=config["llm"],
    temperature=config["temperature"],
))
evaluator_embeddings = LangchainEmbeddingsWrapper(BedrockEmbeddings(
    credentials_profile_name=config["credentials_profile_name"],
    region_name=config["region_name"],
    model_id=config["embeddings"],
))

다른 AWS 서비스를 사용하는 방법이 더 궁금하면 langchain-aws 문서를 참고하세요.

Google Cloud

Google은 모델에 접근하는 두 가지 방법을 제공해요: Google AI Studio와 Google Cloud Vertex AI. Google AI Studio는 Google 계정과 API 키만 있으면 되고, Vertex AI는 Google Cloud 계정이 필요해요. 처음 시작한다면 Google AI Studio를 사용하세요.

먼저 필요한 패키지(선택한 API에 따라 필요한 것만)를 설치해요:

# for Google AI Studio
pip install langchain-google-genai
# for Google Cloud Vertex AI
pip install langchain-google-vertexai

그런 다음 선택한 API에 맞춰 자격 증명을 설정해요: Google AI Studio의 경우:

import os
os.environ["GOOGLE_API_KEY"] = "your-google-ai-key"  # From https://ai.google.dev/

Google Cloud Vertex AI의 경우:

# Ensure you have credentials configured (gcloud, workload identity, etc.)
# Or set service account JSON path:
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/service-account.json"

구성을 정의해요:

config = {
    "model": "gemini-1.5-pro",  # or other model IDs
    "temperature": 0.4,
    "max_tokens": None,
    "top_p": 0.8,
    # For Vertex AI only:
    "project": "your-project-id",  # Required for Vertex AI
    "location": "us-central1",     # Required for Vertex AI
}

LLM을 초기화하고 ragas에서 쓰도록 감싸요:

from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper

# Choose the appropriate import based on your API:
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_google_vertexai import ChatVertexAI

# Initialize with Google AI Studio
evaluator_llm = LangchainLLMWrapper(ChatGoogleGenerativeAI(
    model=config["model"],
    temperature=config["temperature"],
    max_tokens=config["max_tokens"],
    top_p=config["top_p"],
))

# Or initialize with Vertex AI
evaluator_llm = LangchainLLMWrapper(ChatVertexAI(
    model=config["model"],
    temperature=config["temperature"],
    max_tokens=config["max_tokens"],
    top_p=config["top_p"],
    project=config["project"],
    location=config["location"],
))

선택적으로 안전 설정(safety settings)을 구성할 수 있어요:

from langchain_google_genai import HarmCategory, HarmBlockThreshold

safety_settings = {
    HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
    # Add other safety settings as needed
}

# Apply to your LLM initialization
evaluator_llm = LangchainLLMWrapper(ChatGoogleGenerativeAI(
    model=config["model"],
    temperature=config["temperature"],
    safety_settings=safety_settings,
))

임베딩을 초기화하고 ragas에서 쓰도록 감싸요(다음 중 하나 선택):

# Google AI Studio Embeddings
from langchain_google_genai import GoogleGenerativeAIEmbeddings

evaluator_embeddings = LangchainEmbeddingsWrapper(GoogleGenerativeAIEmbeddings(
    model="models/embedding-001",  # Google's text embedding model
    task_type="retrieval_document"  # Optional: specify the task type
))
# Vertex AI Embeddings
from langchain_google_vertexai import VertexAIEmbeddings

evaluator_embeddings = LangchainEmbeddingsWrapper(VertexAIEmbeddings(
    model_name="textembedding-gecko@001",  # or other available model
    project=config["project"],  # Your GCP project ID
    location=config["location"]  # Your GCP location
))

이용 가능한 모델, 기능, 구성에 대한 더 자세한 정보는 다음을 참고하세요: Google AI Studio documentation, Google Cloud Vertex AI documentation, LangChain Google AI integration, LangChain Vertex AI integration

Azure

langchain-openai 패키지를 설치해요.

pip install langchain-openai

Azure OpenAI 키가 준비되어 환경에 있도록 해요.

import os
os.environ["AZURE_OPENAI_API_KEY"] = "your-azure-openai-key"

# other configuration
azure_config = {
    "base_url": "",  # your endpoint
    "model_deployment": "",  # your model deployment name
    "model_name": "",  # your model name
    "embedding_deployment": "",  # your embedding deployment name
    "embedding_name": "",  # your embedding name
}

LLM을 정의하고 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from langchain_openai import AzureChatOpenAI
from langchain_openai import AzureOpenAIEmbeddings
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper
evaluator_llm = LangchainLLMWrapper(AzureChatOpenAI(
    openai_api_version="2023-05-15",
    azure_endpoint=azure_config["base_url"],
    azure_deployment=azure_config["model_deployment"],
    model=azure_config["model_name"],
    validate_base_url=False,
))

# init the embeddings for answer_relevancy, answer_correctness and answer_similarity
evaluator_embeddings = LangchainEmbeddingsWrapper(AzureOpenAIEmbeddings(
    openai_api_version="2023-05-15",
    azure_endpoint=azure_config["base_url"],
    azure_deployment=azure_config["embedding_deployment"],
    model=azure_config["embedding_name"],
))

다른 Azure 서비스를 사용하는 방법이 더 궁금하면 langchain-azure 문서를 참고하세요.

기타 제공자(Others)

다른 LLM 제공자를 사용하고 있고 LangChain으로 상호작용한다면, LLM을 LangchainLLMWrapper로 감싸 ragas에서 쓸 수 있게 해요.

from ragas.llms import LangchainLLMWrapper
evaluator_llm = LangchainLLMWrapper(your_llm_instance)

더 상세한 가이드는 모델 커스터마이징 가이드를 확인하세요.

LlamaIndex를 사용한다면 LlamaIndexLLMWrapper로 LLM을 감싸 ragas에서 쓸 수 있어요.

from ragas.llms import LlamaIndexLLMWrapper
evaluator_llm = LlamaIndexLLMWrapper(your_llm_instance)

LlamaIndex 사용법에 대한 더 자세한 내용은 LlamaIndex 통합 가이드를 참고하세요.

아직도 좋아하는 LLM 제공자에서 Ragas를 쓸 수 없다면 이 issue에 코멘트로 알려주세요. 지원을 추가해 드릴게요 🙂.

더 알아보기 (Learn more)