Apresentamos o LangExtract: uma biblioteca de extração de informações baseada no Gemini

30 DE JULHO DE 2025
Akshay Goel ML Software Engineer
Atilla Kiraly ML Software Engineer

No atual mundo repleto de dados, insights valiosos ficam frequentemente bloqueados em textos não estruturados, como anotações clínicas detalhadas, longos documentos jurídicos, threads de feedback de clientes e relatórios de notícias em evolução. Peneirar manualmente essas informações ou criar código sob medida para processar os dados é demorado e propenso a erros, e o uso de modelos de linguagem grandes (LLMs) modernos sem a devida atenção pode introduzir erros. E se você pudesse extrair as informações exatas de que precisa de forma programática e ainda garantir que as saídas fossem estruturadas e vinculadas de forma confiável às suas fontes?

Hoje, temos o prazer de apresentar o LangExtract, uma nova biblioteca do Python de código aberto projetada para capacitar os desenvolvedores a fazer exatamente isso. O LangExtract fornece uma interface leve para vários LLMs, como nossos modelos Gemini, para processar grandes volumes de texto não estruturado em informações estruturadas com base em instruções personalizadas, garantindo flexibilidade e rastreabilidade.

Seja para trabalhar com relatórios médicos, resumos financeiros ou qualquer outro domínio com uso intensivo de texto, o LangExtract oferece uma maneira flexível e poderosa de desbloquear os dados dentro desses materiais.


O que torna o LangExtract eficaz para extração de informações

O LangExtract oferece uma combinação exclusiva de recursos que o tornam útil para a extração de informações:

  • Embasamento preciso na fonte: cada entidade extraída é mapeada de volta para seus caracteres exatos no texto de origem. Conforme demonstrado nas animações abaixo, esse recurso fornece rastreabilidade ao destacar visualmente cada extração no texto original, facilitando muito a avaliação e verificação das informações extraídas.

  • Saídas estruturadas confiáveis: defina a saída desejada usando a representação de dados do LangExtract e forneça exemplos "few-shot". O LangExtract usa isso para aplicar um esquema, aproveitando a geração controlada em modelos com suporte, como o Gemini, para garantir resultados consistentemente estruturados. Isso fornece resultados robustos, conforme demonstrado em nossa análise do texto completo de Romeu e Julieta.

  • Extração otimizada de informações de contexto longo: a recuperação de informações de documentos grandes pode ser complexa. Por exemplo, embora os LLMs mostrem um desempenho sólido em muitos comparativos de mercado, os testes Needle in a Haystack em contextos de milhões de tokens mostram que o recall pode diminuir em cenários de recuperação com fatos múltiplos. O LangExtract foi criado para lidar com isso usando uma estratégia de agrupamento, processamento paralelo e várias passagens de extração em contextos menores e focados.

  • Visualização interativa: passe do texto bruto para uma visualização em HTML interativa e independente em questão de minutos. O LangExtract facilita a revisão de entidades extraídas em contexto, com suporte para a exploração de milhares de anotações.

  • Suporte flexível a back-ends de LLMs: trabalhe com seus modelos preferidos, sejam eles LLMs baseados na nuvem (como a família Gemini do Google) ou modelos de código aberto no dispositivo.

  • Flexível em todos os domínios: defina tarefas de extração de informações para qualquer domínio com apenas alguns exemplos bem escolhidos, sem a necessidade de ajustar um LLM. O LangExtract "aprende" a saída desejada e pode aplicá-la a entradas de texto grandes e novas. Veja como isso funciona neste exemplo de extração de medicamentos.

  • Utilização do conhecimento mundial do LLM: além de extrair entidades embasadas, o LangExtract pode aproveitar o conhecimento mundial de um modelo para complementar as informações extraídas. Essas informações podem ser explícitas (ou seja, derivadas do texto de origem) ou inferidas (ou seja, derivadas do conhecimento de mundo inerente do modelo). A acurácia e relevância desse conhecimento complementar, particularmente quando inferido, são fortemente influenciadas pelas capacidades do LLM escolhido e pela precisão dos exemplos de prompts que orientam a extração.


Início rápido: de Shakespeare a objetos estruturados

Veja como extrair detalhes de personagens a partir de uma linha de Shakespeare.

Primeiro, instale a biblioteca:

Para obter instruções de configuração mais detalhadas, incluindo ambientes virtuais e configuração de chaves de API, consulte o README do projeto.

pip install langextract
Python

Em seguida, defina a tarefa de extração. Forneça um prompt claro e um exemplo "few-shot" de alta qualidade para orientar o modelo.

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

O objeto result contém as entidades extraídas, que podem ser salvas em um arquivo JSONL. A partir daí, você pode gerar um arquivo HTML interativo para visualizar as anotações. Essa visualização é ótima para demonstrações ou para avaliação da qualidade da extração, economizando um tempo valioso. Ela funciona perfeitamente em ambientes como o Google Colab ou pode ser salva como um arquivo HTML autônomo, visível no navegador.

# 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

Flexibilidade para domínios especializados

Os mesmos princípios acima se aplicam a domínios especializados, como medicina, finanças, engenharia ou direito. As ideias por trás do LangExtract foram aplicadas pela primeira vez à extração de informações médicas e podem ser eficazes no processamento de textos clínicos. Por exemplo, ele pode identificar medicamentos, dosagens e outros atributos de medicamentos e, em seguida, mapear as relações entre eles. Essa capacidade foi uma parte essencial da pesquisa que levou a esta biblioteca, sobre a qual você pode ler em nosso artigo sobre aceleração da extração de informações médicas.

A animação abaixo mostra o LangExtract processando um texto clínico para extrair entidades relacionadas a medicamentos e agrupá-las no medicamento de origem.

Demonstração com relatórios estruturados de radiologia

Para mostrar o poder do LangExtract em um campo especializado, desenvolvemos uma demonstração interativa para relatórios estruturados de radiologia chamada RadExtract na Hugging Face. Essa demonstração mostra como o LangExtract pode processar um relatório de radiologia em texto livre e converter automaticamente suas principais conclusões em um formato estruturado, destacando também as conclusões mais importantes. Essa abordagem é importante para a radiologia, onde a estruturação de relatórios aumenta a clareza, garante a integridade e melhora a interoperabilidade de dados para pesquisa e atendimento clínico.

Experimente a demonstração na Hugging Face: https://google-radextract.hf.space


Isenção de responsabilidade: O exemplo de extração de medicamentos e a demonstração de relatórios estruturados acima são apenas para fins ilustrativos da capacidade de linha de base do LangExtract. Ele não representa um produto acabado ou aprovado, não se destina a diagnosticar nenhuma doença ou condição nem a sugerir tratamentos e não deve ser usado para aconselhamento médico.


Comece a usar o LangExtract: recursos e próximos passos

Mal podemos esperar para ver as maneiras inovadoras pelas quais os desenvolvedores usarão o LangExtract para desbloquear insights de textos. Mergulhe na documentação, explore os exemplos em nosso repositório do GitHub e comece a transformar seus dados não estruturados hoje mesmo.