Acesso no exterior: www.kdjingpai.com
Ctrl + D Marcar este site como favorito

O Medical-RAG é um projeto de inteligência de perguntas e respostas desenvolvido para o domínio médico chinês. Ele se baseia na tecnologia RAG (Retrieval Augmented Generation), que aprimora a precisão e a segurança dos LLMs (Large Language Models) para aconselhamento médico por meio da incorporação de bases de conhecimento externas. O núcleo do projeto é o uso do Milvus, um banco de dados vetorial de alto desempenho, para armazenar e recuperar conhecimento médico, e a integração da estrutura LangChain para gerenciar todo o processo de perguntas e respostas. O projeto implementa um pipeline completo de processamento automatizado de dados, incluindo anotação inteligente de dados usando LLM, construção de listas de palavras específicas do domínio médico e armazenamento eficiente de dados. Ele adota uma arquitetura avançada de recuperação híbrida que combina a recuperação semântica com vetores densos e a recuperação de palavras-chave com vetores esparsos (BM25) e funde vários resultados com um algoritmo de rearranjo configurável para melhorar a precisão do conteúdo recuperado. O desenvolvedor pode implantar e gerenciar todo o sistema por meio de arquivos de configuração YAML flexíveis, permitindo que ele se adapte a diferentes ambientes operacionais e requisitos.

Lista de funções

  • Processamento automatizado de dadosDescrição: o projeto fornece um pipeline de anotação de dados automatizado que suporta inferência de modelos grandes via HTTP ou chamadas locais de GPU para acelerar o processo de anotação.
  • Gerenciamento automatizado de listas de palavrasLéxico de domínio médico e multi-threaded integrado que automatiza a construção e o gerenciamento de listas de palavras para pesquisas esparsas a fim de aumentar a precisão da consulta.
  • Arquitetura de pesquisa híbridaRecuperação de vetores: suporta a recuperação de vetores densos e esparsos. A recuperação densa oferece suporte a vários modelos de incorporação, como Ollama, OpenAI, HuggingFace etc., enquanto a recuperação esparsa usa o algoritmo BM25, que foi otimizado para a área médica.
  • Rearranjo e integração de resultadosSuporte ao uso de RRF (Reciprocal Rank Fusion) ou fusão ponderada de vários resultados de pesquisa para melhorar a relevância da resposta final.
  • Otimização profunda na área médicaUm sistema de classificação profissional predefinido, contendo 6 classificações departamentais principais e 8 categorias de problemas principais, e o uso depkusegModelagem de segmentação de domínio médico para processamento de texto.
  • Banco de dados vetorial de alto desempenho: baseado no Milvus v2.6+, suporta pesquisa vetorial eficiente, incorporação em lote e consultas simultâneas.
  • Sistema de configuração flexívelArquivos YAML: todos os parâmetros principais, como conexão de banco de dados, seleção de modelos, estratégia de recuperação etc., são configurados por meio de arquivos YAML, que são fáceis de implantar e ajustar em diferentes ambientes.
  • Pacote de interface de alta eficiênciaEncapsula as interfaces usuais do Milvus e fornece a funçãoRAGSearchToolFerramentas essenciais, como o desenvolvedor, para facilitar o desenvolvimento secundário e a chamada.

Usando a Ajuda

O projeto oferece um conjunto completo de ambiente, desde a preparação até o processo de consulta final. A seguir, um procedimento detalhado passo a passo, desenvolvido para ajudar os usuários a começar rapidamente.

Etapa 1: Preparação ambiental

Antes de começar, você precisa preparar o ambiente básico de tempo de execução, incluindo a clonagem do projeto, a instalação de dependências e a inicialização dos serviços necessários.

  1. Clonagem do código do projeto
    Primeiro, clone-o do GitHubmedical-ragem seu computador local.

    git clone https://github.com/yolo-hyl/medical-rag
    cd medical-rag/src
    
  2. Instalar as dependências do projeto
    O projeto é desenvolvido em Python e todas as dependências estão documentadas no arquivosetup.pyem. Use tubulação para a instalação.

    pip install -e .
    
  3. Iniciar o banco de dados do Milvus Vector
    O projeto usa o Milvus como um banco de dados vetorial e o Docker é recomendado para iniciá-lo. Um prático script de inicialização já está incluído no código do projeto.

    cd Milvus
    bash standalone_embed.sh start
    ```    此命令会启动一个单机版的Milvus实例。
    
  4. Iniciar o serviço Ollama (opcional)
    Se você planeja usar um modelo grande executado localmente (como o Qwen) para anotação de dados ou geração de respostas, é necessário instalar e iniciar o Ollama.

    # 启动Ollama服务
    ollama serve
    
    # 拉取需要用到的模型
    # bge-m3是一个常用的嵌入模型,用于生成向量
    ollama pull bge-m3:latest
    
    # qwen2:7b是一个性能不错的标注和问答模型
    ollama pull qwen2:7b
    

Etapa 2: Configuração básica

Antes de executar um processo específico, os parâmetros principais precisam ser configurados. O arquivo de configuração está localizado no diretóriosrc/MedicalRag/config/default.yaml. Você precisará modificar as seguintes informações-chave de acordo com seu ambiente:

  • Informações sobre a conexão MilvusPara garantir queuriresponder cantandotokenCombine a instância do Milvus que você iniciou.
    milvus:
    client:
    uri: "http://localhost:19530"
    token: "root:Milvus"
    collection:
    name: "qa_knowledge"
    
  • Configuração do modelo incorporadoModelo: Especifica o modelo a ser usado para gerar vetores densos. A configuração a seguir usa o serviço Ollama local no diretóriobge-m3Modelos.
    embedding:
    dense:
    provider: ollama
    model: "bge-m3:latest"
    base_url: "http://localhost:11434"
    

Etapa 3: Processamento de dados e inventário

O processamento de dados é o núcleo da criação de um sistema de Q&A, que o projeto divide em quatro partes: rotulagem de dados, construção de listas de palavras, criação de coleções e entrada de dados.

  1. anotação de dados
    Essa etapa usa um modelo de linguagem grande para classificar automaticamente os dados brutos de Q&A (por exemplo, afiliação ao departamento, tipo de pergunta).

    • Primeiro, configure o arquivo de parâmetros de rotulagem:src/MedicalRag/config/data/annotator.yaml.
    • Em seguida, execute o script de anotação:
      python scripts/annotation.py src/MedicalRag/config/data/annotator.yaml
      
  2. construir uma lista de palavras
    Para dar suporte à recuperação esparsa do BM25, um vocabulário proprietário precisa ser construído com base no corpus do domínio médico.

    python scripts/build_vocab.py
    

    O script processa os dados e gera um arquivo chamadovocab.pkl.gzdo arquivo de lista de palavras.

  3. Criação de uma coleção Milvus (Coleção)
    Essa etapa cria uma coleção no Milvus para armazenar vetores e informações relacionadas. A estrutura (Schema) da coleção é dada pelodefault.yamlDefinição de perfil.

    # 使用默认配置文件创建集合
    python scripts/create_collection.py -c src/MedicalRag/config/default.yaml
    
    # 如果需要强制删除并重建集合,可以添加--force-recreate参数
    python scripts/create_collection.py --force-recreate
    
  4. Entrada de dados
    Os dados processados e rotulados são vetorizados e finalmente depositados na coleção Milvus.

    python scripts/insert_data_to_collection.py
    

    Esse script processa automaticamente a vetorização dos dados (vetores densos e esparsos) e os insere em lote no banco de dados.

Etapa 4: Pesquisa e recuperação

Depois que os dados forem inseridos, a pesquisa de perguntas e respostas pode começar.

  1. Configuração de políticas de consulta
    Você pode fazer isso modificando osrc/MedicalRag/config/search/search_answer.yamlpara definir a estratégia de recuperação, por exemplo, ajustando os pesos de diferentes canais de recuperação (denso, esparso).
  2. Executar o script de consulta
    fazer uso desearch_pipline.pypara executar a consulta.

    # 使用指定的搜索配置文件进行查询
    python scripts/search_pipline.py --search-config src/MedicalRag/config/search/search_answer.yaml
    

    O script entra em um modo interativo em que você pode inserir uma pergunta (por exemplo, "Quais são os sintomas da sífilis?") para testar a pesquisa.

Uso de ferramentas essenciais

O projeto também fornece um arquivo chamadoRAGSearchToolpara facilitar chamadas diretas para a função de recuperação em outro código.

from MedicalRag.tools.rag_search_tool import RAGSearchTool
# 从配置文件初始化工具
tool = RAGSearchTool("config/search.yaml")
if tool.is_ready():
# 执行单个查询
results = tool.search("梅毒的症状有哪些?")
print(results)
# 执行批量查询
results_batch = tool.search(["梅毒的治疗方法", "高血压的预防措施"])
print(results_batch)
# 带过滤条件的查询(例如,只在“外科”相关的知识中检索)
results_filtered = tool.search("骨折怎么办", filters={"dept_pk": "3"}) # 假设3代表外科
print(results_filtered)

cenário do aplicativo

  1. Assistente de diagnóstico inteligente
    O sistema pode ser usado como um auxílio clínico para médicos. Quando um médico se depara com um caso complexo ou raro, ele pode pesquisar rapidamente as diretrizes relevantes de diagnóstico e tratamento, informações sobre medicamentos e as pesquisas médicas mais recentes para fornecer suporte à decisão de diagnóstico e tratamento.
  2. Educação e treinamento de estudantes de medicina
    Ele pode ser usado para criar um sistema de consulta simulada para ajudar os estudantes de medicina a praticar a formulação de perguntas, o diagnóstico e o desenvolvimento de planos de tratamento em um ambiente virtual. O sistema pode acelerar o processo de aprendizado fornecendo respostas padrão e pontos de conhecimento relevantes com base nas perguntas dos alunos.
  3. Aconselhamento sobre a saúde do paciente
    Ele pode ser implantado como um serviço de atendimento ao cliente inteligente voltado para o público ou um chatbot para fornecer aos pacientes serviços iniciais de aconselhamento de saúde 24 horas por dia, 7 dias por semana. Os usuários podem fazer perguntas sobre doenças comuns, sintomas, precauções com medicamentos, etc., e o sistema pode fornecer respostas seguras e precisas a partir de uma base de conhecimento autorizada, aliviando a pressão sobre os ambulatórios dos hospitais.
  4. Gerenciamento e recuperação de bases de dados de conhecimento médico
    Para hospitais e organizações de pesquisa, o sistema pode integrar documentos médicos internos em massa, registros médicos e artigos de pesquisa para criar uma plataforma inteligente de gerenciamento de conhecimento. Pesquisadores e profissionais de saúde podem encontrar as informações de que precisam com rapidez e precisão por meio de linguagem natural.

QA

  1. Qual é o problema que esse projeto resolve?
    Ele aborda o problema de que os modelos de linguagem grandes para fins gerais não têm conhecimento suficiente de domínios especializados, especialmente na área médica, e são propensos a "alucinar" ou fornecer informações imprecisas. Por meio da tecnologia RAG, as respostas do modelo são restritas a uma base de conhecimento médico externo confiável, fornecendo, assim, orientações médicas mais precisas e seguras.
  2. Quais são as principais tecnologias usadas no projeto?
    O projeto usa principalmente o Retrieval Augmented Generation (RAG), bancos de dados vetoriais (Milvus), estruturas de processamento de linguagem natural (LangChain), técnicas de recuperação híbrida (combinação de vetores densos e esparsos BM25) e uma variedade de back-ends opcionais para modelagem de linguagem ampla (por exemplo, Ollama, OpenAI etc.).
  3. Como faço para substituir o modelo de incorporação ou o modelo de idioma usado em meu projeto?
    Alterar os modelos é tão simples quanto modificar o arquivo de configuração YAML correspondente. Por exemplo, para alterar o modelo de incorporação densa, você pode alterar o modelo no arquivodefault.yamlmodificaçãoembedding.denseparticipação deproviderresponder cantandomodelcampos. Da mesma forma, o LLM usado para anotação de dados pode ser encontrado na seçãoannotator.yamlConfigure-o em.
  4. Como devo otimizar se a recuperação não for satisfatória?
    Há várias maneiras de otimizar. Em primeiro lugar, tente ajustar osearch_answer.yamlarquivo de configuração para diferentes canais de recuperação noweight(pesos) para alterar a taxa de fusão dos resultados de recuperação densos e esparsos. Em segundo lugar, os dados usados para construir a lista de palavras podem ser examinados e expandidos para gerar uma lista de palavras de maior qualidade.vocab.pkl.gzdocumentos para melhorar a precisão da recuperação esparsa. Por fim, garantir que os dados de sua base de conhecimento sejam de alta qualidade e tenham ampla cobertura é fundamental para melhorar os resultados.
0Marcado
0Recomendado

Recomendado

Não consegue encontrar ferramentas de IA? Tente aqui!

Basta digitar a palavra-chave Acessibilidade Bing SearchA seção Ferramentas de IA deste site é uma maneira rápida e fácil de encontrar todas as ferramentas de IA deste site.

Novos lançamentos

voltar ao topo

pt_BRPortuguês do Brasil