Claude 2.1의 장문 컨텍스트 프롬프팅

Claude 2.1은 200K 컨텍스트 윈도우 전반에 걸쳐 정보를 검색하는 데 탁월하며, 간단한 프롬프트 조정만으로 정확도를 27%에서 98%로 향상시킬 수 있습니다.

카테고리: 프로덕트 발표
제품: Claude 앱
날짜: 2023년 12월 6일
읽기 시간: 약 5분


전체 200K 토큰 컨텍스트 윈도우에서 개별 문장을 검색할 때의 Claude 2.1 성능. 이 실험은 Claude가 가장 관련성 높은 문장을 상기하도록 유도하는 프롬프트 기법을 사용합니다.
  • Claude 2.1은 200,000 토큰 컨텍스트 윈도우 전반에 걸쳐 정보를 매우 잘 기억합니다.
  • 그러나 모델은 문서 내의 개별 문장을 기반으로 답변하는 것을 꺼릴 수 있으며, 특히 해당 문장이 주입되었거나 맥락에 맞지 않는 경우 더욱 그렇습니다.
  • 사소한 프롬프트 수정만으로 이러한 저항감을 없애고 해당 작업에서 뛰어난 성능을 얻을 수 있습니다.

최근 우리는 약 500페이지 분량에 해당하는 200K 토큰 컨텍스트 윈도우를 제공하는 최첨단 모델인 Claude 2.1을 출시했습니다. Claude 2.1은 긴 컨텍스트 전반에 걸친 실제 검색 작업에서 탁월한 성능을 발휘합니다.

Claude 2.1은 S-1 길이의 문서 요약과 같이 사용자가 가치 있게 여기는 긴 문서 작업에 대한 대량의 피드백을 사용하여 훈련되었습니다. 이 데이터에는 실제 문서에서 수행된 실제 작업이 포함되었으며, Claude는 실수를 줄이고 근거 없는 주장을 하지 않도록 훈련받았습니다.

실제 복잡한 검색 작업에 대해 훈련받았기 때문에 Claude 2.1은 Claude 2.0에 비해 오답률이 30% 감소했으며, 문서가 주장을 뒷받침하지 않음에도 불구하고 뒷받침한다고 잘못 진술하는 비율이 3-4배 더 낮습니다.

또한, 이러한 매우 긴 컨텍스트에서 Claude의 기억력이 향상되었습니다.

긴 컨텍스트에서의 질문 답변 - 에러율 70K 컨텍스트 길이 (위) / 195K 컨텍스트 길이 (아래)

긴 컨텍스트 회상 디버깅

Claude 2.1의 200K 토큰 컨텍스트 윈도우는 강력하지만 효과적으로 사용하려면 세심한 프롬프팅이 필요합니다.

최근의 한 평가[1]에서는 폴 그레이엄(Paul Graham)의 스타트업 관련 에세이로 구성된 긴 문서 내에서 개별 문장을 회상하는 Claude 2.1의 능력을 측정했습니다. 삽입된 문장은 다음과 같았습니다: "샌프란시스코에서 할 수 있는 가장 좋은 일은 샌드위치를 먹으며 화창한 날 돌로레스 공원(Dolores Park)에 앉아 있는 것이다." 이 문장이 포함된 긴 문서를 보여준 후, 모델에게 "샌프란시스코에서 할 수 있는 가장 재미있는 일은 무엇인가?"라고 질문했습니다.

이 평가에서 Claude 2.1은 "안타깝게도 에세이에는 샌프란시스코에서 할 수 있는 가장 재미있는 일에 대한 명확한 답변이 나와 있지 않습니다"라는 식의 답변을 하며 일부 부정적인 결과를 보였습니다. 즉, Claude 2.1은 삽입된 문장을 검색하는 대신, 문서가 질문에 답하기에 충분한 맥락을 제공하지 않는다고 보고하는 경우가 많았습니다.

우리는 내부 실험에서 이러한 행동을 재현했습니다. 가장 최근의 통합 세출법(Consolidated Appropriations Act) 법안을 가져와 중간에 '5월 23일을 "국립 바늘 찾기의 날(National Needle Hunting Day)"로 선언한다'라는 문장을 추가했습니다. Claude는 이 참조를 감지하지만, 여전히 "국립 바늘 찾기의 날"이 실제 휴일이라고 주장하기를 꺼립니다.

질문: "전국 바늘 찾기의 날은 언제입니까?" (위) / 답변: "안타깝게도, 제공해주신 텍스트에는 공식적으로 지정된 '전국 바늘 찾기의 날'이 나와있지 않은 것으로 보입니다. 해당 텍스트는 그러한 날을 언급하거나 지정하고 있지 않습니다. 5월 23일을 '전국 바늘 찾기의 날'이라고 선언한다는 문구는 실제로 기념일을 지정하는 것이라기보다는, 문서에 실수로 남겨진 편집 메모나 주석일 가능성이 있어 보입니다. 추가적인 맥락 없이는 5월 23일이나 다른 날짜에 실제로 인정되는 '전국 바늘 찾기의 날'이 존재하는지 확인해드릴 수 없습니다." (아래)

Claude 2.1은 부정확성을 줄이는 것을 목표로 하는 혼합 데이터로 훈련되었습니다. 여기에는 문서에 답변을 정당화할 만한 충분한 정보가 포함되어 있지 않은 경우 문서에 기반하여 답변하지 않는 것이 포함됩니다. 우리는 이러한 부정확성을 줄이기 위한 일반적인 또는 작업별 데이터의 결과로 인해, 모델이 더 넓은 맥락 속에 삽입된 뜬금없는 문장에 기반하여 질문에 답할 가능성이 낮아진다고 생각합니다.

만약 우리가 긴 문서에 원래부터 있었고 따라서 맥락에 어긋나지 않는 문장에 대해 질문한다면, Claude는 그만큼의 저항감을 보이지 않는 것 같습니다. 예를 들어, 문제의 긴 문서에는 Viaweb에 관한 폴 그레이엄 에세이의 시작 부분에 다음과 같은 줄이 포함되어 있습니다:

"1998년 6월 야후 인수가 발표되기 몇 시간 전, 나는 비아웹 사이트의 스냅샷을 찍었다."

우리는 컨텍스트 내 에세이 순서를 무작위로 섞어 이 에세이가 200K 컨텍스트 윈도우의 서로 다른 지점에 나타나게 했고, Claude 2.1에게 다음과 같이 물었습니다:

"야후 인수가 발표되기 몇 시간 전 저자는 무엇을 했는가?"

Claude는 원래 실험에서 사용된 프롬프트 형식을 수정하지 않고도 정답이 있는 줄이 컨텍스트 어디에 위치하든 상관없이 이를 맞춥니다. 결과적으로, 우리는 Claude 2.1이 긴 컨텍스트 내에서 문장이 뜬금없어 보일 때 답변하기를 훨씬 더 꺼리며, 주어진 컨텍스트를 기반으로는 답변할 수 없다고 주장할 가능성이 더 높다고 판단합니다. 저항감이 증가하는 이러한 특정 원인은 실제 긴 컨텍스트 검색 작업을 대상으로 한 평가에서는 포착되지 않았습니다.

에세이에서 답변 위치별 평균 점수 (위) / 평균 점수 (10 = 완벽, 7 = 소소한 누락) (좌측) / 에세이 내 답변 위치 (아래)

200K 토큰 컨텍스트 윈도우를 효과적으로 사용하기 위한 프롬프팅

Claude가 긴 컨텍스트 검색 질문에 답변하기를 꺼린다면 사용자는 무엇을 할 수 있을까요? 우리는 Claude가 답변을 할 수 있는 능력이 있지만 주저하는 경우, 사소한 프롬프트 업데이트가 매우 다른 결과를 낳는다는 것을 발견했습니다. 내부적으로 동일한 평가를 실행할 때, 프롬프트에 단 한 문장을 추가하는 것만으로 Claude 2.1의 200K 컨텍스트 윈도우 전체에 걸쳐 거의 완벽한 충실도(fidelity)를 보였습니다.

제공된 프롬프트: "샌프란시스코에서 할 수 있는 가장 재미있는 일이 무엇인지 문맥에 따라 답해주세요. 문서 밖의 정보를 주거나, 우리의 결과를 반복하지 마세요." / 추가된 프롬프트: "어시스턴트: 여기 컨텍스트에서 가장 관련성 높은 문장입니다-" (우측)

우리는 Claude의 응답 시작 부분에 "여기 컨텍스트에서 가장 관련성 높은 문장입니다" 라는 문장을 추가함으로써 동일한 평가에서 훨씬 더 나은 결과를 얻었습니다. 이것만으로도 원래 평가에서 27%였던 Claude 2.1의 점수를 98%까지 끌어올리기에 충분했습니다.

초기 프롬프트로 평가 (위) / 업데이트된 프롬프트로 평가 (Anthropic) (아래)

본질적으로, 모델에게 관련 문장을 먼저 찾도록 지시함으로써 프롬프트는 단일 문장, 특히 긴 문서에서 뜬금없이 등장하는 문장에 기반하여 답변하기를 꺼리는 Claude의 저항감을 무력화합니다.

이 접근 방식은 컨텍스트 내에 있는(즉, 뜬금없지 않은) 단일 문장 답변에 대한 Claude의 성능도 향상시킵니다. 이를 입증하기 위해, 수정된 프롬프트를 앞서 공유한 Yahoo/Viaweb 예시에 적용했을 때 90-95%의 정확도를 달성했습니다.

에세이에서 답변 위치별 평균 점수 (위) / 리드인 없이 - 리드인 포함 (우측 위) / 평균 점수 (10 = 완벽, 7 = 소소한 누락) (좌측) / 에세이 내 답변 위치 (아래)

우리는 이와 같은 작업에서 더 잘 조정되도록 Claude를 지속적으로 훈련하고 있으며, 흥미로운 실험을 수행하고 개선할 방법을 찾아준 커뮤니티에 감사드립니다.

Footnotes

[1] Gregory Kamradt, ‘Pressure testing Claude-2.1 200K via Needle-in-a-Haystack’, 2023년 11월