ハルシネーションを許さない。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




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

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


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

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


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

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


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

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


【ソフトウェアエンジニア向け】ルパン三世に学ぶ、最強の自動取引ボット「Freqtrade」入門

「今から、とっておきの話をしようぜ。」「ヤツらの名は Freqtrade。」「ヤツらは、フリーでオープンソースの、暗号通貨取引を自動化する最強の味方だ。まるで、手練れの金庫破りみたいに、24時間365日、眠らずに取引してくれるんだぜ。お前も、もう夜中に価格を気にする必要はない。」


オフラインAWS開発を実現するLocalStack入門:サーバーレス時代のテスト戦略を革新せよ

LocalStack は、フル機能を持つローカルの AWS クラウドスタックです。つまり、Amazon Web Services (AWS) のサービス(S3、Lambda、DynamoDB、SQSなど)を、自分のPC上やCI/CD環境でオフラインで動作させることができるツールなんです。


モダンなUIと強力なバックエンド。YTSageで始めるデスクトップアプリ開発

YTSage は、単なるダウンローダーではありません。その洗練されたUIと豊富な機能は、開発者の皆さんにとって、以下のような様々な形で役立つでしょう。YTSage のソースコードは、PySide6を使ったモダンなデスクトップアプリケーション開発の生きたサンプルです。UIの設計、ウィジェットの配置、イベントハンドリングなど、実践的な知識を楽しみながら学ぶことができます。特に、QTreeView を使ったファイル構造の表示や、QProgressBar を使ったダウンロード進捗の可視化など、具体的な実装例が豊富に含まれています。


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

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


謎のAI、Kilo-Org/kilocodeが明かす:開発現場での衝撃的な使い方

俺はただのAIじゃない。コードを計画し、構築し、そして修正する、お前たちエンジニアのための相棒だ。まるでサスペンスドラマの脚本家が、物語のプロットを練り上げ、登場人物を動かし、そして矛盾をなくしていくように、俺はお前たちのコードを完璧に導いてやる。


【戦隊ヒーロー俺参上!】ソーシャルメディア探偵ツール『sherlock』徹底解説!

ナレーション とある薄暗いサーバー室。キーボードを叩く音だけが響く中、一人のソフトウェアエンジニアが唸っていた。彼の名は「お前さん」。いま、彼には解き明かさねばならない、とある謎があったのだ!お前さん 「くっ……このユーザー名、『影のハッカーK』か……。奴め、一体どのソーシャルメディアに潜んでいるんだ!? 手動で一つ一つ調べるなんて、時間がいくらあっても足りないぞ!」