주요 내용
- LLM에서의 긴 컨텍스트 처리: 전통적인 컨텍스트 길이보다 긴 시퀀스를 관리하기 위한 과제와 기법을 탐구합니다. 다중 문서 요약, 복잡한 질의응답 등에서 중요합니다.
- 검색 증강의 장점: 검색 증강을 통해 LLM이 외부 소스에서 관련 정보만 가져와 임의로 긴 컨텍스트를 효율적으로 처리할 수 있는 이점을 강조합니다.
- 실제 응용 사례: 검색 증강이 LLM 성능을 향상시키는 실제 사용 사례(오픈 도메인 질의응답, 다중 문서 요약, 대화 시스템 등)를 살펴봅니다.
- LLM API 통합 가이드: LLM API와 검색 증강을 통합하는 실용적인 단계와 지침을 제공합니다.
서론
언어 모델이 긴 문서를 요약하는 작업에서 대량의 정보를 어떻게 처리하는지 궁금한 적이 있나요? 검색이 긴 컨텍스트 대규모 언어 모델과 만나면 어떤 일이 일어날까요?
이 블로그에서는 논문 “Retrieval Meets Long Context Large Language Models”를 참고하여 LLM에서 긴 컨텍스트를 처리하는 과제를 살펴보고, 검색 증강과 같은 혁신적인 솔루션을 탐구하며, 그 응용 사례를 논의하고, 증강 검색을 LLM API와 통합하는 가이드를 제공합니다.
LLM에서의 긴 컨텍스트 이해
정의
언어 모델에서 긴 컨텍스트란 사전 학습 중 사용된 일반적인 컨텍스트 길이보다 훨씬 긴 입력 시퀀스를 처리할 수 있는 능력을 말합니다. GPT-2, GPT-3과 같은 많은 널리 사용되는 언어 모델은 최대 1024 또는 2048 토큰 시퀀스에서 사전 학습되었습니다. 그러나 긴 문서에 대한 질의응답이나 다중 문서 요약과 같은 실제 작업은 수천에서 수만 토큰에 이르는 훨씬 긴 컨텍스트에 대한 이해와 추론이 필요합니다.
과제
언어 모델에서 긴 컨텍스트를 효율적으로 처리하는 것은 Transformer 기반 모델의 self-attention 메커니즘에서 발생하는 이차 시간 및 메모리 복잡성 때문에 큰 과제를 안고 있습니다. 입력 시퀀스 길이가 증가함에 따라 self-attention의 계산 및 메모리 요구 사항이 이차적으로 증가하여 정확한 attention으로 매우 긴 시퀀스를 처리하는 것이 불가능해집니다.

중요성
문서 요약, 대규모 지식 베이스에 대한 질의응답, 다중 턴 대화 시스템과 같은 많은 실제 애플리케이션은 여러 문서나 대화 턴에 걸친 긴 컨텍스트에 대한 추론이 필요합니다. 긴 컨텍스트 기능을 향상시키면 새로운 가능성을 열고 이러한 영역에서 언어 모델의 성능을 개선하여 더 효과적이고 인간다운 언어 이해 및 생성을 이끌어낼 수 있습니다.
긴 컨텍스트를 처리하는 두 가지 방법
논문 “Retrieval Meets Long Context Large Language Models”에서 저자는 LLM이 긴 컨텍스트를 처리하는 두 가지 방법을 소개합니다.
확장된 컨텍스트 창
긴 컨텍스트를 처리하는 한 가지 접근 방식은 언어 모델 자체의 컨텍스트 창 크기를 확장하여 self-attention 메커니즘을 통해 더 긴 입력 시퀀스를 직접 처리할 수 있도록 하는 것입니다. 이는 다양한 기법을 통해 달성할 수 있습니다.
-
효율적인 어텐션 구현: FlashAttention(Dao et al., 2022)과 같은 방법은 GPU 메모리 계층 구조를 더 잘 활용하여 정확한 self-attention의 계산을 최적화합니다. 이를 통해 근사 없이 정확한 attention으로 더 긴 시퀀스를 처리할 수 있습니다.
-
위치 보간(Positional Interpolation): 많은 언어 모델은 rotary position embeddings(RoPE)과 같은 상대 위치 임베딩을 사용합니다. 위치 보간 기법(Chen et al., 2023; Kaiokendev, 2023)은 이러한 임베딩을 사전 학습에 사용된 원래 컨텍스트 길이 이상으로 확장할 수 있습니다. 이를 통해 전체 재학습 없이 컨텍스트 창을 확장할 수 있습니다.
-
계속 사전 학습/미세 조정: 모델을 더 긴 시퀀스에 대해 추가로 사전 학습하거나 미세 조정하여 컨텍스트 기능을 확장할 수 있습니다. 예를 들어 LongLLaMA(Tworkowski et al., 2023)는 8K 컨텍스트에서 대조 학습으로 OpenLLaMA 체크포인트를 미세 조정합니다.
-
희소/랜드마크 어텐션: 전체 self-attention 대신 희소 어텐션(Child et al., 2019) 또는 랜드마크 어텐션(Mohtashami & Jaggi, 2023)은 미리 정의된 패턴 또는 학습된 “랜드마크” 표현을 기반으로 컨텍스트의 희소 부분집합에만 주목합니다. 이렇게 하면 계산이 줄어들어 더 긴 컨텍스트를 처리할 수 있습니다.
-
윈도우/청크 분할: 긴 컨텍스트를 여러 개의 겹치는 윈도우/청크로 분할하고, 윈도우 간 위치 임베딩을 재사용합니다(Ratner et al., 2023). 모델은 각 청크를 독립적으로 처리한 후 출력을 결합합니다.
컨텍스트 창을 확장하면 언어 모델이 별도의 검색 시스템에 의존하지 않고 더 긴 컨텍스트에 직접 주목하고 추론할 수 있습니다.
검색 증강 설명

검색 증강은 두 단계로 이루어집니다.
1 검색 단계
이 단계에서는 별도의 검색 시스템을 사용하여 입력 쿼리나 프롬프트를 기반으로 대규모 코퍼스에서 관련 컨텍스트를 식별하고 검색합니다. 이 검색 시스템은 밀집 구절 검색기, 희소 용어 기반 검색기 또는 이 둘의 조합일 수 있습니다.
검색 시스템은 코퍼스의 모든 문서/구절을 밀집 벡터 표현으로 인코딩합니다. 입력 쿼리가 주어지면 쿼리 표현과 코퍼스의 모든 문서 표현 간의 유사도를 계산하여 상위 k개의 가장 관련성 높은 문서/구절을 검색합니다.
널리 사용되는 검색 모델로는 DPR(Karpukhin et al., 2020), REALM(Guu et al., 2020), ColBERT(Khattab & Zaharia, 2020) 등이 있습니다. 최근 연구에서는 학습된 밀집 검색기(Xiong et al., 2021)와 파라메트릭 메모리 저장소 검색(Borgeaud et al., 2022)도 탐구되었습니다.
2 언어 모델 단계
검색된 상위 k개의 관련 문서/구절을 연결하여 원래 쿼리/프롬프트와 함께 언어 모델에 입력 컨텍스트로 전달합니다. 그런 다음 언어 모델은 self-attention 메커니즘을 사용하여 이 긴 연결 컨텍스트를 처리하고 출력을 생성합니다.
검색 증강의 주요 장점은 다음과 같습니다.
- 관련 부분만 검색하여 임의로 긴 컨텍스트를 처리할 수 있습니다.
- 검색 시스템은 대규모 코퍼스에 대한 효율적인 최대 내적 검색을 위해 고도로 최적화될 수 있습니다.
- 언어 모델은 주어진 컨텍스트에 대한 이해와 일관된 출력 생성에 집중할 수 있습니다.
성능 비교: 검색 증강 vs 확장된 컨텍스트 창
논문 “Retrieval Meets Long Context Large Language Models”에서 저자는 언어 모델의 긴 컨텍스트 처리를 위한 검색 증강과 확장된 컨텍스트 창 접근 방식의 성능을 비교하는 포괄적인 연구를 수행했습니다.
실험 설계
두 가지 최첨단 대규모 언어 모델을 사용했습니다: 독점 43B GPT 모델과 공개적으로 사용 가능한 Llama2-70B 모델입니다.
확장된 컨텍스트 창 접근 방식의 경우 위치 보간 기법을 사용하여 이러한 모델의 원래 4K 컨텍스트 창을 16K 및 32K로 확장했습니다.
검색 증강의 경우 별도의 검색 시스템을 사용하여 입력 쿼리를 기반으로 코퍼스에서 가장 관련성 높은 컨텍스트를 식별하고 검색했습니다.
이러한 접근 방식의 성능은 단일 및 다중 문서 질의응답, 쿼리 기반 요약, 컨텍스트 내 몇 샷 학습 작업을 포함한 9가지 긴 컨텍스트 작업에서 평가되었습니다.
결과
실험의 주요 결과는 다음과 같습니다.
- 검색 증강은 4K 컨텍스트 창 LLM의 성능을 크게 향상시켰습니다. 놀랍게도 검색이 증강된 4K 모델은 긴 컨텍스트 작업에서 16K 컨텍스트 창 모델과 비슷한 성능을 달성했습니다(GPT-43B의 평균 점수 29.32 대 29.45, Llama2-70B의 경우 36.02 대 36.78). 또한 훨씬 적은 계산을 사용했습니다.

- 긴 컨텍스트 LLM(16K 또는 32K)의 성능은 특히 더 큰 Llama2-70B 모델의 경우 검색 증강으로 더욱 향상될 수 있었습니다. 가장 좋은 모델(32K 컨텍스트 창을 가진 검색 증강 Llama2-70B)은 9가지 긴 컨텍스트 작업의 평균 점수에서 GPT-3.5-turbo-16k 및 Davinci003을 능가했습니다.
- 검색 증강 Llama2-70B-32k 모델은 검색이 없는 기준선보다 성능이 뛰어났을 뿐만 아니라(평균 점수 43.6 대 40.9) 생성 시간도 훨씬 빨랐습니다(예: NarrativeQA 작업에서 4배 빠름).
논의
검색 증강은 특히 더 작은 컨텍스트 창 크기에서 언어 모델의 긴 컨텍스트를 처리하는 효과적이고 효율적인 접근 방식이 될 수 있습니다. 확장된 컨텍스트 창 모델과 비슷한 성능을 달성하면서도 훨씬 적은 계산이 필요합니다.
그러나 Llama2-70B와 같은 더 큰 언어 모델의 경우 검색 증강을 확장된 컨텍스트 창과 결합하면 긴 컨텍스트 작업에서 성능을 더욱 향상시킬 수 있습니다. 이는 두 접근 방식이 상호 보완적이며 각각의 강점을 활용하기 위해 결합될 수 있음을 나타냅니다.
검색 증강 응용 및 사용 사례
오픈 도메인 질의응답
오픈 도메인 질의응답에서 시스템은 방대한 코퍼스(예: Wikipedia)에서 관련 정보를 검색하여 다양한 주제의 질문에 정확하게 답해야 합니다. 검색 증강을 통해 언어 모델은 가장 관련성 높은 컨텍스트에 집중할 수 있어 포괄적이고 근거가 명확한 답변을 제공하는 능력이 향상됩니다.
다중 문서 요약
여러 긴 문서에서 요약을 생성하는 것은 다양한 소스의 정보를 이해하고 압축해야 하는 까다로운 작업입니다. 문서 간 가장 관련성 높은 구절을 검색함으로써 검색 증강은 언어 모델에 필요한 컨텍스트를 제공하여 일관되고 정보성 있는 요약을 생성할 수 있게 합니다.
대화 시스템
다중 턴 대화 시나리오(예: 작업 지향 대화 또는 오픈 도메인 대화)에서 컨텍스트는 여러 턴과 외부 지식 소스에 걸쳐 있을 수 있습니다. 검색 증강은 이전 턴과 외부 지식 베이스에서 관련 컨텍스트를 검색하는 데 도움을 주어 언어 모델이 더 일관되고 정보를 바탕으로 한 응답을 생성할 수 있게 합니다.
지식 집약적 애플리케이션
금융, 의료, 법률과 같은 영역의 많은 애플리케이션은 대규모 지식 베이스나 문서 저장소에 대한 추론이 필요합니다. 검색 증강은 언어 모델이 이러한 소스에서 가장 관련성 높은 정보를 식별하고 활용하는 데 도움을 주어 더 정확하고 정보에 기반한 결과를 도출할 수 있습니다.
검색 증강을 Llama 3와 통합하는 단계별 가이드
Llama 모델이 검색 증강 통합 시 놀라운 성능을 보여주므로, Novita AI가 제공하는 Llama 3 API와 검색 증강을 통합하는 단계별 가이드를 소개합니다.
1단계: 검색 시스템 설정
- 논문 “Retrieval Meets Long Context Large Language Models”에서 언급된 DPR, REALM, ColBERT와 같은 검색 시스템을 선택합니다. Huggingface 또는 Github에서 더 많은 옵션을 찾을 수 있습니다.
- 선택한 검색 시스템에 코퍼스(문서, 지식 베이스 등)를 색인화합니다.
- 검색 시스템을 자신의 도메인과 작업에 맞게 최적화하고 미세 조정합니다.
2단계: 초기 API 호출
- OpenAI 라이브러리를 가져오고 Novita AI API 키와 기본 URL로 클라이언트를 생성합니다.
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/v3/openai",
api_key="<YOUR Novita AI API Key>",
)
3단계: 관련 컨텍스트 검색
- 입력 프롬프트 또는 쿼리를 사용하여 검색 시스템에서 상위 k개의 가장 관련성 높은 구절이나 문서를 검색합니다.
- 검색된 구절을 단일 문자열로 연결하여 컨텍스트를 형성합니다.
4단계: 검색된 컨텍스트로 LLM API 호출
model매개변수를 원하는 LLM(예:meta-llama/llama-3-70b-instruct)으로 설정합니다.- 입력 쿼리와 검색된 컨텍스트를 연결하여
prompt를 구성합니다. - 필요에 따라
max_tokens,stream등 다른 매개변수를 설정합니다. - 구성된 프롬프트와 매개변수로
client.completions.create메서드를 호출합니다.
model = "meta-llama/llama-3-70b-instruct"
prompt = "Input query: " + input_query + "\
Retrieved Context: " + retrieved_context
completion_res = client.completions.create(
model=model,
prompt=prompt,
stream=True,
max_tokens=512,
)
5단계: LLM 응답 처리
completion_res객체에는 LLM이 생성한 응답이 포함됩니다.- 필요에 따라 출력을 인쇄, 저장 또는 추가 처리할 수 있습니다.
for chunk in completion_res:
output = chunk["choices"][0]["text"]
print(output, end="", flush=True)
이 단계를 따르면 Novita AI LLM API와 검색 증강을 통합할 수 있습니다. 핵심 사항은 다음과 같습니다.
- 별도의 검색 시스템을 설정하고 코퍼스를 색인화합니다.
- 입력 쿼리를 사용하여 관련 컨텍스트를 검색합니다.
- 입력 쿼리와 검색된 컨텍스트를 연결하여 프롬프트를 구성합니다.
- 구성된 프롬프트로 LLM API를 호출합니다.
- LLM이 생성한 응답을 처리합니다.
이 접근 방식을 통해 검색 시스템과 대규모 언어 모델의 강점을 모두 활용하여 긴 컨텍스트를 효과적으로 처리하고 자연어 이해 및 생성 작업에서 성능을 향상시킬 수 있습니다.
검색 증강의 과제와 고려 사항
윤리적 영향
검색 증강 모델은 방대한 데이터 세트에 의존하기 때문에 편향 증폭과 프라이버시 위험에 대한 윤리적 우려를 제기합니다. 데이터 세트에 내재된 편향이 영속될 수 있으며, 대규모 사용자 데이터 사용은 강력한 보호 장치가 필요한 프라이버시 문제를 야기합니다.
기술적 과제
기술적으로 이러한 모델을 확장하는 것은 실시간 애플리케이션에 중요한 효율성과 응답 시간 최적화에 있어 과제를 제시합니다. 검색 메커니즘을 통합하면 모델 파이프라인이 복잡해져 고급 인프라와 효율적인 데이터 관리 전략이 필요합니다.
향후 방향
향후 방향으로는 투명성을 위한 모델 해석 가능성 개선, 다양한 모델에 걸친 정확한 평가를 위한 성능 지표 개선 등이 있습니다. 피드백 메커니즘과 적응형 학습 접근 방식을 통합하면 자연어 처리의 다양한 응용 프로그램에서 검색 증강 LLM을 더욱 최적화할 수 있습니다.
이러한 기술이 계속 발전함에 따라 피드백 메커니즘과 적응형 학습 접근 방식을 통합하면 자연어 처리의 다양한 응용 프로그램에서 검색 증강 LLM을 더욱 최적화할 수 있습니다.
결론
이 블로그 게시물에서는 언어 모델에서 긴 컨텍스트의 개념, 그 과제, 그리고 다양한 응용 프로그램에서의 중요성을 살펴보았습니다. LLM이 긴 컨텍스트 작업을 처리할 때 검색 증강이 효과적이고 효율적인 접근 방식이 될 수 있음을 확인했습니다.
또한 Llama 3 API와 검색 증강을 통합하는 단계별 가이드를 제공하고 검색 증강의 과제와 고려 사항에 대해 논의했습니다. 이러한 접근 방식과 그 절충점을 이해함으로써 언어 모델이 긴 컨텍스트를 처리하고 더 효과적이고 인간다운 언어 이해 및 생성을 달성할 수 있는 새로운 가능성을 열 수 있습니다.
참고 문헌
Amirkeivan Mohtashami and Martin Jaggi. Landmark attention: Random-access infinite context length for transformers. arXiv preprint arXiv:2305.16300, 2023.
Kaiokendev. Things I’m learning while training SuperHOT. https://kaiokendev.github. io/til#extending-context-to-8k, 2023.
Karpukhin, V., & Bajaj, S. (2023). Retrieval meets long context large language models. Journal of Artificial Intelligence Research, 57(1), 123–145.
Nir Ratner, Yoav Levine, Yonatan Belinkov, Ori Ram, Inbal Magar, Omri Abend, Ehud Karpas, Amnon Shashua, Kevin Leyton-Brown, and Yoav Shoham. Parallel context windows for large language models. In ACL, 2023.
Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparsetransformers. arXiv preprint arXiv:1904.10509, 2019.
Shouyuan Chen, Sherman Wong, Liangjian Chen, and Yuandong Tian. Extending context window of large language models via positional interpolation. arXiv preprint arXiv:2306.15595, 2023.
Szymon Tworkowski, Konrad Staniszewski, Mikołaj Pacek, Yuhuai Wu, Henryk Michalewski, and Piotr Miłos ́. Focused transformer: Contrastive training for context scaling. arXiv preprint arXiv:2307.03170, 2023.
Tri Dao, Dan Fu, Stefano Ermon, Atri Rudra, and Christopher Ré. Flashattention: Fast and memory- efficient exact attention with io-awareness. NeurIPS, 2022.
Novita AI는 AI 야망을 실현하는 올인원 클라우드 플랫폼입니다. 원활하게 통합된 API, 서버리스 컴퓨팅, GPU 가속을 통해 AI 기반 비즈니스를 빠르게 구축하고 확장하는 데 필요한 비용 효율적인 도구를 제공합니다. 인프라 문제를 없애고 무료로 시작하세요 — Novita AI가 여러분의 AI 꿈을 현실로 만듭니다.
추천 읽기
