Tavily: LLM을 위한 최적화된 검색 API

woody.ahn·2024년 8월 1일
2
post-thumbnail

시작하며

대규모 언어 모델(Large Language Models, LLMs)은 자연어 처리 분야에서 혁명적인 발전을 이루었지만, 여전히 중요한 한계점을 가지고 있습니다. 그 중 하나는 최신 정보 처리의 어려움입니다.
대부분의 LLM은 특정 시점까지의 데이터로 학습되어 있어, 그 이후의 정보나 실시간 변화하는 상황에 대해 정확한 답변을 제공하기 어렵습니다.

OpenAI의 GPT-4: 2023년 4월까지의 데이터
Anthropic의 Claude: 2024년 4월까지의 데이터

이러한 한계를 극복하기 위해 RAG(Retrieval-Augmented Generation) 기술이 주목받고 있으며, 이 과정에서 효과적인 검색 도구의 중요성이 부각되고 있습니다.

다음은 gpt-4o-mini를 사용하여 최신 정보를 요청했을 때의 한계를 보여주는 예시입니다.

gpt-4o-mini에게 "2024년 한국 뮤지컬 시카고의 주연 배우는 누구인가요?" 라고 질문을 해 봅시다.

import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

# OpenAI API Key
os.environ["OPENAI_API_KEY"] = (
    "your-api-key"
)

prompt = ChatPromptTemplate.from_messages([("user", "{question}")])
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

chain = prompt | llm

result = chain.invoke(
    {"question": "2024년 한국 뮤지컬 시카고의 주연 배우들은 누구인가요?"}
)

print(result.content)

이 질문에 대한 AI의 답변은 대체로 다음과 같습니다:

2024년 한국 뮤지컬 "시카고"의 주연 배우들은 아직 공식적으로 발표되지 않았습니다. 뮤지컬 캐스팅은 공연 일정에 따라 변동이 있을 수 있으므로, 최신 정보를 확인하려면 공식 웹사이트나 관련 뉴스 매체를 참고하는 것이 좋습니다.

Tavily 소개

Tavily Search API는 LLM과 RAG 시스템에 최적화된 검색 엔진입니다. 기존의 일반 검색 엔진들과 달리, Tavily는 AI 애플리케이션의 요구사항에 맞춰 설계되었습니다.

Tavily의 주요 특징

  • AI 최적화: LLM과의 원활한 통합을 위해 설계되었습니다.
  • 최신 정보: 실시간으로 업데이트되는 정보를 제공합니다.
  • 다양한 검색 모드: 일반 검색, 뉴스 검색, 이미지 검색 등 다양한 모드를 제공합니다.
  • 콘텐츠 필터링: 신뢰할 수 있는 소스의 정보만을 제공합니다.
  • 무료 사용량: 월 1,000회의 무료 API 호출을 제공합니다.

Tavily 사용하기

Tavily를 사용하기 위해서는 먼저 API 키를 발급받아야 합니다. Tavily 웹사이트에서 회원가입 후 API 키를 얻을 수 있습니다.

기본 사용 예시

LangChain의 TavilySearchAPIRetriever를 사용하여 Tavily를 쉽게 활용할 수 있습니다. 다음은 기본적인 사용 예시입니다:

import os
from langchain_community.retrievers import TavilySearchAPIRetriever


# Tavily API key
os.environ["TAVILY_API_KEY"] = "your-api-key"

retriever = TavilySearchAPIRetriever(k=3)
result = retriever.invoke("2024년 한국 뮤지컬 시카고의 주연 배우들은 누구인가요?")

print(result)

이 코드는 관련성 높은 상위 3개의 문서를 반환합니다. 각 문서에는 제목, 출처, 관련성 점수, 그리고 페이지 내용이 포함됩니다.

[
  Document(
    metadata={
      'title': '"2024 뮤지컬 시카고 완벽 가이드: 줄거리, 캐스팅, 공연장, 좌석배치도, 예매 방법, 티켓 가격 및 할인 정보 총정리"', 
      'source': 'https://blog.naver.com/PostView.naver?blogId=fightlovemann&logNo=223477200781&noTrackingCode=true', 
      'score': 0.99981904,
      'images': []
    }, 
    page_content='2024 뮤지컬 〈시카고〉 한국 프로덕션은 역사상 최고 성적을 낸 2021년 주, 조연 멤버 최정원, 윤공주, 아이비, 티파니 영, 민경아, 박건형, 최재림, 김영주, 김경선, 차정현, S.J.Kim과 오디션을 거쳐 새롭게 합류한 정선아 (벨마 켈리 役)와 앙상블이 함께한다.'
  ), 
  Document(
    metadata={
      'title': '[풀영상] 2024 뮤지컬 ′시카고′ 주연배우 인터뷰|최정원·윤공주·정선아·아이비·티파니 영·민경아·박건형·최재림|Musical ...', 
      'source': 'https://m.korean-vibe.com/news/newsview.php?ncode=179573404581419', 
      'score': 0.99974084, 
      'images': []
    }, 
    page_content='#최재림 #민경아 #뮤지컬시카고 2024년 5월 23일 뮤지컬 ′시카고′의 연습실 장면이 공개됐다. 이번 시즌에서는 배우 최재림과 박건형, 최정원, 윤공주, 민경아, 티파니 영 등 기존 시즌 출연진들이 다시 참여했다. 2024 뮤지컬 ′시카고′는 오는 6월 7일 개막한다. On May 23, 2024, a rehearsal room scene f ...'
  ), 
  Document(
    metadata={
      'title': '2024 뮤지컬 시카고 줄거리 및 캐스팅, 티켓 예매(추가정보 업데이트) - blvl blog', 
      'source': 'https://blvlblog.com/2024-뮤지컬-시카고-줄거리-및-캐스팅-예매-티켓-오픈3차/', 
      'score': 0.99908894, 
      'images': []
    },
    page_content='뮤지컬 시카고 공연 정보. 2024년 뮤지컬 시카고가 돌아왔습니다. 코로나 펜데믹에도 불구, 2021 뮤지컬 시카고 한국 프로덕션 최고 흥행 기록을 새로 쓴 멤버들과 새롭게 오디션을 통해 합류하게된 뮤지컬 디바 정선아(벨마 켈리 역)와 앙상블 그리고 2007년 뮤지컬 시카고 레플리카 프로뎍션 첫 ...'
  )
]

고급 기능: 검색 모드 설정

Tavily는 다양한 검색 모드를 제공합니다. 예를 들어, 뉴스 검색 모드를 사용하려면 다음과 같이 설정할 수 있습니다:

retriever = TavilySearchAPIRetriever(
    k=3, search_depth="advanced", include_domains=["news"]
)

이렇게 설정하면 뉴스 도메인에서만 정보를 검색하게 됩니다.

LLM과 Tavily 통합하기

Tavily의 진정한 가치는 LLM과 통합했을 때 발휘됩니다. 다음은 OpenAI의 gpt-4o-mini와 Tavily를 결합하는 예시입니다.

import os
from langchain_openai import ChatOpenAI
from langchain_community.retrievers import TavilySearchAPIRetriever
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough

# OpenAI API Key
os.environ["OPENAI_API_KEY"] = (
    "your-open-api-key"
)

# Tavily API key
os.environ["TAVILY_API_KEY"] = "your-tavily-api-key"


def format_docs(docs):
    return "\n\n".join([d.page_content for d in docs])


template = """Answer the question based only on the following context:

{context}

Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
retriever = TavilySearchAPIRetriever(k=3)

chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | llm
)

result = chain.invoke("2024년 한국 뮤지컬 시카고의 주연 배우들은 누구인가요?")

print(result.content)

이 예시에서는 Tavily가 검색한 최신 정보를 바탕으로 gpt-4o-mini가 응답을 생성합니다. 이를 통해 LLM의 지식 기반을 실시간으로 확장할 수 있습니다.

2024년 한국 뮤지컬 '시카고'의 주연 배우로는 최재림, 박건형, 최정원, 윤공주, 민경아, 티파니 영 등이 참여합니다.

Tavily의 장점

  • 정확성: AI에 최적화된 검색 결과를 제공하여 LLM의 응답 정확도를 높입니다.
  • 최신성: 실시간으로 업데이트되는 정보를 제공하여 LLM의 지식 기반을 확장합니다.
  • 유연성: 다양한 검색 모드와 옵션을 제공하여 다양한 사용 사례에 대응할 수 있습니다.
  • 신뢰성: 신뢰할 수 있는 소스의 정보만을 제공하여 잘못된 정보의 전파를 방지합니다.
  • 비용 효율성: 무료 사용량을 제공하여 소규모 프로젝트나 실험에 적합합니다.

결론

Tavily Search API는 LLM과 RAG 시스템을 위한 강력한 도구입니다. 최신 정보에 대한 접근성을 제공함으로써, LLM의 한계를 극복하고 더욱 정확하고 시의적절한 응답을 생성할 수 있게 합니다.
Tavily를 활용하면 뉴스 요약, 실시간 시장 분석, 최신 트렌드 파악 등 다양한 분야에서 LLM의 성능을 크게 향상시킬 수 있습니다.

profile
developer

2개의 댓글

comment-user-thumbnail
2025년 5월 30일

우디님 팬입니다!

답글 달기
comment-user-thumbnail
2025년 9월 3일

This is a fairly new content. It is rare jacksmith.

답글 달기