1. 만약에 검색이 주용도라면 퍼플렉시티가 훨씬 적합하지 않나 하는 생각을 하고 있습니다.
2. 반면에 추론이 필요한 부분이 있다면 “C는 뭔가?” 이렇게 묻기보다는 ”A-B-C라면 C는 뭔가?“ 하고 묻는 것이 할루시네이션을 극적으로 줄여줍니다.
3. 만약에 중간에 고리를 하나 빼고 “A라면 C는 뭔가?” 하고 물으면 B의 자리에 D나 E를 넣으면서 C의 내용에 할루시네이션이 나타나는 현상이 생깁니다. (이 경우 B의 자리에 B를 자체적으로 넣는 경우도 있습니다. 이럴 경우는 할루시네이션이 줄어들죠.)
4. 결론적으로 언어모델은 입력에서 논리(정보)의 빈 고리가 발견되면 그 자리에 상상을 허용하는 조건이 추가된 것과 같은 숨은 지침으로 인식하고, 지시에 따라 적극적으로 상상하고 답변을 하는 셈입니다.
5. 예를 들어, “좋아 지금까지 우리 대화에서 배울만한 부분이 있는 책을 추천해 줘. “ 같은 요청을 한다면, 언어모델이 생각하기에 “배울 점이 있으면”, “추천해 줘” 두 지침이 공존합니다. 그런데, 두 지침 중에 어떤 것이 상위지침인가 판단할 기준이 지침 속에 없습니다.
6. 따라서 자체적으로 (비어있으니) 기준을 설정합니다. “배울 점”과 “추천” 중에 어떤 것이 중요한가? 판단하면 이전의 대화 속에서 계속 논의된 “배울 점”이 더 중요하다고 결론을 내렸다고 볼 수 있습니다.
7. 따라서 존재하지 않는 정보라도 생성해내야 한다 “생성해 내는 것이 사용자님에게 더 중요하다”라고 인식하고 “없는 정보”를 적극적으로 생성하는 것이죠. (생성모델이니까요.)
8. 그런데, 추천이 더 중요하다고 생각하더라도 동일한 결과를 초래합니다. 사용자님은 이전의 대화를 기반으로 책의 추천을 원한다. 대화를 복기해 보면 “이런 내용”이 중요하다고 생각하신다. 따라서 추천을 (반드시) 해드려야 한다. (찾아보고 없으면) 생성한다. 이런 흐름으로 가게 되니까요.
9. 이런 흐름을 차단하는 방법으로 이런 입력을 줄 수 있습니다. “위의 대화에서 내가 배워야 하는 점을 정리해 줄 수 있어?“ 이후 답변이 출력되면 어떤 부분은 필요 없다, 어떤 부분은 보강이 필요하다고 지시한 후 원하는 내용으로 정리를 합니다.
10. 그리고는 다음 입력에서 “위에서 정리된 내용을 다루는 책이 있어?”라고 물어봅니다. (이때, 몇 권이라는 지시를 주면 그것보다 적게 발견했을 때 부족분을 다시 상상해 냅니다.)
11. 이런 식의 자료 요청을 할 때에는 어떤 지침이 상위 지침인가를 명시해 주면 할루시네이션이 상당히 줄어듭니다. 그런데 상위 지침이 무엇인가를 강하게 입력시키기 위해서는 단순히 “이것이 상위 지침이다.“라고 입력하는 것보다 대화의 맥락에서 자연스럽게 드러나게 하는 방법이 더 좋을 수 있습니다.
12. 위의 설명 중에 요청의 예시에서, “구조적으로 이와 유사한 개념이 쓰인 사례”는 마지막 입력에서 직접 요청하는 것이 아닙니다. 그 이전의 대화에서 그 부분을 반복적으로 논의하는 식이네요. 또한 2~3개를 먼저 명시적으로 요청하지 않습니다. 일단 제시하면 추릴 때 하는 요청이구요. 즉, 여러 턴에 걸친 입력을 하나의 프롬프트처럼 줄여서 설명한 것이네요.