prompt_document = """<document>
{WHOLE_DOCUMENT}
</document>"""
prompt_chunk = """Here is the chunk we want to situate within the whole document
<chunk>
{CHUNK_CONTENT}
</chunk>
Please give a short succinct context to situate this chunk within the overall document \
for the purposes of improving search retrieval of the chunk. \
Answer only with the succinct context and nothing else."""
Anthropic의 Contextual Retrieval은 대규모 언어 모델이 방대한 외부 지식을 효과적으로 활용할 수 있도록 하는 혁신적인 기술입니다. 이 기술은 검색-증강 생성(Retrieval-Augmented Generation, RAG) 기술을 기반으로 하며, 언어 모델이 특정 작업에 필요한 관련 정보를 동적으로 검색하고 통합할 수 있게 합니다.
Contextual Retrieval의 작동 원리는 다음과 같습니다. 먼저 대규모 데이터 소스를 색인화하여 관련 정보를 효율적으로 검색할 수 있도록 합니다. 그런 다음 언어 모델이 특정 작업을 수행할 때, 해당 작업의 컨텍스트와 관련된 정보를 검색하여 모델에 제공합니다. 모델은 이 정보를 활용하여 더 정확하고 관련성 있는 출력을 생성할 수 있습니다. Contextual Retrieval은 기존 RAG 기술의 성능을 크게 향상시켰으며, 최대 67%까지 부적절한 정보 검색 실패율을 낮출 수 있습니다.
Contextual Retrieval의 주요 장점은 언어 모델의 지식 한계를 극복하고 외부 지식을 동적으로 활용할 수 있다는 점입니다. 이를 통해 모델의 성능과 유용성이 크게 향상될 수 있습니다. 그러나 이 기술은 여전히 검색 정확도 문제, 확장성 제한, 프라이버시 및 보안 우려 등의 한계를 가지고 있습니다. 향후 이러한 한계를 극복하기 위한 지속적인 연구와 개선이 필요할 것입니다.
Contextual Retrieval은 크게 세 가지 주요 단계로 구성됩니다: 색인 생성, 질의 처리, 관련 정보 검색 및 통합입니다.
-
색인 생성: 이 단계에서는 대규모 데이터 소스(예: 웹 페이지, 문서, 데이터베이스 등)를 색인화하여 효율적인 검색이 가능하도록 합니다. 색인화 과정에서는 데이터 소스의 내용을 분석하고 중요한 키워드, 개념, 엔티티 등을 추출하여 인덱스를 생성합니다. 이 인덱스는 나중에 관련 정보를 신속하게 검색하는 데 사용됩니다. 색인 생성 시 Contextual Embedding과 Contextual BM25 기법을 활용하여 문맥 정보를 포함시킵니다.
-
질의 처리: 언어 모델이 특정 작업을 수행할 때, 해당 작업과 관련된 질의를 생성합니다. 이 질의는 모델의 입력 및 출력, 작업 컨텍스트 등을 기반으로 합니다. 질의는 색인화된 데이터 소스에서 관련 정보를 검색하는 데 사용됩니다.
-
관련 정보 검색 및 통합: 생성된 질의를 바탕으로 색인에서 관련 정보를 검색합니다. 이를 위해 Contextual Embedding과 Contextual BM25 등의 기법이 사용됩니다. 검색된 관련 정보는 언어 모델에 제공되어 모델의 출력에 통합됩니다. 이 과정에서 관련 정보의 중요도와 적절성을 평가하고, 모델의 출력과 조화롭게 통합하는 것이 중요합니다.
Contextual Retrieval은 이러한 단계를 거쳐 언어 모델이 필요한 관련 정보를 동적으로 검색하고 활용할 수 있도록 합니다. 특히 Contextual Embedding과 Contextual BM25 기법을 통해 문맥 정보를 효과적으로 활용하여 검색 실패율을 크게 낮출 수 있습니다. 이를 통해 모델의 지식 한계를 극복하고 특정 작업에 대한 성능과 유용성을 크게 향상시킬 수 있습니다.
Contextual Retrieval은 대규모 언어 모델이 특정 작업에 필요한 관련 정보를 동적으로 검색하고 활용할 수 있게 해주는 기술입니다. 이를 통해 모델은 출력의 정확성과 관련성을 높일 수 있습니다.
예를 들어, 프로그래머가 복잡한 코딩 문제에 대한 도움을 요청하면 Contextual Retrieval을 통해 모델은 해당 문제 상황에 맞는 맞춤형 코드 제안을 할 수 있습니다. 또한 국세청 자료를 활용하여 세금 관련 질문에 대해 정확한 답변을 제공할 수 있습니다.
그러나 Contextual Retrieval에는 한계도 있습니다. 일부 실험에 따르면 문서 길이가 60K 토큰을 넘어가거나 중요 정보가 문서의 50~70% 지점에 위치할 경우 모델이 해당 정보를 제대로 활용하지 못하는 것으로 나타났습니다. 또한 다국어 환경에서의 성능 검증이 필요합니다.
따라서 Contextual Retrieval의 장점을 극대화하고 한계를 극복하기 위해서는 지속적인 연구와 개선이 필요할 것입니다. 그럼에도 불구하고 이 기술은 대규모 언어 모델의 성능과 유용성을 크게 향상시킬 수 있는 중요한 기술로 평가받고 있습니다.
컨텍스트 검색은 Anthropic에서 개발한 새로운 기술로, RAG(Retrieval-Augmented Generation)와 같은 대규모 언어 모델 기반 정보 검색 시스템의 성능을 향상시키는 것을 목표로 합니다. 이는 모델이 대규모 지식 베이스에서 가장 관련 있는 정보를 찾지 못하는 검색 실패를 줄이기 위한 것입니다. 컨텍스트 검색의 원리는 문서 조각마다 추가적인 컨텍스트 정보를 사전 처리 단계에서 통합하는 것입니다. 이를 통해 특히 전통적인 방법으로는 컨텍스트를 유지하기 어려운 복잡한 쿼리에 대한 검색 정확도를 높일 수 있습니다. 구체적으로 컨텍스트 검색은 세 가지 기술을 결합합니다:
- 각 조각의 컨텍스트를 인코딩하는 컨텍스트 임베딩
- 텍스트 검색을 위한 컨텍스트 버전의 BM25 알고리즘
- 결과의 공동 재정렬.
이 접근 방식을 통해 상위 20개 조각의 검색 실패율을 기존 방법 대비 최대 67%까지 줄일 수 있으며, 경우에 따라서는 재정렬 없이도 49%까지 감소할 수 있습니다. 컨텍스트 검색은 프로그래밍 지원이나 복잡한 정보 검색과 같이 세밀한 컨텍스트 이해가 필요한 응용 프로그램에 새로운 가능성을 열어줍니다. 이를 통해 언어 모델은 쿼리의 특정 컨텍스트에 더 적합한 관련성 높은 답변을 제공할 수 있습니다. 그러나 매우 큰 데이터베이스의 효율적인 인덱싱과 관리, 개인 정보 보호 및 보안 문제 등의 과제가 남아 있습니다. 이러한 과제를 해결하고 컨텍스트 검색의 잠재력을 완전히 활용하기 위해서는 추가적인 연구가 필요할 것입니다.
Contextual Retrieval은 대규모 언어 모델의 성능과 유용성을 크게 향상시켰지만, 여전히 몇 가지 한계와 과제가 남아 있습니다. 이를 극복하고 기술을 더욱 발전시키기 위해서는 다음과 같은 노력이 필요합니다.
첫째, 검색 정확성과 관련성을 높이기 위해 검색 알고리즘과 질의 처리 방식을 개선해야 합니다. 둘째, 대규모 데이터를 효율적으로 색인화하고 관리하기 위해 대규모 데이터 처리 기술, 분산 시스템, 클라우드 컴퓨팅 등을 활용해야 합니다. 셋째, 데이터 익명화, 암호화, 접근 제어 등의 기술을 통해 프라이버시와 보안 문제를 해결해야 합니다.
넷째, 모델과 검색 결과의 통합 방식을 개선하여 정보의 중요도와 적절성을 평가하고 자연스럽게 통합할 수 있도록 해야 합니다. 다섯째, 질문 답변, 작문 보조, 정보 요약 등 기존 응용 분야 외에도 새로운 분야를 발굴하고 각 분야의 특성에 맞게 기술을 최적화해야 합니다.
이와 같이 지속적인 연구와 개발을 통해 Contextual Retrieval의 한계를 극복하고 성능을 개선한다면, 대규모 언어 모델의 활용도와 유용성을 한층 더 높일 수 있을 것입니다.