최근 유행하는 Perplexity의 기술적 작동원리에 대해서 간단히 알아보겠습니다. 특히 프롬프트 엔지니어링 측면에서 어떤 기술들이 웹 검색 기반의 LLM 서비스에 사용되었는지 살펴보겠습니다.
Perplexity는 웹 검색 결과를 바탕으로 구조화된 양질의 답변을 해주는 LLM 서비스입니다. 최근 오픈AI에서도 이와 비슷한 써치GPT란 기능을 발표했고, 구글에서도 API로 구글 검색이 통합된 제미나이 응답 결과를 받을 수 있는 새로운 기능도 출시했습니다. 그래서 이런 웹검색 기반의 LLM 서비스들의 경쟁이 치열해지고 있는 양상인데요. 이 경쟁의 끝이 어떻게 될지는 알 수 없겠으나, 최근 굉장히 핫한 주제인 만큼 프롬프트 엔지니어링 측면에서 어떠한 기술들이 적용되었는지 알아보면 좋겠죠.
먼저, Perplexity와 같은 웹 검색 기반의 대규모 언어 모델(LLM) 서비스는 기본적으로 RAG 기술이 적용되어 있습니다. RAG는 ‘Retrieval Augmented Generation’의 약자로, AI가 답변을 생성할 때 외부의 벡터 데이터베이스에서 관련 정보를 검색하여 이를 바탕으로 답변을 만들어내는 방식입니다. RAG가 개발된 초기에는 PDF와 같은 정적인 문서를 기반으로 사용자 요청에 대한 답변을 생성하는 방식으로 사용되었으며, ChatPDF와 같은 서비스가 이에 해당합니다. ChatPDF는 사용자가 업로드한 PDF 문서를 바탕으로 LLM이 사용자의 질문에 대한 답변을 제공하는 서비스입니다. 이후, Perplexity와 같은 서비스들이 등장하면서 RAG는 웹 검색을 기반으로 실시간 정보를 제공하는 방식으로 발전했습니다.
RAG의 동작 원리는 다음과 같습니다. 웹 검색을 통해 얻은 정보를 벡터 데이터베이스에 저장한 후, 사용자의 질문과 가장 관련성이 높은 정보를 추출하여 답변을 생성하는 방식입니다. 간단히 말하자면, 이는 웹 검색 기능과 RAG의 통합으로 이해할 수 있습니다. 기존에는 PDF와 같은 문서만 RAG로 호출할 수 있었던 반면, 이제는 웹 검색 결과까지 포함하여 더 많은 데이터를 활용할 수 있게 된 것입니다.
예를 들어, “오픈AI 파인튜닝 무료 학습 제공 기간은 언제인가요?”라는 질문을 던지면, Perplexity는 웹 검색 데이터를 통해 다양한 소스의 정보를 찾아서 답변을 제공합니다. 이 과정에서 검색된 결과는 외부 벡터 데이터베이스에 저장되며, 이후 RAG로 호출되어 LLM의 프롬프트(즉, 시스템에 주입되는 기본 정보)로 활용됩니다. 이러한 방식으로 LLM은 최신 정보를 기반으로 한 답변을 생성할 수 있게 되는 것입니다.
Perplexity와 같은 웹 검색 기반 서비스들은 RAG 외에도 ART(Automatic Reasoning and Tool-use)를 활용합니다. ART는 사용자의 요청에 대해 스스로 생각하여, 웹 검색이나 기타 적합한 도구를 사용할지 판단하는 기술입니다. 웹 검색이 필요한 경우, AI는 웹 검색을 실행하고 검색 결과를 바탕으로 답변을 추론해 제공하며, 반면 웹 검색이 필요하지 않다면 AI는 자체 데이터만으로도 답변을 생성합니다. 이 과정에서 검색 결과가 많을 경우 RAG가 사용되어 필요한 정보만 추출함으로써, 토큰 비용을 절감하고 LLM의 성능을 최적화하는 효과를 얻을 수 있습니다.
이러한 RAG와 Perplexity의 활용에도 불구하고 몇 가지 한계점이 존재합니다. 예를 들어, 특정 정보의 오래된 버전과 최신 버전이 모두 존재하는 등 서로 다른 정보가 웹 검색 데이터에 존재한다면, RAG는 최신 정보를 반영하지 못할 가능성이 있습니다. 이는 검색 데이터에서 오래된 정보가 다수를 차지할 때 발생할 수 있는 문제로, 벡터 데이터베이스가 최신 정보로 업데이트되지 않거나 일부 데이터를 누락할 수 있다는 점이 한계로 작용하게 됩니다. 또한, 애초에 웹에서 관련 정보를 검색할 때 최신 정보가 아예 누락되거나 추출되지 않을 수도 있습니다. 이러한 경우 아무리 RAG 알고리즘과 시스템이 잘 설계되어 있다고 할지라도 정확한 답변을 내지 못할 것입니다.
따라서, Perplexity 등의 웹 검색 기반 LLM 서비스 이용자는 이러한 점을 인지하고 활용하는 것이 중요합니다. 또한 저와 같은 프롬프트 엔지니어나 AI 서비스 개발자들은 이러한 RAG의 한계점을 인지하고 있어야만 높은 품질의 서비스를 제공할 수 있을 것입니다.