難解な技術文書、数百ページに及ぶ財務開示資料、複数の利害関係者が関与する商業契約書の分析は、短いコンテキストウィンドウに制約された従来のAIツールにとって大きな負担となります。Moonshot AIが開発したKimiは、フラッグシップモデルで最大100万トークンをサポートするネイティブな超長文コンテキスト推論機能と、強力な複数ドキュメント処理能力によってこのボトルネックを解消します。本ガイドでは、Kimiを活用して膨大な単一ドキュメントを分析し、複数ファイル間の比較情報抽出を実行し、自動化パイプラインでコンテキストキャッシング(Context Caching)を利用してパフォーマンスとコストを最適化し、厳格な検証管理を必要とする研究やエンタープライズワークフローを構築する手順を解説します。
Kimiの長文コンテキストアーキテクチャとファイル処理仕様の理解
Kimiを使用すれば、AIモデルへの問い合わせ前にドキュメントを手動で細切れに分割する必要がなくなります。Kimi Delta Attention(KDA)とGated Multi-Head Latent Attention(MLA)を組み合わせたハイブリッドアーキテクチャを採用するKimi K3をはじめとする基盤モデルは、文脈の一貫性を失ったり埋もれた詳細を見落としたりすることなく、数十万語に及ぶドキュメント全体の包括的な把握を可能にします。
サポートされているファイル形式と仕様
Kimiは、Webインターフェース、デスクトップワークスペース、および開発者向けAPIを通じて、幅広いドキュメントおよびデータ形式に対応しています。
- テキストおよびOfficeドキュメント:
.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"を指定します。1ファイルあたりの最大サイズは100 MiBです。組織ごとにデフォルトで10 GiBのストレージ容量上限が設定されていますが、アップロード可能なファイル総数に固定の制限はありません。Kimi WebおよびKimi Workのユーザーは、1回の分析セッションで最大50件の個別ドキュメントをアップロードできます。
テキスト抽出とネイティブ視覚処理の違い
Kimiは、テキスト抽出とネイティブ視覚推論の2つの処理経路を明確に区別しています。
- テキスト抽出(
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互換のエンドポイントを提供しています。処理は以下の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の最も強力な強みのひとつは、複数の高密度ドキュメントを同時に評価できる能力です。ファイルを個別に分析して手動で結果を統合する代わりに、複数のファイルを一度に取り込んで、複数ドキュメントにわたる統合分析、契約書のレッドライン(差分比較)、および時系列トレンド分析を実行できます。
複数ファイル分析のインジェスチョンパターン
APIでは、抽出された各ドキュメントを独立したsystemメッセージとして渡し、messages配列の先頭に配置します。
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)対 相手方提示の修正案 | 責任上限、知的財産権の帰属、補償義務、支払い条件における乖離箇所を抽出 | 条項別不一致マトリクス表 |
| 競合製品ベンチマーク | 製品ホワイトペーパー、技術仕様書、データシート | アーキテクチャのスループット、レイテンシ、セキュリティ準拠、ライセンス制限を比較 | 機能対応チェックリストとトレードオフ評価 |
| 学術文献の分野横断的統合 | 関連する仮説を検証している複数の学術論文 | 合意が得られている手法の抽出、矛盾する実験データの分離、先行研究のギャップの特定 | 体系的なテーマ別文献レビュー |
効果的な比較プロンプトの設計
複数ドキュメントを比較する際、「違いを教えてください」といった曖昧な質問では一般的な回答にとどまりがちです。明確な比較軸を定めたプロンプトを構築することが重要です。
- 並列比較表の指定: 列に各ドキュメントを割り当て、行に特定の評価項目(価格、解約条件、準拠法など)を配置した表形式を要求します。
- 情報元の明示を義務化: 抽出されたすべての事実や数値の先頭に、対応するファイル名や識別子を付記するよう指示します。
- 不一致点の直接検証: ファイルBの記述がファイルAにおける誓約事項や主張と矛盾していないかを直接検証させます。
コンテキストキャッシングによるレイテンシとコストの最適化
複数ターンの対話にわたり数十ページのドキュメントを送信し続ける場合、リクエストごとにドキュメント全文を再処理すると計算コストが跳ね上がります。Kimiは、自動化された**コンテキストキャッシング(Context Caching)**エンジンによってこの課題を解決します。
Kimiのコンテキストキャッシングの仕組み
コンテキストキャッシングは、大規模な入力プレフィックスの処理済み中間状態をサーバークラスター上に保持します。後続のリクエストが同一の初期コンテキストを共有している場合、Kimiはプレフィックスの再計算をスキップし、通常の入力トークン料金のわずかな一部のみを課金します。
- 完全自動での有効化: キャッシュオブジェクトの手動登録、キャッシュIDの管理、有効期限(TTL)の設定は一切不要です。
- プレフィックスの閾値: 静的で一貫した初期プロンプトプレフィックスが256トークンを超えると、自動的にキャッシングが作動します。実務におけるドキュメント抽出データは容易にこの閾値を超えるため、ドキュメントQAワークフローは即座に恩恵を受けられます。
- 大幅なコスト削減: コンテキストキャッシュにヒットしたプロンプトトークンは、入力推論コストを最大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"Total Prompt Tokens: {usage.prompt_tokens}")
print(f"Cached Tokens Reused: {cached_tokens}")
コンテキストキャッシングと検索拡張生成(RAG)の比較
生のドキュメントを直接Kimiのコンテキストウィンドウに投入すべきか、外部のベクトルRAGアーキテクチャを構築すべきかを判断することは、運用の簡潔性とコストのバランスを取る上で極めて重要です。
| 評価項目 | Kimi長文コンテキスト + コンテキストキャッシング | 従来のチャンク分割型RAG |
|---|---|---|
| 文脈の完全性 | 全体的な文脈を完全に保持。検索の取りこぼしゼロ。複数ページにまたがる表や章間の依存関係を維持 | チャンク境界での情報切断が発生しやすい。離れた章に分散した微細な文脈を見落とすリスク |
| エンジニアリングの複雑さ | 最小限: テキストをアップロードしてプロンプトを送るのみ。埋め込みモデル、チャンカー、ベクトルDBは不要 | 高度: 埋め込みモデルの選定、チャンク分割ルール、ベクトルインデックス調整、リランカーの構築が必要 |
| レイテンシ特性 | プレフィックスキャッシュ適用後はTTFT 5秒未満。予測可能な応答時間 | 初期検索は高速だが、複数段階の検索とリランキング処理によってレイテンシが累積 |
| コスト構造 | キャッシュ適用時のプレフィックスコストが最大90%削減。固定ドキュメント群に対する反復クエリで高い費用対効果 | 大規模なドキュメント群全体での1クエリあたりの直接費用は低いが、ベクトル基盤の保守コストが継続して発生 |
| 最適な適用領域 | 特定のドキュメント群(1〜50件のファイル、財務監査、法務デューデリジェンス)の精密分析 | 数百万件の社内チケット、メール、Wikiページなどを横断する全社的な汎用検索 |
プロンプト設計のベストプラクティスと出力ガバナンス
数百ページに及ぶドキュメントを分析する際に信頼性の高い結果を得るには、規律あるプロンプト作成、明確な回答制約、および体系的な事実検証が不可欠です。
明示的なルールによる回答の制約
制約を与えない場合、モデルは冗長で抽象的な記述を出力しがちです。システムプロンプトに専用のルールセットを追加することで、簡潔で監査可能な回答を強制できます。
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の長文コンテキストアテンション機構は検索に起因するハルシネーションを最小限に抑えますが、重大な意思決定には体系的な検証が必要です。
- 追跡可能な注記の確認: 財務数値には、会計注記に埋もれた非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: 対話型のグラフィカルな作業環境を求めるビジネスプロフェッショナル向け。ドキュメントのアップロード、対話型Q&A、ドキュメントの該当箇所への引用リンク表示、ならびにディープリサーチやスライド生成ツールとのネイティブ連携を備えています。 - Kimiメンバーシップサブスクリプション: パワーユーザー向けに、より大きな計算リソースの割り当て、ピーク時の優先生成、拡張された複数ターンセッションの上限枠を提供する個人向けプランです。
- Kimi APIオープンオラットフォーム(
platform.kimi.com): 従量課金制の開発者向けプラットフォームで、消費された入力、出力、およびキャッシュトークンに対してのみ課金されます。自動化されたバックオフィスパイプライン、エンタープライズETL処理、カスタムエージェントフレームワークに統合できます。
エンタープライズデータ保護とゼロデータ保持(ZDR)ポリシー
機密性の高い知的財産、独自の財務諸表、機密性の高い顧客契約を取り扱う組織にとって、データ漏洩の防止は最重要事項です。
- デフォルトのAPIプライバシー保護: Kimi Open Platform 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