ハルシネーションを許さない。LangExtractで実現する根拠(ソース)付きの情報抽出の実践


ハルシネーションを許さない。LangExtractで実現する根拠(ソース)付きの情報抽出の実践

google/langextract

2025-12-24

「彼女の下着は何色?」という、一歩間違えれば通報案件の問いを、LangExtractがどう鮮やかに(かつ紳士的に)解決するのか……。コント仕立てのサンプルコードと一緒に見ていきましょう!

一言でいうと、「LLMを使って、超高精度かつ『証拠付き』でテキストを構造化データ(JSON等)にするライブラリ」です。

出典(ソース)の明確化
「この情報は元の文章の〇文字目〜〇文字目にあるよ」という位置情報を正確に返してくれます。

構造化の安定感
LLMの出力は揺れがちですが、スキーマ定義とfew-shot(少数の例示)で、ガチガチに固まったJSONを生成できます。

長文に強い
並列処理やチャンク分割が組み込まれており、長いドキュメントでも「情報の取りこぼし(Needle In A Haystack)」を最小限に抑えます。

まずは pip でサクッとインストールしましょう。

pip install langextract

※Google AI StudioなどのAPIキーが必要です。環境変数 LANGEXTRACT_API_KEY に設定しておくとスムーズです。

さて、ここからは「浮気を疑う彼氏 vs 証拠を突きつけるLangExtract」という設定で、実際にコードを動かしてみましょう。

あなたは探偵エンジニアです。ターゲットの「日記(非構造化データ)」から、「誰が」「何色の下着を」身につけていたか、証拠(原文の位置)付きで抜き出さなければなりません。

import langextract as lx
import os

# 1. 抽出したい項目の定義(プロンプト)
PROMPT = "登場人物の服装、特に下着の色に関する情報を抽出してください。"

# 2. Few-shot(例示)の作成:これで抽出精度が爆上がりします
examples = [
    lx.data.ExampleData(
        text="A子さんは情熱的な赤いランジェリーを選んだ。",
        entities=[
            {"person": "A子", "item": "ランジェリー", "color": "赤"}
        ]
    )
]

# 3. 解析対象の「怪しい日記」(非構造化テキスト)
suspicious_diary = """
12月24日、晴れ。
今日は特別な日。彼女は「今日は清楚に行きたいの」と言って、
真っ白なレースの下着を身にまとっていた。
でも、クローゼットの奥には昨日着ていたであろう
黒いシルクのブラジャーが脱ぎ捨てられていたんだ……。
"""

# 4. 実行!
results = lx.extract(
    text=suspicious_diary,
    prompt=PROMPT,
    examples=examples,
    model_name="gemini-1.5-flash" # モデル名は適宜変更
)

# 5. 結果を表示(エンジニア的に構造化データを確認)
for doc in results:
    for entity in doc.entities:
        # entity.span で「原文のどこにあるか」が分かります!
        print(f"【抽出】 誰: {entity.data['person']}, 色: {entity.data['color']}, アイテム: {entity.data['item']}")
        print(f"  └─ 証拠(原文): '{entity.text}' (位置: {entity.span})\n")

このコント(コード)の凄いところは、単に「白」と答えるだけでなく、「ここから抽出しました!」というスパン(文字位置)を保持している点です。

契約書解析
「有効期限」や「金額」を抽出する際、どの条文に基づいているか即座にハイライト表示できます。

医療・臨床記録
膨大なカルテから、副作用の記述を「原文の場所」と共にリスト化できます。

カスタマーサポート
お問い合わせ内容から、製品名と不具合状況を正確に構造化し、エビデンス付きでDBに登録できます。

LangExtractには、抽出結果をHTMLでリッチに表示する機能もあります。

# 抽出結果をHTMLとして保存(ブラウザで証拠をハイライト確認できる!)
html_content = lx.visualize(results)
with open("evidence_report.html", "w", encoding="utf-8") as f:
    f.write(html_content)

google/langextract は、LLMの「なんとなくの回答」を、「信頼できる構造化データ」へと昇華させる強力なツールです。

「彼女の下着は何色か?」という問いに対しても、 「この日記の35文字目から45文字目に『真っ白なレースの下着』と書いてあります!」 と、システムが完璧な証拠を突きつけてくれるようになります。


google/langextract




ソフトウェアエンジニア必見!Parlantで始める自律型AIエージェント入門

想像してみてください。あなたは巨大な湖(=現実世界の複雑なタスク)で、一人でたくさんの魚(=タスクの実行)を釣ろうとしています。これまでは、魚を一匹一匹、網で捕まえていたかもしれません。しかし、もし、あなたが指示を出すだけで、自動で複数の網を使いこなし、最適な場所で、効率よく魚を釣り上げてくれる優秀な「釣り名人」がいたらどうでしょう?


動画ファイルが賢くなる?NLPとOpenCVでテキスト検索を可能にする「memvid」とは

「memvid」は、Olow304/memvid というGitHubリポジトリで公開されている、Pythonで書かれたライブラリです。NLP(自然言語処理)とOpenCV(コンピュータービジョンライブラリ)を組み合わせて、テキスト情報を動画ファイル(MP4)の中に効率的に保存し、高速な意味検索を可能にします。


サーバーレス&シングルファイル!Pythonライブラリ「memvid」で実現する最小構成のAI長期記憶

Aさん(部長)「いや〜、最近のAIエージェントは物忘れがひどくて困るよ。昨日の打ち合わせ内容を忘れて、また同じ質問をしてくるんだ。まるで私のスライスショットの癖を忘れて、毎回池に打ち込むキャディみたいだよ!」Bさん(エンジニア)「部長、それは『長期記憶』が足りないんですよ。普通はRAG(ラグ)っていう複雑な仕組みを作るんですけど、データベースを立てたり、ベクトル検索の設定をしたり……。例えるなら、パター一本でいいのに、わざわざ大型ダンプカーで芝を整えに行くような手間がかかるんです。」


AIアプリケーション開発のためのレシピブック

今日は「Haystack」という、AIの世界で最近話題の新しいカクテルを紹介させてください。これ、ただのAIじゃなくて、色々なAIの材料を組み合わせて、お客様の好みにぴったりの一杯を作り出すためのツールなんです。ソフトウェアエンジニアの視点から言えば、Haystackは例えるなら「AIアプリケーション開発のためのシェイカーとレシピブック」です。


技術探求の羅針盤!stanford-oval/stormが導く、引用付きレポート生成の未来

未来はいつも不確実で、新しい技術の波は常に押し寄せますよね?特に「あのLLM(大規模言語モデル)ってやつ、一体何ができて、どうやって仕事に活かせばいいんだ?」と、ぼんやりとした不安を抱えている人もいるかもしれません。でも、心配ご無用!今日、あなたにご紹介するstanford-oval/stormは、そんなあなたの目の前の霧を晴らし、新しい知識の地平を切り開く、まさに「嵐」のようなシステムなのです!


ソフトウェアエンジニアのためのtheHarvester入門: セキュリティとOSINT活用法

今日はlaramies/theHarvesterについて、ソフトウェアエンジニアの皆さんに役立つ情報をお届けしますね!theHarvesterは、まるで雲の中から雨粒を探すように、インターネットの広大な情報の中から、メールアドレスやサブドメインといった貴重な情報を収集してくれる、とっても賢いツールなんです


【エンジニア向け】RAGの常識を覆す!ストレージ97%削減のプライベート検索技術「LEANN」徹底解説

こんにちは!未来の技術を形にするソフトウェアエンジニアの皆さん、お疲れ様です。今回ご紹介するのは、まるで「どこでもドア」のように、皆さんの開発環境に革命をもたらすかもしれない、すごい道具(ライブラリ)、「LEANN」です。yichuan-wさんが開発されたこのライブラリは、皆さんが今注目している「RAG (Retrieval-Augmented Generation / 検索拡張生成)」という技術を、速く、正確に、そして何よりもプライベートに、個人のデバイスで実現するための画期的なアプローチを提供します。


見えない壁を壊せ!cuTileが導く、並列計算という名の密室からの脱出

私はこの難解な事件を共に紐解くパートナーです。ここでは、複雑な並列計算の世界をNVIDIA/cutile-pythonという鍵を使って、鮮やかに解決してみせましょう。GPUの中は、数千ものスレッドがひしめき合う巨大な密室です。これまでのCUDAプログラミング(C++)は、まるで複雑な動機や証拠品を一つずつ手作業で整理するような、非常に骨の折れる作業でした。


ACL 2024採択!LLaMA-Factoryが変えるAIモデル開発の常識

おっと、あなたはソフトウェアエンジニアさんですね!ここでは、「hiyouga/LLaMA-Factory」という、とっても強力なツールキットについて、恐怖の館. ..ではなく、知識の館で詳しくご紹介しましょう!「hiyouga/LLaMA-Factory」は、まるで高性能なお化け除けのお札のように、大規模言語モデル(LLMs)やマルチモーダルモデル(VLMs)のファインチューニングを効率的かつ統一的に行うための強力なフレームワークです。


「情報を探す時間」を消滅させるAIパートナー:MineContextの技術スタック(PythonによるRAGとElectron/ReactによるUX)

「落ち着け、相棒!見ろ、このキーワードだ. ..volcengine/MineContext、electron、react、python. ..そして『コンテキストアウェアなAIパートナー』だと!?これはただの事件じゃない、ソフトウェア開発における『生産性の殺人事件』だ!」