[AI] Anthropic의 Contextual Retrieval 요약 & 정리
AI 모델이 특정 맥락에서 유용하려면 배경 지식에 대한 접근이 필요합니다. 이를 위해 개발자들은 주로 RAG(Retrieval-Augmented Generation)를 사용하여 지식 기반에서 관련 정보를 검색하고 사용자 프롬프트에 추가합니다. 그러나 전통적인 RAG 방식은 정보를 인코딩할 때 문맥을 제거하여 관련 정보를 제대로 검색하지 못하는 문제가 있습니다.
Contextual Retrieval이란?
Contextual Retrieval은 이러한 문제를 해결하기 위한 방법으로, 두 가지 기술을 사용합니다:
- Contextual Embeddings: 각 텍스트 조각(chunk)에 문맥 정보를 추가하여 임베딩합니다.
- Contextual BM25: BM25 검색 기법에 문맥 정보를 반영합니다.
이를 통해 검색 실패율을 49%까지 감소시킬 수 있으며, 리랭킹(reranking)을 함께 사용하면 최대 67%까지 감소시킬 수 있습니다.
구현 방법
- 프롬프트 개선: Claude와 같은 언어 모델을 사용하여 각 텍스트 조각에 대한 간결한 문맥 설명을 생성합니다.
- 문맥 추가 임베딩: 생성된 문맥을 각 텍스트 조각 앞에 추가한 후 임베딩합니다.
- Contextual BM25 적용: 문맥이 추가된 텍스트로 BM25 인덱스를 구축합니다.
- 리랭킹 사용: 검색된 상위 텍스트 조각들을 리랭킹 모델로 평가하여 가장 관련성이 높은 것들을 선택합니다.
성능 향상 결과
- Contextual Embeddings만으로도 검색 실패율이 35% 감소했습니다.
- Contextual Embeddings와 Contextual BM25를 함께 사용하면 검색 실패율이 49% 감소했습니다.
- 여기에 재랭킹을 추가하면 최대 67%까지 검색 실패율이 감소했습니다.
고려사항
- 청크 분할: 텍스트를 어떻게 분할하느냐에 따라 성능이 달라질 수 있습니다.
- 임베딩 모델 선택: 일부 모델은 Contextual Retrieval의 이점이 더 크게 나타납니다.
- 맞춤형 문맥 프롬프트: 도메인에 특화된 프롬프트를 사용하면 더 나은 결과를 얻을 수 있습니다.
- 청크 수 결정: 모델에 입력하는 텍스트 조각의 수는 성능에 영향을 미칩니다.
결론
Contextual Retrieval은 전통적인 RAG의 한계를 극복하여 대규모 지식 기반에서도 높은 정확도의 정보를 효율적으로 검색할 수 있게 해줍니다. 이는 AI 모델의 응답 성능을 직접적으로 향상시킵니다.
같이 보면 좋은 글
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.
저도 요즘 책도 보고 여러가지 인공지능과 LLM RAG에 관심을 가지고 있는데 늘 좋은글 감사합니다.
저도 llm 과 rag에 관심 많아서 계속 학습 하고 있습니다. 이쪽은 기술 변화 속도가 워낙 빨라서 따라가기가 조금 힘든 분야네요 ㅎㅎ