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




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

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


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

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


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

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


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

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


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

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


【エンジニア向け】OpenBB Financeで始めるデータ駆動型投資の冒険

夜が更け、モニターの光だけが部屋を照らす。あなたは今日もバグと格闘し、新しい技術を追い求めている。そんなあなたの前に現れたのは、謎めいたパッケージ「OpenBB Finance」。「投資調査を、誰もが、どこでも。」その言葉が示すのは、単なるライブラリではない。それは、複雑な金融の世界を解き明かすための、強力な武器となる予感だった。


ソフトウェアエンジニア必見:数ヶ月の開発工数を数分に短縮する Agent Starter Pack の導入と活用法

時は戦国。あなたは凄腕の大名エンジニアです。大名エンジニア「うむ、我が領地(プロジェクト)の課題は山積じゃ。物資の管理(データ処理)も、領民の意見聞き取り(ユーザーサポート)も、人手が足りぬ! 新たな働き手、すなわち有能な代理人(AIエージェント)を早急に戦地に送り出さねば!」


ソースコードで金融市場を支配する:QuantConnect/Leanで実現する自動取引戦略の開発・検証・実行

「QuantConnect/Lean」(クオンコネクト・リーン)は、一言で言えば、Python や C# を使って、自分で考えた株や FX などの金融商品の取引戦略(アルゴリズム)を開発・検証・実行するための、オープンソースのアルゴリズム取引エンジンです!


【入門】onyx-dot-app/onyxで始めるAIチャットボット開発

ソフトウェアエンジニアの視点から、onyx-dot-app/onyxがどのように役立つか、導入方法、サンプルコードについて、真面目に、分かりやすく説明するね。onyx-dot-app/onyxは、AIを活用したチャットアプリケーションを構築するためのオープンソースプラットフォームなんだ。これを導入するメリットは、主に次の3つだよ。


35の雑音をAIが「大吟醸」に精製!ソフトウェア開発者のための情報過多対策ツール最前線

さあ、今宵は情報過多を乗りこなすための特選ツールの飲み比べです!これが今回ご紹介する「TrendRadar」です!口に含むと、情報が雑味なく整理されて、まるでクリアな大吟醸のようにスッと入ってきます。味わい(機能) 35以上のプラットフォーム(ニュース、SNS、専門メディア)から熱点を集約し、AIが「これは重要だ!」という情報だけを厳選してくれます。さらに、AI対話分析でトレンド追跡、感情分析、相似検索など13種のディープな分析が可能。