google/langextract

A Python library for extracting structured information from unstructured text using LLMs with precise source grounding and interactive visualization.

LangExtract – LLMによる構造化抽出

機能 – LangExtractは、非構造化テキスト(臨床メモ、文学作品、レポートなど)から構造化情報(エンティティ、属性、関係)を抽出できるPythonライブラリです。テキストを少数ショットのプロンプトとともに大規模言語モデル(LLM)に送信し、返された各データを元のドキュメント内の正確な文字スパンにマッピングします。また、インタラクティブなHTMLビジュアライザーを生成し、各抽出結果をコンテキスト内でハイライト表示できます。

重要性 –

  • グラウンデッドな結果: 各抽出結果がソース位置にリンクされ、検証が容易になり、トレーサビリティが必要なダウンストリームパイプライン(例:医療監査)をサポートします。
  • 長文ドキュメントに対応: テキストは自動的にチャンク分割され、並列処理され、再現性を向上させるために複数回のパスを実行できます。
  • モデル非依存: Google Gemini(クラウド)、OpenAIモデル、Ollama経由のローカルモデルをサポート。プラグインシステムによりカスタムプロバイダーも追加可能です。
  • ファインチューニング不要: プロンプトと少数の例を提供するだけで、LLMの世界知識をプロンプトエンジニアリングで活用します。

始め方 –

  1. pip install langextract(またはソース/Docker)でインストール。
  2. 抽出タスクを説明する短いプロンプトを書き、望ましい出力形式を示す1つ以上のExampleDataオブジェクトを提供します。
  3. lx.extract(text_or_documents, prompt_description, examples, model_id=…)を呼び出します。
  4. lx.io.save_annotated_documentsで結果をJSONLファイルに保存し、lx.visualizeで視覚化HTMLファイルを生成します。

典型的なワークフロースニペット

import langextract as lx, textwrap

prompt = "登場順にキャラクター、感情、関係を抽出してください。正確なテキストを使用してください。"
examples = [
    lx.data.ExampleData(
        text="ROMEO. But soft! …",
        extractions=[
            lx.data.Extraction("character", "ROMEO", {"emotional_state": "wonder"}),
            lx.data.Extraction("emotion", "But soft!", {"feeling": "gentle awe"}),
        ],
    )
]

result = lx.extract(
    text_or_documents="Lady Juliet gazed longingly at the stars…",
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-3.5-flash",
)

lx.io.save_annotated_documents([result], "extraction_results.jsonl")
html = lx.visualize("extraction_results.jsonl")
open("visualization.html", "w").write(html.data)

サポートされているバックエンド –

  • Google Gemini(クラウド、LANGEXTRACT_API_KEYが必要)。
  • OpenAI(gpt‑4o、gpt‑4o‑miniなど。オプションでlangextract[openai])。
  • Ollama(gemma2:2bなどのローカルモデル向け。APIキー不要)。
  • カスタムプロバイダーは、軽量プラグインレジストリを介して別パッケージとして追加できます。

スケーラビリティ機能 –

  • 並列チャンク処理(max_workers)。
  • 複数抽出パス(extraction_passes)。
  • Vertex AIバッチAPI統合によるコスト効率の高い大規模ジョブ。

詳細情報 –

  • ライブデモ: https://google‑langextract.hf.space/(ブラウザでロミオとジュリエット抽出)。
  • docs/フォルダ内の完全なドキュメント(スキーマ使用法、バッチAPI、プロバイダープラグインガイドを含む)。
  • 長文テキスト、薬剤抽出、放射線レポート構造化(RadExtract)のサンプルノートブック。

コミュニティと貢献 – リポジトリにはコミュニティ構築のモデルプロバイダーリストが含まれており、プルリクエストを歓迎します。貢献にはコントリビューターライセンス契約が必要です。


LangExtractは、LLMを利用した情報抽出を目指す本物のオープンソースプロジェクトであり、AI/MLツール分野に完全に適合しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト