에어비앤비 숙소 리스팅 향상: GPT-4o 미니 vs. Anthropic의 3.5 소네트 in Agentic RAG
GPT-4o Mini와 Anthropic의 3.5 Sonnet의 성능을 탐색하여 Airbnb 숙소 설명을 위한 에이전트를 만드는 방법을 알아보세요. Llama Index와 VectorDB를 사용하여 실용적인 데이터셋, 임베딩 및 에이전트 RAG 파이프라인을 설정하는 방법을 배우세요. 이 포괄적인 비교를 통해 각 모델의 강점과 한계를 발견하세요.
2025년 2월 16일

OpenAI의 최신 GPT-4o Mini 모델이 Agentic RAG, 정보 검색을 위한 강력한 기술에 대한 에이전트 생성에서 어떤 성능을 보이는지 알아보세요. 이 블로그 게시물은 실제 Airbnb 데이터셋을 사용하여 각 모델의 기능과 한계를 에이전트 워크플로에서 보여주는 Anthropic Cloud 3.5 Sonnet 모델과의 실용적인 비교를 제공합니다.
GPT-4o Mini 소개: 에이전트 RAG를 위한 비용 효율적인 모델
환경 및 데이터 설정
Airbnb 데이터셋 임베딩
벡터 스토어 및 쿼리 엔진 도구 만들기
에이전트 워커 구현
GPT-4o Mini와 Cloud 3.5 Sonnet 에이전트 비교
결론
GPT-4o Mini 소개: 에이전트 RAG를 위한 비용 효율적인 모델
GPT-4o Mini 소개: 에이전트 RAG를 위한 비용 효율적인 모델
GPT-4o Mini는 OpenAI의 최신이자 가장 비용 효율적인 모델 중 하나이며, 가격 범위 내에서 가장 우수한 성능을 보이는 모델 중 하나입니다. 그러나 이 모델이 에이전트 생성, 특히 에이전트 기반 Retrieval-Augmented Generation (RAG)에 얼마나 좋은지에 대한 의문이 남습니다.
이 섹션에서는 GPT-4o Mini의 성능을 Anthropic Cloud 3.5 Sonnet 모델과 비교해 볼 것입니다. Anthropic Cloud 3.5 Sonnet 모델은 에이전트 기반 RAG에 널리 사용되는 모델입니다. 우리는 MongoDB의 Airbnb 임베딩 데이터 세트와 같은 실용적인 데이터 세트를 사용하여 이러한 모델의 기능을 테스트할 것입니다.
데이터 세트에는 다양한 메타데이터 열이 포함되어 있으며, 우리는 데이터를 전처리하여 RAG 파이프라인에 적합한 입력을 만들 것입니다. Llama Index를 사용하여 RAG 구현을 설정하고 에이전트 기능을 활용할 것입니다.
LLM 또는 에이전트의 경우 GPT-4o Mini와 Cloud 3.5 Sonnet를 모두 사용할 것이며, VectorDB의 경우 ChromaDB를 사용할 것입니다. 설치해야 하는 라이브러리, 환경 변수 설정, LLM 및 임베딩 모델 구성 등 설정 과정을 안내할 것입니다.
환경 설정을 마친 후에는 데이터 로드 및 처리 단계로 들어가, RAG 파이프라인에 필요한 데이터 구조를 만들 것입니다. 이에는 데이터를 pandas DataFrame으로 변환하고, 기존 텍스트 임베딩을 삭제하며, 임베딩 프로세스에 사용할 메타데이터 템플릿을 만드는 작업이 포함됩니다.
마지막으로 ChromaDB를 사용하여 벡터 스토어를 설정하고 에이전트가 사용할 쿼리 엔진 도구를 정의할 것입니다. 그런 다음 에이전트 작업자를 만들고 채팅 기능을 사용하여 상호 작용하면서 GPT-4o Mini와 Cloud 3.5 Sonnet의 에이전트 기반 RAG 작업 성능을 비교할 것입니다.
이 섹션을 마치면 GPT-4o Mini의 에이전트 기반 RAG 기능과 더 강력한 Cloud 3.5 Sonnet 모델과의 비교에 대한 이해도가 높아질 것입니다.
환경 및 데이터 설정
환경 및 데이터 설정
시작하려면 먼저 필요한 라이브러리와 환경 변수를 설정해야 합니다. Llama Index, OpenAI, ChromaDB 등 필요한 패키지를 설치할 것입니다.
다음으로 OpenAI API 키와 Hugging Face 토큰(필요한 경우)과 같은 환경 변수를 구성할 것입니다.
그런 다음 LLM(Language Model)과 임베딩 모델을 설정할 것입니다. LLM으로는 GPT-4 OM Mini 모델을 사용할 것이며, 임베딩의 경우 OpenAI TextEmbedding3 small 모델을 사용하여 계산 및 저장 비용을 줄일 수 있도록 할 것입니다.
모델 설정을 마치면 데이터 로드 및 처리 단계로 넘어갈 것입니다. MongoDB의 Airbnb 임베딩 데이터 세트를 사용할 것이며, 처리 시간과 비용을 관리하기 위해 초기 2,000개의 데이터 포인트에 초점을 맞출 것입니다.
기존 텍스트 임베딩을 삭제하고 OpenAI 임베딩을 사용하여 자체 임베딩 벡터를 생성할 것입니다. 또한 목록 이름, 요약, 숙소 규칙, 부동산 유형, 객실 유형, 침실 및 침대 수와 같은 관련 메타데이터를 추출할 것입니다. 이 메타데이터는 검색 프로세스 중에 LLM이 볼 텍스트를 풍부하게 하는 데 사용될 것입니다.
벡터 스토어에 데이터를 준비하기 위해 텍스트를 5,000자 청크로 분할하고 텍스트, 임베딩 벡터, 메타데이터를 포함하는 노드를 만들 것입니다. 마지막으로 ChromaDB 벡터 스토어를 설정하여 노드를 저장하고, 에이전트 기반 RAG(Retrieval-Augmented Generation) 워크플로우의 지식 베이스로 사용할 것입니다.
Airbnb 데이터셋 임베딩
Airbnb 데이터셋 임베딩
Airbnb 데이터 세트를 임베딩하기 위해 먼저 데이터 세트를 JSON 문서 목록으로 변환합니다. 그런 다음 Airbnb 목록의 이름, 요약, 숙소 규칙, 부동산 유형, 객실 유형, 침실 유형, 침실 수, 침대 수와 같은 중요한 정보를 포함하는 메타데이터 템플릿을 만듭니다. 이 메타데이터는 임베딩될 텍스트에 추가됩니다.
다음으로 각 임베딩 벡터가 관련 정보를 캡처할 수 있도록 텍스트를 5,000자 청크로 분할합니다. 그런 다음 계산 및 저장 비용을 줄이기 위해 임베딩 크기를 사용자 정의할 수 있는 OpenAI TextEmbedding3 small 모델을 사용하여 임베딩을 계산합니다.
임베딩을 계산한 후에는 ChromaDB 벡터 스토어에 저장합니다. 이 벡터 스토어는 에이전트의 지식 베이스 역할을 할 것입니다. QueryEngineToolClass를 만들어 에이전트가 벡터 스토어에 액세스하고 사용자 쿼리에 가장 관련성 있는 텍스트 청크를 검색할 수 있도록 합니다.
데이터를 전처리하고 메타데이터 템플릿을 만들며 벡터 스토어를 설정함으로써 Airbnb 데이터 세트를 Llama Index 에이전트에 사용할 수 있도록 준비했습니다. 이 프로세스를 통해 에이전트가 사용자 쿼리에 대한 정확하고 정보가 풍부한 응답을 제공할 수 있는 필요한 정보에 액세스할 수 있게 되었습니다.
벡터 스토어 및 쿼리 엔진 도구 만들기
벡터 스토어 및 쿼리 엔진 도구 만들기
시작하려면 먼저 필요한 라이브러리와 환경 변수를 설정해야 합니다. Llama Index, ChromaDB, OpenAI 모델 등 필요한 패키지를 설치할 것입니다.
다음으로 LLM과 임베딩 모델을 설정할 것입니다. LLM으로는 GPT-4 OM Mini 모델을, 임베딩으로는 OpenAI TextEmbedding3 small 모델을 사용할 것입니다.
그런 다음 Airbnb 데이터 세트를 로드하고 전처리할 것입니다. 기존 텍스트 임베딩을 삭제하고 메타데이터가 풍부한 텍스트 청크를 만들 것입니다. 이 청크는 임베딩되어 ChromaDB 벡터 스토어에 저장될 것입니다.
쿼리 엔진 도구를 만들기 위해 Llama Index의 QueryEngine
도구 클래스를 사용할 것입니다. 이 도구는 벡터 스토어에 액세스하고 주어진 쿼리에 대해 가장 유사한 상위 k개의 청크를 검색할 수 있습니다. 이 도구를 에이전트의 지식 베이스의 일부로 정의할 것입니다.
마지막으로 LLM과 쿼리 엔진 도구를 결합하여 에이전트 작업자를 만들 것입니다. 이를 통해 에이전트와 상호 작용하고 주어진 위치에 대한 최고의 Airbnb 목록을 검색할 수 있습니다.
이 프로세스의 핵심 단계는 다음과 같습니다:
- 필요한 라이브러리와 환경 변수 설정
- LLM과 임베딩 모델 구성
- Airbnb 데이터 세트 로드 및 전처리
- ChromaDB를 사용하여 벡터 스토어 생성
- 쿼리 엔진 도구 정의 및 에이전트의 지식 베이스에 추가
- LLM과 쿼리 엔진 도구를 결합하여 에이전트 작업자 생성
이러한 단계를 통해 Airbnb 데이터 세트에 대한 에이전트 기반 RAG 작업에 GPT-4 OM Mini 모델을 사용할 수 있는 필요한 인프라를 구축했습니다.
에이전트 워커 구현
에이전트 워커 구현
에이전트 작업자를 만들기 위해 먼저 에이전트에게 사용 가능한 도구를 정의합니다. 이 경우 Llama Index의 QueryEngineToolV2
클래스를 사용하여 이전에 만든 벡터 스토어에 대한 액세스를 제공합니다.
query_engine_tool = QueryEngineToolV2(
"Knowledge base",
"Provides information about Airbnb listings and reviews, use a detailed plain text question as input to the tool.",
self.vector_store
)
tools = [query_engine_tool]
다음으로 Llama Index의 FunctionCallingAgentWorker
클래스를 사용하여 에이전트 작업자를 만듭니다. 도구 목록과 언어 모델(이 경우 GPT-4 Mini)을 에이전트 작업자에게 제공합니다.
agent_worker = FunctionCallingAgentWorker(
tools,
self.llm,
verbose=True
)
self.agent = agent_worker
이제 에이전트의 chat
기능을 사용하여 에이전트와 상호 작용할 수 있습니다. 에이전트에게 프롬프트를 제공하면 도구를 사용하여 응답을 생성합니다.
prompt = "Tell me the best listing for a place in New York."
result = self.agent.chat(prompt)
print(result)
에이전트의 응답에는 사고 과정과 최종 답변이 포함됩니다. 이 경우 GPT-4 Mini 에이전트의 응답은 Anthropic 3.5 Sonnet 에이전트의 응답만큼 자세하거나 통찰력 있지 않습니다.
성능을 비교하기 위해 "What is the worst Airbnb listing in Miami?"와 같은 다른 프롬프트를 시도할 수도 있습니다. Anthropic 3.5 Sonnet 에이전트는 더 깊이 있고 미묘한 응답을 제공하며, 지식 베이스의 한계를 인정하고 뉴욕과 마이애미의 휴가 임대 차이에 대한 일반적인 통찰을 제공합니다.
전반적으로 Llama Index를 사용한 에이전트 작업자 구현은 간단하지만, 에이전트의 성능은 기본 언어 모델의 기능에 따라 달라집니다. Anthropic 3.5 Sonnet 모델은 GPT-4 Mini 모델보다 에이전트 워크플로우에 더 적합한 것으로 보입니다.
GPT-4o Mini와 Cloud 3.5 Sonnet 에이전트 비교
GPT-4o Mini와 Cloud 3.5 Sonnet 에이전트 비교
이 섹션에서는 MongoDB의 Airbnb 임베딩 데이터 세트를 사용하여 실용적인 에이전트 기반 RAG(Retrieval Augmented Generation) 워크플로우에서 GPT-4o Mini와 Cloud 3.5
자주하는 질문
자주하는 질문