LangExtract

Thư viện Python mã nguồn mở của Google giúp trích xuất dữ liệu có cấu trúc từ văn bản thô bằng LLM với khả năng truy xuất nguồn gốc chính xác.

Giới thiệu

LangExtract (google/langextract) là một thư viện Python được thiết kế để giải quyết vấn đề khó khăn nhất trong xử lý văn bản bằng AI: chuyển đổi dữ liệu phi cấu trúc (như hồ sơ y tế, hợp đồng pháp lý, báo cáo tài chính) thành dữ liệu có cấu trúc (JSON) tin cậy. Điểm đặc biệt của LangExtract so với các công cụ khác là tính năng ‘Source Grounding’ (Truy xuất nguồn gốc) – mọi thông tin được trích xuất đều được liên kết chính xác đến vị trí (character offset) trong văn bản gốc, giúp người dùng dễ dàng kiểm chứng (audit) độ chính xác và giảm thiểu ảo giác (hallucination) của LLM.

Tính năng chính

  • Precise Source Grounding: Liên kết mọi dữ liệu trích xuất với vị trí chính xác trong văn bản gốc để dễ dàng xác minh.
  • Structured Outputs: Đảm bảo đầu ra tuân thủ schema nghiêm ngặt (thường là JSON), phù hợp để nạp vào cơ sở dữ liệu.
  • Xử lý văn bản dài (Long Documents): Sử dụng chiến lược chia nhỏ (chunking), xử lý song song và quét nhiều lần (multi-pass) để không bỏ sót thông tin trong các tài liệu lớn.
  • Trực quan hóa tương tác: Tự động tạo file HTML để hiển thị dữ liệu trích xuất ngay trên văn bản gốc (highlight visual).
  • Hỗ trợ đa mô hình: Tối ưu hóa cho Google Gemini (Vertex AI) nhưng cũng hỗ trợ các mô hình cục bộ qua Ollama.

Hướng dẫn cài đặt Local (macOS)

Để chạy LangExtract trên macOS, bạn cần Python 3.9 trở lên.

  1. Cài đặt thư viện qua pip: Mở Terminal và chạy lệnh:
    pip install langextract
    
  2. Cấu hình API Key: LangExtract sử dụng Google Gemini mặc định. Bạn cần có API Key từ Google AI Studio.
    export GOOGLE_API_KEY="your_google_api_key_here"
    

    (Hoặc cấu hình Vertex AI nếu dùng Google Cloud).

  3. Cài đặt môi trường ảo (Khuyên dùng):
    python3 -m venv venv
    source venv/bin/activate
    pip install langextract
    

Hướng dẫn Docker

Dự án này là một thư viện Python, không phải một ứng dụng standalone, nhưng bạn có thể đóng gói nó vào Docker để chạy các script trích xuất.

Dockerfile cơ bản:

# Sử dụng Python slim image
FROM python:3.9-slim

# Thiết lập thư mục làm việc
WORKDIR /app

# Cài đặt git và các dependencies cần thiết (nếu có)
RUN apt-get update && apt-get install -y git

# Cài đặt langextract
RUN pip install langextract

# Copy source code của bạn vào container
COPY . /app

# Thiết lập biến môi trường cho API Key (nên truyền qua docker run -e)
ENV GOOGLE_API_KEY="your_key_placeholder"

# Lệnh chạy mặc định
CMD ["python", "main.py"]

Cách build và run:

docker build -t langextract-app .
docker run -e GOOGLE_API_KEY="xxx" langextract-app

Ví dụ Code (Example Code)

Đoạn code dưới đây minh họa cách trích xuất các thực thể (nhân vật, cảm xúc) từ một đoạn văn bản mẫu:

import langextract as lx
from langextract.data import ExampleData, Extraction

# 1. Định nghĩa yêu cầu (Prompt)
prompt = "Extract characters and their emotions from the text."

# 2. Cung cấp ví dụ (Few-shot examples) để hướng dẫn LLM
examples = [
    ExampleData(
        text="ROMEO. But soft! What light through yonder window breaks?",
        extractions=[
            Extraction(
                extraction_class="character",
                extraction_text="ROMEO",
                attributes={"emotion": "wonder"}
            )
        ]
    )
]

# 3. Văn bản cần xử lý
text_content = "JULIET. O Romeo, Romeo! wherefore art thou Romeo? Deny thy father and refuse thy name."

# 4. Thực thi trích xuất
print("Đang trích xuất...")
result = lx.extract(
    text_content,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-1.5-flash" # Hoặc model khác được hỗ trợ
)

# 5. Hiển thị kết quả
for item in result.extractions:
    print(f"Class: {item.extraction_class} | Text: '{item.extraction_text}' | Attr: {item.attributes}")

# (Tùy chọn) Tạo file HTML trực quan hóa
# lx.visualize(result, "output.html")

Sources

Github Page

https://github.com/google/langextract

Tags: github
Share: X (Twitter) Facebook LinkedIn