Memperkenalkan LangExtract: Library ekstraksi informasi berteknologi Gemini

30 JULI 2025
Akshay Goel ML Software Engineer
Atilla Kiraly ML Software Engineer

Di dunia saat ini yang berlimpah dengan data, banyak insight yang berharga sering kali tersimpan dalam teks yang tidak terstruktur, seperti catatan klinis mendetail, dokumen hukum yang panjang, thread masukan pelanggan, dan laporan berita yang terus berkembang. Memilah informasi ini secara manual atau membangun kode khusus untuk memproses data akan memakan waktu serta rentan error, dan menggunakan model bahasa besar (LLM) modern secara naif mungkin menyebabkan error. Bagaimana jika Anda bisa mengekstraksi secara terprogram informasi spesifik yang Anda butuhkan, sekaligus memastikan outputnya terstruktur dan terkait dengan andal ke sumbernya?

Hari ini, kami sangat senang dapat memperkenalkan LangExtract, library Python open source baru yang dirancang untuk memberdayakan developer agar dapat melakukan hal tersebut. LangExtract menyediakan antarmuka yang ringan untuk berbagai LLM seperti model Gemini kami untuk memproses teks tak terstruktur dalam volume besar menjadi informasi terstruktur sesuai instruksi khusus Anda, memastikan fleksibilitas dan keterlacakan.

Jika Anda bekerja dengan laporan medis, ringkasan keuangan, atau domain lain yang penuh dengan teks, LangExtract menawarkan cara yang fleksibel dan ampuh untuk membuka data di dalamnya.


Apa yang membuat LangExtract efektif untuk ekstraksi informasi

LangExtract menawarkan kombinasi kemampuan unik yang membuatnya berguna untuk ekstraksi informasi:

  • Landasan sumber yang tepat: Setiap entity yang diekstraksi dipetakan kembali ke offset karakter yang tepat dalam teks sumber. Seperti yang ditunjukkan dalam animasi di bawah ini, fitur ini menyediakan keterlacakan dengan menyoroti secara visual setiap ekstraksi dalam teks asli, sehingga mempermudah proses evaluasi dan verifikasi informasi yang diekstraksi.

  • Output terstruktur yang andal: Tentukan output yang Anda inginkan menggunakan representasi data LangExtracts dan berikan contoh "few-shot". LangExtract menggunakan ini untuk menerapkan skema, memanfaatkan Pembuatan Terkontrol dalam model yang didukung seperti Gemini untuk memastikan output yang terstruktur secara konsisten. Hal ini memberikan hasil yang kuat, seperti yang ditunjukkan dalam analisis teks lengkap Romeo dan Juliet.

  • Ekstraksi informasi konteks panjang yang dioptimalkan: Pengambilan informasi dari dokumen yang besar terkadang sangat kompleks. Sebagai contoh, meskipun LLM menunjukkan performa yang kuat pada banyak tolok ukur, pengujian needle-in-a-haystack pada jutaan token konteks menunjukkan bahwa perolehan bisa berkurang dalam skenario pengambilan multi-fakta. LangExtract dibuat untuk menangani hal ini menggunakan strategi chunking, pemrosesan paralel, dan beberapa proses ekstraksi melalui konteks yang lebih kecil dan terfokus.

  • Visualisasi interaktif: Beralih dari teks mentah ke visualisasi HTML yang interaktif dan mandiri dalam hitungan menit. LangExtract memudahkan Anda meninjau entitas yang diekstrak dalam konteks, dengan dukungan untuk menjelajahi ribuan anotasi.

  • Dukungan fleksibel untuk backend LLM: Bekerja dengan model yang Anda sukai, entah itu LLM berbasis cloud (seperti keluarga Google Gemini) atau model open source di perangkat.

  • Fleksibel di berbagai domain: Tentukan tugas ekstraksi informasi untuk domain apa pun hanya dengan beberapa contoh yang dipilih dengan baik, tanpa perlu menyesuaikan LLM. LangExtract “mempelajari” output yang Anda inginkan dan bisa menerapkannya ke input teks baru yang berukuran besar. Lihat cara kerjanya dengan contoh ekstraksi pengobatan ini.

  • Memanfaatkan pengetahuan dunia LLM: Selain mengekstraksi entitas dasar, LangExtract bisa memanfaatkan pengetahuan dunia model untuk melengkapi informasi yang diekstrak. Informasi ini dapat bersifat eksplisit (yaitu, berasal dari teks sumber) atau disimpulkan (yaitu, berasal dari pengetahuan dunia bawaan model). Akurasi dan relevansi pengetahuan tambahan tersebut, terutama ketika disimpulkan, sangat dipengaruhi oleh kemampuan LLM yang dipilih dan kepresisian contoh prompt yang memandu ekstraksi.


Mulai cepat: Dari Shakespeare hingga objek terstruktur

Beginilah cara mengekstrak detail karakter dari sebaris naskah Shakespeare.

Pertama, instal library:

Untuk petunjuk penyiapan yang lebih detail, termasuk lingkungan virtual dan konfigurasi kunci API, silakan lihat README project.

pip install langextract
Python

Berikutnya, tentukan tugas ekstraksi Anda. Berikan prompt yang jelas dan contoh "few-shot" berkualitas tinggi untuk memandu model.

import textwrap
import langextract as lx
 
# 1. Define a concise prompt
prompt = textwrap.dedent("""\
Extract characters, emotions, and relationships in order of appearance.
Use exact text for extractions. Do not paraphrase or overlap entities.
Provide meaningful attributes for each entity to add context.""")
 
# 2. Provide a high-quality example to guide the model
examples = [
    lx.data.ExampleData(
        text=(
            "ROMEO. But soft! What light through yonder window breaks? It is"
            " the east, and Juliet is the sun."
        ),
        extractions=[
            lx.data.Extraction(
                extraction_class="character",
                extraction_text="ROMEO",
                attributes={"emotional_state": "wonder"},
            ),
            lx.data.Extraction(
                extraction_class="emotion",
                extraction_text="But soft!",
                attributes={"feeling": "gentle awe"},
            ),
            lx.data.Extraction(
                extraction_class="relationship",
                extraction_text="Juliet is the sun",
                attributes={"type": "metaphor"},
            ),
        ],
    )
]
 
# 3. Run the extraction on your input text
input_text = (
    "Lady Juliet gazed longingly at the stars, her heart aching for Romeo"
)
result = lx.extract(
    text_or_documents=input_text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-pro",
)
Python

Objek hasil berisi entitas yang diekstrak, yang bisa disimpan ke file JSONL. Dari sana, Anda dapat membuat file HTML interaktif untuk melihat anotasi. Visualisasi ini sangat bagus untuk demo atau mengevaluasi kualitas ekstraksi, sehingga menghemat waktu yang berharga. Visualisasi ini bekerja dengan baik di lingkungan seperti Google Colab atau bisa disimpan sebagai file HTML mandiri, yang dapat dilihat dari browser Anda.

# Save the results to a JSONL file
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")
 
# Generate the interactive visualization from the file
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f:
    f.write(html_content)
Python

Fleksibilitas untuk domain khusus

Prinsip yang sama seperti di atas berlaku untuk domain khusus, seperti kedokteran, keuangan, teknik, atau hukum. Ide di balik LangExtract pertama kali diterapkan untuk ekstraksi informasi medis dan bisa efektif dalam memproses teks klinis. Sebagai contoh, LangExtract dapat mengidentifikasi pengobatan, dosis, dan atribut pengobatan lainnya, dan kemudian memetakan hubungan di antara mereka. Kemampuan ini merupakan bagian inti dari penelitian yang berujung pada library ini, yang bisa Anda baca di makalah kami tentang mempercepat ekstraksi informasi medis.

Animasi di bawah ini menunjukkan LangExtract memproses teks klinis untuk mengekstrak entitas terkait pengobatan dan mengelompokkannya ke pengobatan sumber.

Demo mengenai pelaporan radiologi terstruktur

Untuk menunjukkan kekuatan LangExtract dalam bidang khusus, kami mengembangkan demonstrasi interaktif untuk pelaporan radiologi terstruktur yang disebut RadExtract di Hugging Face. Demo ini menunjukkan bagaimana LangExtract bisa memproses laporan radiologi teks bebas dan secara otomatis mengubah temuan utamanya ke dalam format terstruktur, serta menyoroti temuan penting. Pendekatan ini penting dalam radiologi, karena laporan terstruktur akan meningkatkan kejelasan, memastikan kelengkapan, dan meningkatkan interoperabilitas data untuk penelitian dan perawatan klinis.

Coba demonya di HuggingFace: https://google-radextract.hf.space


Sanggahan: Contoh ekstraksi pengobatan dan demo pelaporan terstruktur di atas hanya untuk tujuan ilustrasi kemampuan dasar LangExtract. Ini tidak mewakili produk yang sudah jadi atau disetujui, tidak dimaksudkan untuk mendiagnosis atau menyarankan pengobatan penyakit atau kondisi tertentu, dan tidak boleh digunakan untuk saran medis.


Memulai LangExtract: Sumber daya dan langkah berikutnya

Kami sangat antusias menantikan cara-cara inovatif yang akan digunakan developer dalam memanfaatkan LangExtract untuk membuka insight dari teks. Pelajari dokumentasinya, jelajahi contoh-contohnya di repositori GitHub kami, dan mulailah mentransformasi data tak terstruktur Anda hari ini.