방대한 기술 문서, 수백 쪽에 달하는 재무 공시 자료, 복잡한 다자간 상업 계약서를 분석할 때 짧은 컨텍스트 윈도우에 갇힌 기존 AI 도구는 한계에 부딪히기 쉽습니다. Moonshot AI가 개발한 Kimi는 플래그십 모델에서 최대 100만 토큰을 지원하는 네이티브 초장문 컨텍스트 추론 기능과 강력한 다중 문서 처리 역량을 통해 이러한 병목 현상을 해결합니다. 본 가이드에서는 Kimi를 활용하여 방대한 단일 문서를 분석하고, 여러 파일 간의 비교 정보 추출을 수행하며, 자동화 파이프라인에서 컨텍스트 캐싱(Context Caching)을 활용해 비용과 지연 시간을 최적화하고, 높은 정확도가 요구되는 연구 및 엔터프라이즈 워크플로 전반에 걸쳐 체계적인 검증 제어를 적용하는 방법을 설명합니다.
Kimi의 장문 컨텍스트 아키텍처와 파일 처리 규격의 이해
Kimi를 사용하면 AI 모델에 질의하기 전 문서를 인위적으로 작게 쪼개는 번거로운 전처리 작업이 필요하지 않습니다. Kimi Delta Attention(KDA)과 Gated Multi-Head Latent Attention(MLA)을 결합한 하이브리드 아키텍처 기반의 Kimi K3를 비롯한 핵심 모델은 맥락의 일관성을 잃거나 세부 사항을 놓치지 않고 수십만 단어에 달하는 텍스트 전체를 총체적으로 이해합니다.
지원 파일 형식 및 기술 사양
Kimi는 웹 인터페이스, 데스크톱 워크스페이스 및 개발자 API 전반에서 폭넓은 문서와 데이터 형식을 지원합니다.
- 텍스트 및 오피스 문서:
.pdf,.docx,.doc,.txt,.md,.epub,.dot,.mobi,.html - 스프레드시트 데이터:
.xlsx,.xls,.csv - 프레젠테이션:
.pptx,.ppt - 코드 및 설정 파일:
.py,.js,.ts,.tsx,.json,.yaml,.yml,.go,.java,.cpp,.c,.cs,.sql,.log,.ini,.conf
개발자 애플리케이션에서 텍스트 추출 목적으로 업로드하는 파일은 purpose="file-extract"로 지정합니다. 단일 파일의 최대 크기는 100 MiB입니다. 개별 조직 단위로 기본 10 GiB의 스토리지 용량 한도가 제공되며, 업로드할 수 있는 파일의 총 개수에는 제한이 없습니다. Kimi Web 및 Kimi Work 사용자는 단일 분석 세션에서 최대 50개의 개별 문서를 동시에 업로드할 수 있습니다.
텍스트 추출과 네이티브 시각적 처리의 차이
Kimi는 텍스트 추출 파이프라인과 네이티브 시각 추론 메커니즘을 명확하게 구분합니다.
- 텍스트 추출(
file-extract): 문서, 스프레드시트, 프레젠테이션을 구조화된 텍스트로 변환합니다. Kimi의 추출 엔진은 제목 계층 구조, 문서 개요, 복잡한 수학 공식, 서식화된 데이터 표를 온전하게 보존합니다. - 멀티모달 시각 처리(
image또는video): 텍스트 레이어가 없는 스캔 이미지 기반 PDF와 독립 이미지 파일은 표준 텍스트 추출을 거치지 않고 Kimi의 시각 인코더(예: MoonViT)로 직접 전달되어 광학 문자 인식(OCR) 및 레이아웃 분석을 수행합니다.
방대한 단일 문서 분석을 위한 단계별 워크플로
학술 논문, 연례 10-K 사업보고서, 임상시험 보고서 등 어떤 문서를 다루든 Kimi를 활용한 단일 종합 문서 분석은 업로드부터 정밀 검증까지 체계적인 절차를 거칩니다.
옵션 A: Kimi Web을 통한 대화형 문서 탐색
브라우저나 데스크톱 클라이언트 환경에서 작업하는 리서치 애널리스트, 법무팀 및 지식 근로자에게 적합한 방식입니다.
- 인터페이스 접속:
kimi.ai(또는kimi.com)에 접속하여 새 대화를 시작합니다. - 문서 첨부: 첨부 아이콘을 클릭하거나 입력창으로 파일을 직접 끌어다 놓습니다.
- 파싱 완료 대기: 시스템이 문서를 파싱한 후 전체 텍스트 추출이 완료되었음을 알리는 파일 태그를 표시합니다.
- 초기 개요 생성: 세부 사항으로 들어가기 전 문서의 전체 범위를 파악하기 위해 구조화된 개요를 요청합니다.
- 대화형 심층 질의: 특정 섹션, 회계 기간 또는 기술 정의를 명시하여 정밀한 질의를 진행합니다.
옵션 B: Kimi API를 통한 프로그래밍 방식의 문서 분석
문서 분석 기능을 백엔드 파이프라인에 통합하려는 개발자를 위해 Kimi는 https://api.moonshot.cn/v1에서 OpenAI 호환 API 엔드포인트를 제공합니다. 분석은 다음과 같은 4단계로 간결하게 구현됩니다.
import os
from pathlib import Path
from openai import OpenAI
# Moonshot API를 대상으로 클라이언트 초기화
client = OpenAI(
api_key=os.environ["MOONSHOT_API_KEY"],
base_url="https://api.moonshot.cn/v1",
)
# 1단계: 텍스트 추출용 문서 업로드
uploaded_file = client.files.create(
file=Path("annual_report_2025.pdf"),
purpose="file-extract",
)
# 2단계: 추출된 텍스트 내용 조회
extracted_text = client.files.content(file_id=uploaded_file.id).text
# 3단계: 추출된 텍스트를 시스템 메시지에 주입
system_persona = (
"You are Kimi, an AI assistant developed by Moonshot AI. Provide accurate, "
"well-structured, and verified answers based strictly on provided documentation."
)
messages = [
{"role": "system", "content": system_persona},
{"role": "system", "content": extracted_text},
{
"role": "user",
"content": "주요 매출 동인에 대한 경영진 요약을 제공하고, 본 공시에서 밝힌 상위 3대 운영 리스크를 식별해 주세요.",
},
]
# 4단계: Kimi K3를 사용하여 추론 실행
response = client.chat.completions.create(
model="kimi-k3",
messages=messages,
temperature=0.3,
)
print(response.choices[0].message.content)
[!IMPORTANT] API를 통해 문서를 조회할 때는 항상 추출된 텍스트 문자열을 가져와
messages내부에 직접 전달해야 합니다. 원본file_id를 메시지 내용으로 전달하거나 대용량 문서를 base64 문자열로 인라인 처리하지 마십시오. 이는 불필요한 토큰 낭비를 초래하며 텍스트 추출 최적화 파이프라인을 우회하게 됩니다.
심층 단일 문서 분석을 위한 핵심 프롬프트 패턴
방대한 텍스트에서 최상의 추출 결과를 도출하려면 명확한 관점의 프롬프트를 구성해야 합니다.
- 구조화된 요약: 문서를 주제별 챕터나 보고서 섹션별로 분해하여 각 부분의 핵심 주장과 결론을 요약하도록 요청합니다.
- 세부 데이터 포인트 추출: 매출총이익률 변동, 총 자본 지출 규모, 부채 만기 일정 등 구체적인 수치와 관련 주석 설명을 함께 찾아내도록 지시합니다.
- 논리적 엄밀성 검증: 복잡한 계약서 내에 숨겨진 내부 모순, 우발 부채, 검증되지 않은 전제 조건을 식별하도록 요구합니다.
다중 파일 정보 추출 및 비교 분석
Kimi의 가장 강력한 실무적 장점 중 하나는 다수의 방대한 문서를 동시에 평가할 수 있다는 점입니다. 개별 파일을 따로 분석한 뒤 수작업으로 취합할 필요 없이 여러 파일을 한 번에 입력하여 문서 간 교차 종합 분석, 계약서 차이점 대조(Redline), 시계열 추세 분석을 수행할 수 있습니다.
다중 파일 분석을 위한 컨텍스트 구성 패턴
API 호출 시 개별 문서는 messages 배열의 시작 부분에 독립된 system 메시지로 배치됩니다.
def prepare_multi_file_context(file_paths: list[str]) -> list[dict]:
"""여러 파일을 업로드하고 추출된 각 문서에 대한 system 메시지를 생성합니다."""
file_messages = []
for path in file_paths:
file_obj = client.files.create(file=Path(path), purpose="file-extract")
file_text = client.files.content(file_id=file_obj.id).text
file_messages.append({"role": "system", "content": file_text})
return file_messages
# 여러 연도의 사업보고서 또는 경쟁사 보고서 입력
docs = ["filing_2023.pdf", "filing_2024.pdf", "filing_2025.pdf"]
file_messages = prepare_multi_file_context(docs)
multi_doc_messages = [
*file_messages,
{"role": "system", "content": system_persona},
{
"role": "user",
"content": (
"2023년, 2024년, 2025년의 재무 성과를 비교해 주세요. "
"총매출, 영업이익률, 잉여현금흐름을 비교하는 Markdown 표를 작성하고, "
"주요 이익률 변동 원인을 설명해 주세요."
),
},
]
completion = client.chat.completions.create(
model="kimi-k3",
messages=multi_doc_messages,
)
print(completion.choices[0].message.content)
높은 부가가치를 창출하는 다중 파일 활용 사례
단일 컨텍스트 윈도우 내에서 다수의 문서를 분석하면 다음과 같은 실무 워크플로를 구현할 수 있습니다.
| 활용 사례 | 입력 문서 | 추출 및 종합 분석 목표 | 출력 형식 |
|---|---|---|---|
| 다년도 재무 추세 분석 | 연속된 연차 보고서(10-K, 감사보고서) | 매출 성장 추이, 부채 변동 추세, 시간에 따른 주요 리스크 요인 도출 | 비교 지표 표 및 편차 분석 보고서 |
| 계약서 대조 및 공급업체 조건 조율 | 표준 기본계약서(MSA) vs 상대방 수정안 | 책임 한도, 지식재산권 귀속, 손해배상 면책, 대금 지급 조건의 차이점 식별 | 조항별 불일치 대조 매트릭스 |
| 경쟁사 벤치마킹 | 제품 백서, 기술 사양서, 데이터시트 | 시스템 아키텍처 처리량, 지연 시간, 보안 규정 준수, 라이선스 제약 비교 | 기능 일치 체크리스트 및 장단점 평가 |
| 학제 간 문헌 종합 분석 | 관련 가설을 다루는 여러 편의 과학 논문 | 공통 연구 방법론 추출, 상충하는 실험 결과 분리, 기존 연구의 공백 규명 | 체계적인 주제별 문헌 고찰 보고서 |
효과적인 비교 분석 프롬프트 설계
여러 문서를 비교할 때 "차이점을 알려줘"와 같은 모호한 질문은 일반적인 답변으로 이어지기 쉽습니다. 명확한 비교 기준을 정의하는 프롬프트를 작성해야 합니다.
- 병렬 비교표 요구: 각 열은 서로 다른 문서를 나타내고 각 행은 특정 속성(예: 가격 정책, 계약 해지권, 준거법)을 다루도록 표 형식을 지정합니다.
- 출처 명시 의무화: 추출된 모든 사실이나 데이터 앞에 해당 출처 파일명이나 문서 식별자를 반드시 붙이도록 지시합니다.
- 상충 내용 직접 검증: 파일 B의 진술이 파일 A에 명시된 약정이나 주장과 모순되는지 여부를 직접 점검하도록 유도합니다.
컨텍스트 캐싱을 통한 지연 시간 및 호출 비용 최적화
여러 대화 턴에 걸쳐 수십 쪽의 문서를 반복 전달할 때 매 요청마다 전체 텍스트를 다시 처리하면 막대한 연산 비용이 발생합니다. Kimi는 자동화된 컨텍스트 캐싱(Context Caching) 엔진을 통해 이 문제를 해결합니다.
Kimi 컨텍스트 캐싱의 작동 원리
컨텍스트 캐싱은 방대한 입력 접두사(Prefix)의 연산 완료 상태를 서버 클러스터에 캐싱합니다. 후속 요청이 동일한 초기 컨텍스트를 포함하는 경우, Kimi는 접두사 재연산을 생략하고 표준 입력 요금의 일부만을 청구합니다.
- 완전 자동 활성화: 캐시 객체를 수동으로 등록하거나 캐시 ID를 관리하거나 유효 기간(TTL)을 설정할 필요가 없습니다.
- 접두사 임계값: 안정적인 초기 프롬프트 접두사가 256토큰을 초과하면 캐싱이 자동으로 적용됩니다. 실제 문서 추출 데이터는 이 임계값을 쉽게 넘어서므로 문서 질의응답 작업에서 즉시 캐싱 혜택을 누릴 수 있습니다.
- 상당한 비용 절감: 컨텍스트 캐시에 적중된 프롬프트 토큰은 입력 추론 비용을 최대 90%까지 절감합니다.
- 첫 번째 토큰 생성 시간(TTFT) 단축: 사전 연산된 어텐션 상태를 재사용하므로 장문 컨텍스트 요청의 평균 응답 지연 시간이 5초 미만으로 단축됩니다.
아키텍처 핵심 규칙: 접두사 일관성 유지
캐시 적중률을 극대화하려면 messages 배열의 구조를 일관되게 유지해야 합니다. 프롬프트의 정적 요소(문서 내용, 시스템 페르소나, 출력 형식 규칙)를 배열의 맨 앞에 고정하고, 대화의 질의응답 턴은 반드시 배열 끝에 순차적으로 추가해야 합니다.
# 고정 문서 접두사 (대화 턴 간 자동 캐싱)
base_context = [
*file_messages,
{"role": "system", "content": system_persona},
{"role": "system", "content": "Format all tabular data in GitHub Flavored Markdown."},
]
# 1턴 대화
conversation = list(base_context)
conversation.append({"role": "user", "content": "기재된 총자산 규모는 얼마인가요?"})
turn1_reply = client.chat.completions.create(model="kimi-k3", messages=conversation)
# 2턴 대화: 기존 접두사를 유지하여 컨텍스트 캐시 적중
conversation.append({"role": "assistant", "content": turn1_reply.choices[0].message.content})
conversation.append({"role": "user", "content": "그 수치는 현금성 자산과 비교할 때 어떤가요?"})
turn2_reply = client.chat.completions.create(model="kimi-k3", messages=conversation)
# 토큰 사용량 메타데이터에서 캐시 활용 내역 확인
usage = turn2_reply.usage
cached_tokens = getattr(usage.prompt_tokens_details, "cached_tokens", 0)
print(f"총 입력 토큰 수: {usage.prompt_tokens}")
print(f"재사용된 캐시 토큰 수: {cached_tokens}")
컨텍스트 캐싱과 검색 증강 생성(RAG)의 비교
원문 문서를 Kimi의 컨텍스트 윈도우에 직접 투입할지 외부 벡터 RAG 아키텍처를 구축할지 판단하는 것은 엔지니어링 복잡도와 비용의 균형을 맞추는 핵심 요소입니다.
| 평가 기준 | Kimi 장문 컨텍스트 + 컨텍스트 캐싱 | 기존 청크 분할 기반 RAG |
|---|---|---|
| 맥락의 온전성 | 완벽한 전역 맥락; 검색 누락 없음; 여러 페이지에 걸친 표 및 챕터 간 의존성 온전하게 유지 | 청크 경계 절단에 취약; 여러 챕터에 분산된 미묘한 단서를 놓칠 위험 존재 |
| 엔지니어링 복잡도 | 최소화: 텍스트 업로드 후 질의만 수행; 임베딩 모델, 청커, 벡터 데이터베이스 불필요 | 높음: 임베딩 모델 선정, 청크 분할 규칙 설계, 벡터 인덱스 튜닝, 재순위화 모델 구축 필요 |
| 응답 지연 시간 | 접두사 캐시 적중 시 TTFT 5초 미만; 안정적이고 예측 가능한 응답 속도 | 초기 검색은 빠르나 다단계 검색 및 재순위화 과정을 거치며 지연 시간 누적 |
| 비용 구조 | 캐시 적중 시 접두사 비용 최대 90% 절감; 고정 문서군 대상 반복 질의 시 뛰어난 가성비 | 초대용량 문서 코퍼스에서 단일 질의 비용은 낮으나 벡터 인프라 유지 고정비 발생 |
| 최적 적용 영역 | 특정 문서 묶음 집중 분석(1~50개 파일, 재무 감사, 법률 실사, 딜리전스) | 수백만 건의 사내 티켓, 이메일, 위키 문서를 아우르는 전사적 범용 검색 |
프롬프트 작성 권장 사항 및 출력 거버넌스
수백 쪽에 달하는 문서를 분석할 때 신뢰할 수 있는 결과를 얻으려면 엄격한 프롬프트 구조 설계, 명확한 답변 제약 조건, 체계적인 사실 검증 절차가 필수적입니다.
명시적 규칙을 통한 응답 제약
제약 조건이 없으면 모델은 불필요하게 장황하고 모호한 설명을 늘어놓을 수 있습니다. 시스템 프롬프트에 구체적인 규칙을 추가하여 간결하고 검증 가능한 답변을 도출할 수 있습니다.
structured_rules = """
다음 답변 제약 조건을 엄격히 준수하십시오:
1. 답변은 최대 5개의 글머리 기호 항목으로 작성하십시오.
2. 모든 주장이나 수치 지표에 대해 정확한 출처 섹션, 페이지 번호 또는 표 제목을 인용하십시오.
3. 업로드된 파일에서 답을 직접 도출할 수 없는 경우, "제공된 문서에 해당 정보가 없습니다."라고 명시하십시오.
4. 추측이나 주관적 의견을 배제하고 일반적인 업계 상투어를 덧붙이지 마십시오.
"""
governed_messages = [
*file_messages,
{"role": "system", "content": system_persona},
{"role": "system", "content": structured_rules},
{"role": "user", "content": "고객 이탈률과 유지율 벤치마크 지표를 요약해 주세요."},
]
주요 재무 및 법률 사실의 엄밀한 검증
Kimi의 장문 컨텍스트 어텐션 메커니즘은 검색 과정에서 발생하는 환각을 최소화하지만, 중대한 의사결정 시에는 체계적인 검증이 수반되어야 합니다.
- 추적 가능한 주석 검증: 재무 지표에는 회계 주석에 숨겨진 Non-GAAP 조정이나 재작성 항목이 자주 포함됩니다. 보고된 수치와 연계된 모든 설명 주석을 확인하도록 Kimi에 지시하십시오.
- 누락 사항 역추적 검토: 계약서 초안에서 필수 조항(감사권, 데이터 소유권 보장, 손해배상액 예정 등)이 누락되었는지 적극적으로 점검하도록 프롬프트를 구성하십시오.
- 핵심 조항 원문 대조: 핵심 계약 조건이나 규제 준수 확약 사항의 경우 Kimi가 추출한 발췌문을 원본 문서 페이지와 직접 대조하여 문장 부호나 단서 조항이 왜곡되지 않았는지 확인하십시오.
스토리지 및 파일 라이프사이클 관리
업로드된 파일은 향후 추출 및 캐싱 작업을 위해 사용자 계정에 유지되며, 조직의 스토리지 할당량(기본 10 GiB)에 반영됩니다. 분석이 완료되면 임시 파일을 정리하여 향후 작업을 위한 가용 공간을 확보하십시오.
# 분석 완료된 특정 파일 삭제
client.files.delete(file_id=uploaded_file.id)
# 일괄 정리: 모든 임시 추출 파일 목록 조회 후 삭제
all_files = client.files.list()
for file_record in all_files.data:
client.files.delete(file_id=file_record.id)
플랫폼 옵션, 이용 등급 및 엔터프라이즈 프라이버시
Moonshot AI는 개별 분석가, 개발팀, 규제 준수 기업 환경에 맞춘 다양한 도입 경로와 데이터 보호 정책을 제공합니다.
일반 워크스페이스와 개발자 API 간의 선택
- Kimi Web(
kimi.com/kimi.ai) 및 Kimi Work: 직관적인 그래픽 작업 환경을 원하는 비즈니스 전문가를 위해 설계되었습니다. 문서 업로드, 대화형 질의응답, 원문 위치로 바로 연결되는 인용 링크 표시 기능과 함께 딥리서치 및 슬라이드 제작 도구와의 네이티브 연동을 지원합니다. - Kimi 멤버십 구독: 파워 유저를 위한 개인 구독 상품으로, 더 많은 연산 리소스 할당, 사용량이 몰리는 피크 시간대 우선 처리, 확장된 멀티턴 세션 한도를 제공합니다.
- Kimi 오픈 플랫폼 API(
platform.kimi.com): 실제 소비된 입력, 출력 및 캐시 토큰에 대해서만 과금하는 종량제 개발자 플랫폼입니다. 백오피스 자동화 파이프라인, 기업용 ETL 작업, 커스텀 에이전트 프레임워크에 원활하게 통합할 수 있습니다.
기업용 데이터 보호 및 제로 데이터 보존(ZDR) 정책
민감한 지식재산권, 독점 재무제표, 기밀 고객 계약서를 취급하는 기업의 경우 데이터 유출 방지가 최우선 과제입니다.
- 기본 API 개인정보 보호: Kimi 오픈 플랫폼 API를 통해 전송된 데이터는 Moonshot AI의 파운데이션 모델 학습에 일절 활용되지 않습니다.
- 제로 데이터 보존(ZDR) 모드: 기업 고객은 ZDR 정책 활성화를 신청할 수 있습니다. 이 정책이 적용되면 프롬프트와 모델 출력 결과는 추론 생성 연산 주기 동안 서버 휘발성 메모리에만 임시 상주하며, 응답 전송이 완료되는 즉시 완전히 삭제됩니다. 플랫폼 스토리지에 요청 데이터의 영구 로그가 남지 않으므로 엄격한 규제 준수 및 거버넌스 요구 사항을 충족합니다.
출처
- Kimi API PDF Q&A and Document Processing Guide
- Kimi API File-Based Question Answering Documentation
- Kimi API File Upload and Parsing Specifications
- Kimi API Automatic Context Caching Overview
- Moonshot AI Zero Data Retention (ZDR) Enterprise Policy
- Kimi Product Plans and Subscription Tiers
- Kimi Membership and Work Platform Overview