AI 개발자가 알려주는 긴 글을 쓰기 위한 llm 활용 전략
현대의 대규모 언어 모델(LLM)은 놀라운 발전을 이루었습니다. 10만 토큰에 달하는 방대한 입력을 처리할 수 있게 되었고, 복잡한 추론과 창의적인 작업도 가능해졌습니다. 그러나 흥미롭게도 LLM은 여전히 긴 글을 생성하는 데 어려움을 겪고 있습니다. 2,000단어 이상의 긴 텍스트를 생성할 때 논리적 일관성을 잃거나, 요구사항을 누락하거나, 심지어 허구의 내용을 만들어내는 경우가 빈번합니다.
이런 상황에서 우리는 한 가지 흥미로운 질문을 던져볼 수 있습니다. 인간은 어떻게 '전쟁과 평화'나 '잃어버린 시간을 찾아서' 같은 방대한 분량의 글을 쓸 수 있는 것일까요? 더욱 흥미로운 점은, 인간의 작업 기억(Working Memory) 용량이 LLM의 컨텍스트 길이보다 훨씬 작다는 사실입니다. 그럼에도 불구하고 인간은 긴 글에서 어느 정도의 논리적 일관성을 유지하며 창작 활동을 할 수 있습니다.
이 연구는 인간의 인지 처리 방식에서 영감을 받아, LLM의 긴 글 생성 문제에 대한 새로운 해결책을 제시합니다. 라미팀(필자의 직장)은 인간의 제한된 기억력이 오히려 효과적인 글쓰기를 가능하게 한다는 점에 주목했고, 이를 AI 시스템에 적용하는 방법을 연구했습니다. 특히 주목할 점은, 이 접근법이 단순한 이론적 제안에 그치지 않는다는 것입니다. 우리는 인간의 인지 모델에서 착안한 구체적인 구현 방법과 코드 예시를 함께 제시하여, 실제 적용 가능한 해결책을 제안합니다.
더 나아가 이 연구는 '완벽한 논리적 일관성'이라는 기존의 목표에 대해 근본적인 의문을 제기합니다. 인간의 글쓰기와 읽기 과정을 면밀히 관찰한 결과, 우리는 LLM에게 요구하던 수준의 완벽한 일관성이 실은 불필요한 제약이었음을 발견했습니다. 이러한 통찰은 더 자연스럽고 확장 가능한 텍스트 생성 방법으로 이어졌습니다.
현대의 LLM이 직면한 가장 흥미로운 역설 중 하나는 입력과 출력 사이의 극단적인 불균형입니다. 최신 모델들은 10만 토큰에 달하는 방대한 입력을 처리할 수 있지만, 정작 2,000단어 이상의 일관된 텍스트를 생성하는 데는 어려움을 겪고 있습니다. 이러한 불균형은 단순히 모델의 크기나 성능의 문제가 아닌, 더 근본적인 한계를 시사합니다.
1. 컨텍스트 길이의 제한
- 입력된 정보량이 증가할수록 모든 내용을 균형있게 반영하기 어려움
- 특정 부분에 과도하게 집중하거나 다른 부분을 완전히 무시하는 현상 발생
- 더 큰 컨텍스트 창을 가진 모델이 개발되어도 이 문제는 단지 규모만 커질 뿐 본질적으로 해결되지 않음
2. 정보 누락과 할루시네이션
- 긴 글을 생성하는 과정에서 중요한 요구사항이나 핵심 정보가 누락됨
- 존재하지 않는 정보를 생성하거나 잘못된 맥락을 만들어내는 할루시네이션 발생
- 글이 길어질수록 이러한 문제가 기하급수적으로 증가
3. 추가 정보 반영의 어려움
- 이미 생성된 긴 텍스트에 새로운 정보를 추가하거나 수정하기 어려움
- 전체 컨텍스트를 다시 처리해야 하는 비효율성 발생
- 수정 과정에서 기존 내용과의 일관성이 깨지는 현상 빈번
이러한 한계들을 바라보며 LLAMI 팀은 흥미로운 질문을 던져보았습니다. 단순히 모델의 성능을 높이거나 컨텍스트 길이를 늘리는 것이 최선의 해결책일까요? 어쩌면 우리는 인간의 인지 처리 방식에서 새로운 영감을 얻을 수 있지 않을까요? 이러한 질문들은 우리를 흥미로운 탐구의 여정으로 이끌었습니다.
인간의 인지 처리 방식을 이해하는 것은 LLM의 긴 글 생성 문제에 대한 해결책을 찾는 데 중요한 통찰을 제공합니다. 특히 주목할 만한 것은 인간의 작업 기억이 LLM의 컨텍스트 처리 능력보다 훨씬 제한적임에도 불구하고, 훨씬 더 효과적으로 긴 텍스트를 생성할 수 있다는 점입니다. 인간은 이러한 제한된 작업 기억으로도 수천 년간 복잡한 이야기를 만들고 긴 글을 써왔습니다.
William James가 1890년에 처음 제시하고 Posner와 동료들이 1980년대에 실험적으로 입증한 주의 스포트라이트 이론(Attention Spotlight Theory)은 인간의 인지 처리 방식을 설명하는 핵심 모델입니다. 이 이론에 따르면, 우리의 주의력은 마치 어두운 무대 위의 스포트라이트처럼 작동합니다. Eriksen & Hoffman(1972)의 고전적 실험에서 입증된 것처럼, 우리의 주의는 시각적 영역의 특정 부분에 선택적으로 집중되며, 이는 정보 처리의 효율성을 높이는 핵심 메커니즘입니다. 우리가 '생각한다'는 것은 특정 부분에 스포트라이트를 비추고 나머지 부분은 의도적으로 '생각하지 않는' 과정인 것입니다.
선택적 집중과 배제
- 현재 스포트라이트가 비추는 부분만을 상세히 처리
- 다른 영역은 의도적으로 주의를 기울이지 않음
- 이러한 선택적 배제가 오히려 깊이 있는 사고를 가능하게 함
인간이 글을 쓰거나 읽을 때의 심리적 과정은 매우 흥미롭습니다. 우리는 마치 손전등을 비추며 어두운 길을 걸어가는 것처럼, 한 번에 한 부분씩 차근차근 글을 써내려 갑니다. 글을 쓸 때 우리의 의식은 현재 작성 중인 문장에 완전히 몰입합니다. 방금 전에 쓴 문장들은 아직 희미하게 기억 속에 남아있지만, 그 이전의 내용들은 점차 흐릿해집니다. 아직 쓰지 않은 부분들은 아예 생각하지 않죠.
읽을 때도 마찬가지입니다. 우리는 텍스트를 처음부터 끝까지 순차적으로 읽어나가며, 현재 읽고 있는 문장이나 문단에 주의를 집중합니다. 앞서 읽은 내용들은 마치 흐르는 물처럼 자연스럽게 기억 속으로 스며들고, 뒤에 올 내용들은 아직 베일에 가려져 있습니다. 이러한 순차적 진행 과정에서 우리는:
1. 현재 스포트라이트가 비추는 부분에 완전히 몰입
2. 직전 내용은 흐릿하게 유지하며 참조
3. 그 이전의 내용들은 추상적인 인상으로만 보존
4. 아직 다루지 않은 부분은 의도적으로 생각하지 않음
인간의 순차적이고 제한된 인지 처리 방식은 우리가 작성하는 텍스트의 구조에 직접적인 영향을 미칩니다. 이는 단순한 우연이 아니라, 인간의 사고방식이 자연스럽게 텍스트에 반영된 결과입니다.
가장 두드러지는 특징은 문단 간의 물리적 거리와 논리적 연관성 사이의 관계입니다. 우리의 의식이 한 번에 한 부분에만 집중하고 순차적으로 이동하기 때문에, 텍스트 상에서 물리적으로 가까운 문단들은 자연스럽게 높은 논리적 연관성을 보입니다.
- 인접한 문단들은 긴밀하게 연결되고 유사한 주제를 다룹니다
- 문단 간 거리가 멀어질수록 직접적인 논리적 연관성은 감소합니다
- 특히 긴 글의 첫 부분과 마지막 부분은 직접적인 논리적 연관성을 가지지 않는 것이 자연스럽습니다
이러한 특성은 결함이 아닌, 오히려 인간의 자연스러운 사고 과정이 텍스트에 반영된 결과입니다. 우리의 인지 시스템이 순차적으로 작동하기에, 우리가 생산하는 텍스트 역시 이러한 순차적 구조를 따르게 되는 것입니다.
LLAMI 팀의 초기 접근법은 긴 글 생성을 위해 가능한 한 많은 맥락을 한 번에 시스템에 제공하는 것이었습니다. 우리는 모든 이전 문맥을 완벽하게 참조할 수 있다면 더 좋은 텍스트가 생성될 것이라 기대했죠. 하지만 실험 결과는 흥미로웠습니다. 입력 토큰이 증가할수록 모델의 주의력이 분산되어 오히려 출력 텍스트의 질이 떨어지는 현상이 발견된 것입니다. 수만 개의 토큰을 동시에 처리하려다 보니 각 토큰에 대한 주의력 가중치가 희석되어, 결과적으로 텍스트의 응집성과 일관성이 저하되었습니다. 이는 우리로 하여금 완전히 다른 접근법을 고민하게 만들었습니다. "잠깐, 인간은 어떻게 긴 글을 쓰는 걸까?" 소설가는 500페이지 전에 서술한 모든 복선을 기억하지 못하고, 학술논문 저자도 서론의 모든 세부사항을 완벽히 기억하며 결론을 쓰지 않습니다.
우리가 책을 읽을 때를 떠올려보세요. 긴 소설을 읽으며 우리의 의식은 현재 읽고 있는 장면에 완전히 몰입합니다. 방금 전 페이지의 내용은 아직 선명하게 기억나지만, 몇 장 전의 세부 묘사는 이미 흐릿해지기 시작합니다. 글을 쓸 때도 마찬가지입니다. 우리는 키보드를 두드리거나 펜을 움직일 때 현재 작성 중인 문장에만 집중합니다. 바로 전에 쓴 문단은 어렴풋이 기억하지만, 한 시간 전에 쓴 내용의 세부사항까지 완벽히 기억하진 못합니다. 이런 '불완전한' 기억과 맥락 유지는 자연스러운 현상이며, 오히려 이것이 더 효율적인 텍스트 처리를 가능하게 합니다.
이러한 인간의 자연스러운 글쓰기 방식에서 영감을 받아, 우리는 LLM의 새로운 텍스트 생성 전략을 제안합니다. 핵심은 순차적 처리와 제한된 맥락의 활용입니다. 전체 맥락 중 개요 수준의 구조만 시스템에 제공하고, 실제 글 작성시에는 직전 문단의 내용만을 참조합니다. 이는 인간이 글을 쓸 때 자연스럽게 따르는 방식이며, 동시에 LLM의 컨텍스트 제한 문제를 우회할 수 있는 효과적인 전략입니다.
이러한 접근법은 이론상 무한한 길이의 텍스트 생성을 가능하게 합니다. 처음에는 전체 주제에 대한 2,000단어 분량의 텍스트를 생성합니다. 그 다음 각 섹션을 다시 2,000단어로 확장하고, 이 과정을 필요한 만큼 반복할 수 있습니다. 마치 나무가 가지를 뻗어나가듯, 각 부분이 독립적으로 성장하면서도 전체적인 구조를 유지할 수 있는 것입니다.
이는 실제 인간의 글쓰기 과정과도 놀라울 정도로 유사합니다. 우리도 처음에는 개요를 작성하고, 각 섹션을 하나씩 발전시키며, 필요에 따라 특정 부분을 더 상세히 다듬어 나갑니다. 때로는 처음 계획에 없던 내용이 추가되기도 하고, 어떤 부분은 예상보다 더 깊이 있게 다뤄지기도 합니다. 이러한 유기적인 발전 과정이 더 자연스럽고 풍부한 텍스트를 만들어냅니다.
이 접근법의 또 다른 강점은 인간 피드백을 가장 효과적으로 수용할 수 있다는 점입니다. 전체 텍스트를 한 번에 검토하는 것은 인간에게도 부담스러운 작업이지만, 현재 확장 중인 특정 섹션에 집중하여 피드백을 제공하는 것은 훨씬 자연스럽습니다. 이는 더 정확하고 구체적인 피드백을 가능하게 합니다.
더 나아가 이러한 과정은 단순한 텍스트 확장을 넘어 질적 향상의 기회를 제공합니다. 각 확장 단계에서 서치 엔진과의 연동이나 전문가의 검토를 통해 새로운 정보를 추가할 수 있습니다. 초기 개요에서는 미처 생각하지 못했던 아이디어나 연결점이 자연스럽게 발견되고 통합될 수 있는 것입니다. 이는 더 풍부하고 논리적인 텍스트로 발전하는 토대가 됩니다.
우리의 구현 접근법의 핵심은 동적으로 변화하는 시스템 프롬프트입니다. 이는 마치 스포트라이트가 무대의 한 부분을 비추듯, 전체 텍스트 중 현재 작업 중인 부분과 그 직전 맥락만을 집중적으로 다룹니다.
```
[시스템 프롬프트의 동적 변화]
초기:
[전체 개요]
└── 기본 텍스트 생성
확장 단계:
[개요]
[직전 문맥] ─┐
[현재 위치] ◄┘ ──> [스포트라이트 집중]
└── 텍스트 확장
* 스포트라이트는 순차적으로 이동
```
LLAMI의 대화형 인터페이스는 위의 스포트라이트 이론을 실제로 구현한 예시입니다. 사용자는 자연스러운 대화를 통해 글을 발전시키고, 시스템은 현재 작업 중인 섹션에 집중하며 이전 맥락을 효과적으로 활용합니다.
순차적 확장과 단순 분할 전략
텍스트 확장을 위한 순회 가능한 구조를 만들 때, 복잡한 메타 태그나 특별한 데이터 구조가 반드시 필요한 것은 아닙니다. 텍스트의 순차적 특성을 활용한 단순한 접근이 오히려 더 효과적일 수 있습니다.
```
[텍스트 분할 및 확장 프로세스]
원본 텍스트:
□□□□□□□□□□□□□□□□□□□□ (2000자)
단순 분할:
□□□□□ | □□□□□ | □□□□□ | □□□□□
(500자) (500자) (500자) (500자)
순차적 확장:
■■■■■ | □□□□□ | □□□□□ | □□□□□
↓
■■■■■ | ■■■■■ | □□□□□ | □□□□□
↓
■■■■■ | ■■■■■ | ■■■■■ | □□□□□
↓
■■■■■ | ■■■■■ | ■■■■■ | ■■■■■
■: 확장된 텍스트
□: 미확장 텍스트
```
이러한 단순 분할 방식이 효과적인 이유는 텍스트의 자연스러운 특성 때문입니다. 인간의 글쓰기와 읽기가 순차적으로 이루어지기 때문에, 반드시 의미 단위나 구조적 경계와 정확히 일치하지 않더라도 텍스트의 확장과 이해가 가능합니다. 마크다운의 '#' 표시나 줄바꿈을 활용한 분할도 가능하지만, 단순한 글자 수 기반 분할도 충분히 실용적입니다.
```tsx
// 기본적인 구현 구조
interface TextSegment {
content: string;
systemPrompt: string;
previousContext: string;
}
// 단순하지만 효과적인 분할 및 확장
function expandText(originalText: string, segmentSize: number = 500) {
const segments = splitTextIntoSegments(originalText, segmentSize);
const expandedSegments: TextSegment[] = [];
// 순차적 처리
for (let i = 0; i < segments.length; i++) {
const previousContext = i > 0 ? segments[i-1] : '';
// ... 확장 로직
}
return expandedSegments;
}
```
이러한 접근법은 구현이 단순하면서도 효과적입니다. 각 단계에서 시스템 프롬프트는 현재 작업 중인 부분과 그 직전 맥락만을 포함하므로, 컨텍스트 제한을 자연스럽게 해결하면서도 일관성 있는 텍스트 생성이 가능합니다.
추가적으로 이 과정에서 검색 에이전트를 통한 정보 보강이나 인간의 피드백을 통한 수정이 가능하지만, 이는 기본 구조에 선택적으로 추가될 수 있는 확장 기능으로 볼 수 있습니다.
이 연구는 LLM의 긴 글 생성이라는 도전 과제에 대해, 인간의 인지 처리 방식에서 영감을 받은 새로운 해결책을 제시했습니다. 특히 주목할 만한 점은, 우리가 당연하게 여기던 '완벽한 맥락 유지'라는 목표가 실은 불필요한 제약이었다는 발견입니다. 인간도 긴 글을 쓰거나 읽을 때 모든 맥락을 완벽하게 유지하지 않으며, 오히려 이러한 '제한된 주의력'이 더 효율적인 텍스트 처리를 가능하게 합니다.
이러한 통찰을 바탕으로 제안된 '스포트라이트' 접근법은, LLM의 현재 한계를 우회하면서도 더 자연스러운 텍스트 생성을 가능하게 합니다. 전체 맥락 대신 직전 문맥만을 참조하는 순차적 처리 방식은, 컨텍스트 길이의 제한이라는 기술적 한계를 극복하면서도 인간의 자연스러운 글쓰기 방식에 더 가깝습니다.
특히 고무적인 것은 이 접근법의 실용성입니다. LLAMI 팀은 이 연구를 단순한 이론적 탐구에서 그치지 않고, 실제 작동하는 시스템으로 구현했습니다. 복잡한 메커니즘이나 특별한 데이터 구조 없이도, 단순한 분할과 순차적 처리만으로 효과적인 구현이 가능했던 것입니다.
더 나아가 이 연구는 인간과 AI의 새로운 협력 방식을 제시합니다. 각 확장 단계에서 인간의 피드백을 자연스럽게 수용할 수 있는 구조는, AI가 생성한 텍스트를 인간이 효과적으로 가이드하고 발전시킬 수 있는 가능성을 보여줍니다.
제가 속한 팀은 이제 막 새로운 여정을 시작했습니다. 현재 우리가 제시한 접근법은 인간과 AI의 협력적 글쓰기를 위한 첫 걸음에 불과합니다. 앞으로도 인간의 인지 과정에 대한 더 깊은 연구를 통해 새로운 통찰을 발견하고, 이를 AI 시스템에 적용하는 방법을 탐구해 나갈 것입니다. 우리의 목표는 단순한 텍스트 생성을 넘어, 인간의 자연스러운 사고 과정에 대한 이해를 바탕으로 더 나은 글쓰기 시스템을 만드는 것입니다.