Tokenizers
Tokenizers (토크나이저)
Ragas가 지식 그래프 작업이나 테스트 데이터 생성 시 텍스트를 청크로 쪼갤 때 사용하는 여러 토크나이저 구현에 대한 문서예요. 기본값은 OpenAI의 tiktoken이고, 오픈소스 모델과 더 잘 맞는 HuggingFace 토크나이저도 쓸 수 있어요.
출처: 문서
본문
개요
지식 그래프 노드에서 속성을 추출할 때 텍스트는 토큰 한도에 맞춰 청크로 나뉘어요. 기본적으로 Ragas는 tiktoken(OpenAI의 토크나이저)을 사용하지만, 오픈소스 모델과의 호환성이 좋은 HuggingFace 토크나이저도 사용할 수 있어요.
사용 가능한 토크나이저
TiktokenWrapper
OpenAI의 tiktoken 토크나이저를 감싸는 래퍼예요. 기본 토크나이저입니다.
from ragas import TiktokenWrapper
# Using default encoding (o200k_base)
tokenizer = TiktokenWrapper()
# Using a specific encoding
tokenizer = TiktokenWrapper(encoding_name="cl100k_base")
# Using encoding for a specific model
tokenizer = TiktokenWrapper(model_name="gpt-4")
HuggingFaceTokenizer
HuggingFace transformers 토크나이저를 감싸는 래퍼예요. 오픈소스 모델을 쓸 때 사용합니다.
from ragas import HuggingFaceTokenizer
# Load tokenizer for a specific model
tokenizer = HuggingFaceTokenizer(model_name="meta-llama/Llama-2-7b-hf")
# Use a pre-initialized tokenizer
from transformers import AutoTokenizer
hf_tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-v0.1")
tokenizer = HuggingFaceTokenizer(tokenizer=hf_tokenizer)
참고: HuggingFace 토크나이저는 transformers 패키지가 필요해요. 설치 명령은 다음과 같아요.
pip install transformers
# or
uv add transformers
팩토리 함수
get_tokenizer()를 쓰면 토크나이저를 간편하게 만들 수 있어요.
from ragas import get_tokenizer
# Default tiktoken tokenizer
tokenizer = get_tokenizer()
# Tiktoken for a specific model
tokenizer = get_tokenizer("tiktoken", model_name="gpt-4")
# HuggingFace tokenizer
tokenizer = get_tokenizer("huggingface", model_name="meta-llama/Llama-2-7b-hf")
커스텀 토크나이저 사용하기
LLM 기반 추출기와 함께 쓰기
LLM 기반 추출기는 모두 tokenizer 파라미터를 받아요.
from ragas import HuggingFaceTokenizer
from ragas.testset.transforms import (
SummaryExtractor,
KeyphrasesExtractor,
HeadlinesExtractor,
)
# Create a HuggingFace tokenizer for your model
tokenizer = HuggingFaceTokenizer(model_name="meta-llama/Llama-2-7b-hf")
# Use it with extractors
summary_extractor = SummaryExtractor(llm=your_llm, tokenizer=tokenizer)
keyphrase_extractor = KeyphrasesExtractor(llm=your_llm, tokenizer=tokenizer)
headlines_extractor = HeadlinesExtractor(llm=your_llm, tokenizer=tokenizer)
커스텀 토크나이저 구현
BaseTokenizer를 상속하면 나만의 토크나이저를 만들 수 있어요.
from ragas.tokenizers import BaseTokenizer
class MyCustomTokenizer(BaseTokenizer):
def __init__(self, ...):
# Initialize your tokenizer
pass
def encode(self, text: str) -> list[int]:
# Return token IDs
pass
def decode(self, tokens: list[int]) -> str:
# Return decoded text
pass
API 레퍼런스
encode(text: str) -> List[int]