"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Avaliando a geração aumentada de recuperação médica (RAG) com endpoints de IA da NVIDIA e Ragas

Avaliando a geração aumentada de recuperação médica (RAG) com endpoints de IA da NVIDIA e Ragas

Publicado em 15/11/2024
Navegar:112

Evaluating Medical Retrieval-Augmented Generation (RAG) with NVIDIA AI Endpoints and Ragas

No âmbito da medicina, a incorporação de tecnologias avançadas é essencial para aprimorar o atendimento ao paciente e melhorar as metodologias de pesquisa. A geração aumentada de recuperação (RAG) é uma dessas inovações pioneiras, combinando o poder de grandes modelos de linguagem (LLMs) com recuperação de conhecimento externo. Ao extrair informações relevantes de bancos de dados, literatura científica e registros de pacientes, os sistemas RAG fornecem uma base de resposta mais precisa e contextualmente enriquecida, abordando limitações como informações desatualizadas e alucinações frequentemente observadas em LLMs puros.

Nesta visão geral, exploraremos o papel crescente do RAG na área da saúde, concentrando-nos em seu potencial para transformar aplicações como descoberta de medicamentos e ensaios clínicos. Também nos aprofundaremos nos métodos e ferramentas necessários para avaliar as demandas exclusivas dos sistemas médicos RAG, como os endpoints LangChain da NVIDIA e a estrutura Ragas, juntamente com o conjunto de dados MACCROBAT, uma coleção de relatórios de pacientes do PubMed Central.


Principais desafios do RAG médico

  1. Escalabilidade: Com a expansão dos dados médicos em mais de 35% de CAGR, os sistemas RAG precisam gerenciar e recuperar informações de forma eficiente, sem comprometer a velocidade, especialmente em cenários onde insights oportunos podem impactar o atendimento ao paciente.

  2. Requisitos especializados de idioma e conhecimento: Os sistemas RAG médicos exigem ajuste específico de domínio, uma vez que o léxico e o conteúdo médico diferem substancialmente de outros domínios, como finanças ou direito.

  3. Ausência de métricas de avaliação personalizadas: Ao contrário dos aplicativos RAG de uso geral, o RAG médico carece de benchmarks adequados. Métricas convencionais (como BLEU ou ROUGE) enfatizam a similaridade do texto em vez da precisão factual crítica em contextos médicos.

  4. Avaliação por componentes: A avaliação eficaz requer um exame minucioso independente dos componentes de recuperação e geração. A recuperação deve extrair dados relevantes e atuais, e o componente de geração deve garantir a fidelidade ao conteúdo recuperado.

Apresentando Ragas para avaliação RAG

Ragas, uma estrutura de avaliação de código aberto, oferece uma abordagem automatizada para avaliar pipelines RAG. Seu kit de ferramentas concentra-se na relevância do contexto, na lembrança, na fidelidade e na relevância da resposta. Utilizando um modelo LLM como juiz, Ragas minimiza a necessidade de dados anotados manualmente, tornando o processo eficiente e econômico.

Estratégias de Avaliação para Sistemas RAG

Para uma avaliação RAG robusta, considere estas etapas:

  1. Geração de dados sintéticos: Gere dados triplos (pergunta, resposta, contexto) com base nos documentos de armazenamento vetorial para criar dados de teste sintéticos.
  2. Avaliação Baseada em Métricas: Avalie o sistema RAG em métricas como precisão e recall, comparando suas respostas com os dados sintéticos gerados como verdade.
  3. Avaliação de componentes independentes: Para cada pergunta, avalie a relevância do contexto de recuperação e a precisão da resposta da geração.

Aqui está um exemplo de pipeline: dada uma pergunta como “Quais são as medições típicas de PA na insuficiência cardíaca congestiva?” o sistema primeiro recupera o contexto relevante e depois avalia se a resposta aborda a questão com precisão.

Configurando RAG com API NVIDIA e LangChain

Para acompanhar, crie uma conta NVIDIA e obtenha uma chave de API. Instale os pacotes necessários com:

pip install langchain
pip install langchain_nvidia_ai_endpoints
pip install ragas

Baixe o conjunto de dados MACCROBAT, que oferece registros médicos abrangentes que podem ser carregados e processados ​​via LangChain.

from langchain_community.document_loaders import HuggingFaceDatasetLoader
from datasets import load_dataset

dataset_name = "singh-aditya/MACCROBAT_biomedical_ner"
page_content_column = "full_text"

loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
dataset = loader.load()

Usando endpoints NVIDIA e LangChain, agora podemos construir um gerador robusto de conjunto de testes e criar dados sintéticos com base no conjunto de dados:

from ragas.testset.generator import TestsetGenerator
from langchain_nvidia_ai_endpoints import ChatNVIDIA, NVIDIAEmbeddings

critic_llm = ChatNVIDIA(model="meta/llama3.1-8b-instruct")
generator_llm = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1")
embeddings = NVIDIAEmbeddings(model="nv-embedqa-e5-v5", truncate="END")

generator = TestsetGenerator.from_langchain(
    generator_llm, critic_llm, embeddings, chunk_size=512
)
testset = generator.generate_with_langchain_docs(dataset, test_size=10)

Implantando e avaliando o pipeline

Implante seu sistema RAG em um armazenamento de vetores, gerando exemplos de perguntas a partir de relatórios médicos reais:

# Sample questions
["What are typical BP measurements in the case of congestive heart failure?",
 "What can scans reveal in patients with severe acute pain?",
 "Is surgical intervention necessary for liver metastasis?"]

Cada pergunta está vinculada a um contexto recuperado e a uma resposta verdadeira gerada, que pode então ser usada para avaliar o desempenho dos componentes de recuperação e geração.

Métricas personalizadas com Ragas

Os sistemas RAG médicos podem precisar de métricas personalizadas para avaliar a precisão da recuperação. Por exemplo, uma métrica pode determinar se um documento recuperado é relevante o suficiente para uma consulta de pesquisa:

from dataclasses import dataclass, field
from ragas.evaluation.metrics import MetricWithLLM, Prompt

RETRIEVAL_PRECISION = Prompt(
    name="retrieval_precision",
    instruction="Is this result relevant enough for the first page of search results? Answer '1' for yes and '0' for no.",
    input_keys=["question", "context"]
)

@dataclass
class RetrievalPrecision(MetricWithLLM):
    name: str = "retrieval_precision"
    evaluation_mode = EvaluationMode.qc
    context_relevancy_prompt: Prompt = field(default_factory=lambda: RETRIEVAL_PRECISION)

# Use this custom metric in evaluation
score = evaluate(dataset["eval"], metrics=[RetrievalPrecision()])

Saída estruturada para precisão e confiabilidade

Para uma avaliação eficiente e confiável, a saída estruturada simplifica o processamento. Com os endpoints LangChain da NVIDIA, estruture sua resposta LLM em categorias predefinidas (por exemplo, sim/não).

import enum

class Choices(enum.Enum):
    Y = "Y"
    N = "N"

structured_llm = nvidia_llm.with_structured_output(Choices)
structured_llm.invoke("Is this search result relevant to the query?")

Conclusão

RAG une LLMs e recuperação de vetores densos para aplicativos altamente eficientes e escalonáveis ​​em domínios médicos, multilíngues e de geração de código. Nos cuidados de saúde, o seu potencial para trazer respostas precisas e contextualmente conscientes é evidente, mas a avaliação deve dar prioridade à precisão, à especificidade do domínio e à relação custo-eficácia.

O pipeline de avaliação descrito, empregando dados de teste sintéticos, endpoints NVIDIA e Ragas, oferece um método robusto para atender a essas demandas. Para um mergulho mais profundo, você pode explorar exemplos de Ragas e NVIDIA Generative AI no GitHub.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/koolkamalkishor/evaluating-medical-retrieval-augmented-generation-rag-with-nvidia-ai-endpoints-and-ragas-2m34?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3