모델 커스터마이즈하기

모델 커스터마이즈하기 (Customise models)

Ragas는 평가와 합성 데이터 생성에 LLM과 임베딩을 사용할 수 있어요. 이 두 모델 모두 본인의 환경에 맞게 커스터마이즈할 수 있어요.

출처: 문서

본문

Ragas는 평가와 합성 데이터 생성에 LLM과/또는 임베딩을 사용해요. 이 두 모델은 모두 본인의 환경에 따라 커스터마이즈할 수 있어요.

Ragas는 여러 프로바이더를 지원하는 팩토리 함수(llm_factoryembedding_factory)를 제공해요.

  • 직접 프로바이더 지원: OpenAI, Anthropic, Google
  • LiteLLM을 통한 기타 프로바이더: Azure OpenAI, AWS Bedrock, Google Vertex AI 등 100개 이상의 프로바이더

팩토리 함수는 구조화 출력을 위해 Instructor 라이브러리를, 여러 LLM 프로바이더에 대한 통합 접근을 위해 LiteLLM을 사용해요.

시스템 프롬프트

모든 평가에서 LLM 동작을 커스터마이즈하도록 시스템 프롬프트를 제공할 수 있어요.

from ragas.llms import llm_factory
from openai import OpenAI

client = OpenAI(api_key="your-key")
llm = llm_factory(
    "gpt-4o",
    client=client,
    system_prompt="You are a helpful assistant that evaluates RAG systems."
)

시스템 프롬프트는 특히 다음과 같은 경우 유용해요.

  • 특정 시스템 지침을 기대하는 파인튜닝 모델
  • 평가 동작을 일관되게 안내하기
  • 제대로 작동하도록 커스텀 프롬프트가 필요한 모델

예제

Azure OpenAI

pip install litellm
import litellm
from ragas.llms import llm_factory
from ragas.embeddings.base import embedding_factory

azure_configs = {
    "api_base": "https://<your-endpoint>.openai.azure.com/",
    "api_key": "your-api-key",
    "api_version": "2024-02-15-preview",
    "model_deployment": "your-deployment-name",
    "embedding_deployment": "your-embedding-deployment-name",
}

# LiteLLM을 Azure OpenAI용으로 구성 (LLM 호출에 사용)
litellm.api_base = azure_configs["api_base"]
litellm.api_key = azure_configs["api_key"]
litellm.api_version = azure_configs["api_version"]

# litellm 프로바이더로 llm_factory를 사용해 LLM 생성
# 참고: Azure는 모델 이름이 아닌 deployment 이름을 사용
# 중요: 모듈이 아닌 litellm.completion (함수)를 전달
azure_llm = llm_factory(
    f"azure/{azure_configs['model_deployment']}",
    provider="litellm",
    client=litellm.completion,
    # 선택: 시스템 프롬프트 추가
    # system_prompt="You are a helpful assistant that evaluates RAG systems."
)

# embedding_factory로 임베딩 생성
# 참고: Azure 구성을 embedding_factory에 직접 전달
azure_embeddings = embedding_factory(
    "litellm",
    model=f"azure/{azure_configs['embedding_deployment']}",
    api_base=azure_configs["api_base"],
    api_key=azure_configs["api_key"],
    api_version=azure_configs["api_version"],
)

Yay! 이제 Azure OpenAI 엔드포인트와 함께 ragas를 사용할 준비가 됐어요.

Google Vertex

pip install litellm google-cloud-aiplatform
import litellm
import os
from ragas.llms import llm_factory
from ragas.embeddings.base import embedding_factory

config = {
    "project_id": "<your-project-id>",
    "location": "us-central1",  # e.g., "us-central1", "us-east1"
    "chat_model_id": "gemini-1.5-pro-002",
    "embedding_model_id": "text-embedding-005",
}

# Vertex AI용 환경 변수 설정 (litellm 사용)
os.environ["VERTEXAI_PROJECT"] = config["project_id"]
os.environ["VERTEXAI_LOCATION"] = config["location"]

# litellm 프로바이더로 llm_factory를 사용해 LLM 생성
# 중요: 모듈이 아닌 litellm.completion (함수)를 전달
vertex_llm = llm_factory(
    f"vertex_ai/{config['chat_model_id']}",
    provider="litellm",
    client=litellm.completion,
    # 선택: 시스템 프롬프트 추가
    # system_prompt="You are a helpful assistant that evaluates RAG systems."
)

# embedding_factory로 임베딩 생성
# 참고: 임베딩은 위에서 설정한 환경 변수를 사용
vertex_embeddings = embedding_factory(
    "litellm",
    model=f"vertex_ai/{config['embedding_model_id']}",
)

Yay! 이제 Google VertexAI 엔드포인트와 함께 ragas를 사용할 준비가 됐어요.

AWS Bedrock

pip install litellm
import litellm
import os
from ragas.llms import llm_factory
from ragas.embeddings.base import embedding_factory

config = {
    "region_name": "us-east-1",  # E.g. "us-east-1"
    "llm": "anthropic.claude-3-5-sonnet-20241022-v2:0",  # Your LLM model ID
    "embeddings": "amazon.titan-embed-text-v2:0",  # Your embedding model ID
    "temperature": 0.4,
}

# AWS 자격 증명을 환경 변수로 설정
# 옵션 1: AWS 자격 증명 파일(~/.aws/credentials) 사용
# 옵션 2: 환경 변수 직접 설정
os.environ["AWS_REGION_NAME"] = config["region_name"]
# os.environ["AWS_ACCESS_KEY_ID"] = "your-access-key"
# os.environ["AWS_SECRET_ACCESS_KEY"] = "your-secret-key"

# litellm 프로바이더로 llm_factory를 사용해 LLM 생성
# 중요: 모듈이 아닌 litellm.completion (함수)를 전달
bedrock_llm = llm_factory(
    f"bedrock/{config['llm']}",
    provider="litellm",
    client=litellm.completion,
    temperature=config["temperature"],
    # 선택: 시스템 프롬프트 추가
    # system_prompt="You are a helpful assistant that evaluates RAG systems."
)

# embedding_factory로 임베딩 생성
# 참고: 임베딩은 위에서 설정한 환경 변수를 사용
bedrock_embeddings = embedding_factory(
    "litellm",
    model=f"bedrock/{config['embeddings']}",
)

Yay! 이제 AWS Bedrock 엔드포인트와 함께 ragas를 사용할 준비가 됐어요.

더 알아보기 (Learn more)