Claude와 함께하는 프롬프트 캐싱 도입: 비용 절감과 속도 향상 전략
- 최근 Anthropic은 Claude와 함께 사용할 수 있는 프롬프트 캐싱 기능을 도입하여 비용 절감과 속도 향상을 이루었습니다.
- Google의 Gemini API는 PDF 파일 처리와 프롬프트 캐싱을 포함하여 다양한 문서 처리 기능을 제공합니다.
- 컨텍스트 캐싱을 활용하여 효율적으로 파일을 처리하고 비용을 절감할 수 있으며, 이는 여러 파일의 처리에도 적용될 수 있습니다.
Claude와 함께하는 프롬프트 캐싱 도입: 비용 절감과 속도 향상 전략
최근 Anthropic은 Claude와 함께 사용할 수 있는 프롬프트 캐싱 기능을 도입했습니다. 이 기능은 긴 프롬프트의 경우 비용을 최대 90%까지 줄이고, 지연 시간을 최대 85%까지 감소시킬 수 있어 소규모의 RAG(Recurrent Attention Gate) 프로젝트에서 유용한 대안이 될 수 있습니다. 구글이 처음으로 API와 함께 컨텍스트 캐싱을 도입한 것처럼, 이번 기능도 비슷한 맥락에서 볼 수 있습니다.
Google의 Gemini API: PDF 처리와 프롬프트 캐싱
Google의 Gemini API는 PDF 파일을 사전 처리 없이 직접 처리할 수 있는 기능을 제공합니다. 이 API는 비전 기반 검색을 통해 문서에서 정보를 추출하는 '콜 폴리(Call Poly)'와 유사한 접근 방식을 구현한 것으로 보입니다. 이를 통해 외부의 사전 처리 라이브러리(Unstructured IO, LlamaPars 등)가 필요하지 않습니다. 최근 업그레이드로 인해 최대 1000페이지의 PDF 파일을 API에 업로드할 수 있게 되어, 대부분의 응용 프로그램에서 충분히 활용할 수 있는 수준이 되었습니다.
하지만 여전히 토큰 단위로 비용을 지불해야 하므로 PDF 파일을 여러 번 전송하게 됩니다. 이때, 컨텍스트 캐싱을 활용하면 토큰 비용을 절감할 수 있습니다. 이번 포스트에서는 컨텍스트 캐싱을 활용하여 효율적으로 PDF 파일을 처리하는 방법을 설명합니다.
Gemini API의 문서 처리 기능과 사양
Gemini API는 문서 처리에 있어 여러 가지 뛰어난 기능을 제공합니다. 공식 문서에 따르면, Gemini 1.5 Pro와 Flash 모델은 최대 3600페이지의 문서를 지원하며, 문서는 반드시 application/pdf
MIM 타입이어야 합니다. 각 문서 페이지는 258개의 토큰과 동일하며, 페이지의 픽셀 수는 중요하지 않지만, 큰 페이지는 비율을 유지하면서 3072x3072로 축소되고 작은 페이지는 768x768 픽셀로 확대됩니다. 따라서 페이지 해상도의 최소 및 최대 한계는 768x768에서 3072x3072 사이입니다.
몇 가지 주의사항으로는 PDF 파일을 전송하기 전에 페이지를 올바른 방향으로 회전시키고, 페이지가 깨끗한지 확인해야 합니다. 한 페이지만 사용하는 경우에는 프롬프트를 페이지 뒤에 배치하는 것이 좋습니다.
Gemini API를 활용한 문서 처리 튜토리얼
이번 포스트에서는 Gemini API를 활용한 문서 처리 방법에 대한 튜토리얼을 제공합니다. 이 API는 프로젝트당 최대 20GB의 파일을 저장할 수 있으며, 파일당 최대 크기는 2GB입니다. 파일은 48시간 동안 저장되며, 이 기간 동안 API 키를 사용하여 접근할 수 있지만 API에서 다운로드는 불가능합니다. 모든 지역에서 무료로 사용할 수 있습니다.
Gemini API 모델 중 하나인 Gemini Flash는 비교적 저렴한 비용을 요구하지만, 많은 토큰을 사용할 경우 비용이 빠르게 증가할 수 있습니다. 따라서 컨텍스트 캐싱을 사용하여 PDF 파일을 한 번만 전송하고 캐시에 저장하여 이후 호출에서 비용을 줄일 수 있습니다.
실험: Gemini API 활용
이번 실험에서는 두 개의 다른 파일을 사용합니다. 첫 번째는 Gemini 1.5 모델의 기술 보고서 PDF 파일이고, 두 번째는 "Unlocking Spell on Base LLMs: Rethinking Alignment via In-Context Learning"이라는 흥미로운 논문입니다. 첫 번째 논문은 약 77페이지이고, 두 번째 논문은 총 26페이지입니다. 이 실험은 다중 모달(multimodal) 기능을 테스트하는 데도 유용할 것입니다.
API 사용을 시작하려면 Google의 Generative AI 패키지를 설치하고 API 키를 가져와야 합니다. 그런 다음 PDF 파일을 업로드하고 이를 처리하는 데 필요한 URI를 생성합니다. 이 URI는 각 파일에 대해 고유하게 생성되며, 파일이 업로드된 후에는 48시간 동안 Google 클라우드에 유지됩니다.
첫 번째 단계에서는 PDF 파일을 직접 처리하고, 두 번째 단계에서는 컨텍스트 캐싱을 활성화하는 방법을 보여줍니다. Gemini 1.5 Pro 모델을 사용하여 파일을 업로드하고 처리하는 방법을 단계별로 설명합니다.
Gemini API의 고급 다중 모달 기능
Gemini API는 다중 모달 모델로, 문서 내 특정 그림을 직접 참조하여 설명할 수 있습니다. 예를 들어, 특정 실험 결과를 나타내는 그림을 언급하면, 모델은 그림의 내용을 해석하고 설명할 수 있습니다. 이와 같은 기능은 정보가 여러 곳에 분산되어 있을 때 매우 유용합니다.
여러 파일과 함께 작업하기
여러 파일을 업로드하고 처리하는 방법도 소개합니다. 여러 파일을 업로드할 때는 모델을 새로 생성하고, 콘텐츠 생성 함수 호출 시 파일 URI를 프롬프트의 일부로 추가합니다. 여러 파일을 포함한 프롬프트를 사용하여 더욱 다양한 실험을 할 수 있습니다.
컨텍스트 캐싱 설정 및 사용법
컨텍스트 캐싱을 사용하면 PDF 파일을 한 번만 전송하고 이후의 모든 요청에서 캐시된 콘텐츠를 사용할 수 있습니다. 이를 통해 비용을 절감할 수 있으며, Google 클라우드에 저장된 콘텐츠를 필요에 따라 호출할 수 있습니다.
컨텍스트 캐싱을 설정하려면 Generative AI Python 클라이언트를 사용하여 캐시를 생성하고 모델 이름, 시스템 지침, 콘텐츠를 제공하면 됩니다. 캐시의 유지 시간을 설정하고, 이후에는 캐시된 콘텐츠를 사용하여 프롬프트를 전송할 수 있습니다.
실용적인 활용 사례와 결론
프롬프트 캐싱은 새로운 패키지나 코드 베이스의 문서를 제공하고 이를 직접 검색할 수 있는 실용적인 활용 사례를 제공합니다. 이러한 접근 방식은 전통적인 RAG보다 훨씬 효율적일 수 있습니다. 그러나 더 큰 문서의 경우 여전히 RAG의 유용성이 큽니다. RAG를 사용할 때는 문서 저장 비용이 상당할 수 있다는 점을 염두에 두어야 합니다.
Google, Cloud, Anthropic 팀, Cohere 팀은 매우 흥미로운 업데이트를 제공하고 있으며, 이에 대한 추가 비디오도 준비 중입니다. RAG 에이전트와 같은 주제에 관심이 있다면 채널을 구독하여 최신 정보를 받아보세요. 이번 포스트가 유익했기를 바랍니다. 감사합니다!