Aprendizagem pessoal com IA
e orientação prática
豆包Marscode1

KBLaM: uma ferramenta aprimorada de código aberto para incorporar conhecimento externo em modelos grandes

Introdução geral

O KBLaM é um projeto de código aberto desenvolvido pela Microsoft, cujo nome completo é "Knowledge Base Augmented Language Model" (Modelo de linguagem aumentada da base de conhecimento). Ele transforma o conhecimento externo em vetores e os incorpora à camada de atenção de um modelo grande, de modo que o modelo possa usar diretamente esse conhecimento para responder a perguntas ou raciocinar. Em comparação com a geração tradicional de recuperação aumentada (RAG), ele não exige um módulo de recuperação adicional e, em comparação com o aprendizado contextual, seu custo computacional aumenta linearmente com o tamanho da base de conhecimento, em vez de aumentar em etapas quadradas. O KBLaM tem código aberto no GitHub e destina-se principalmente a pesquisadores e desenvolvedores, sendo adequado para explorar como tornar modelos grandes mais eficientes no processamento de informações externas. Atualmente, ele oferece suporte a modelos como a família Llama da Meta e o Phi-3 da Microsoft.

KBLaM:为大模型嵌入外部知识的开源增强工具-1


 

Lista de funções

  • Transformação de bases de conhecimento externas em pares de vetores de valores-chave para aprimoramento de modelos.
  • Incorporação de conhecimento em modelos grandes usando o mecanismo de atenção retangular.
  • Oferece suporte à atualização dinâmica da base de conhecimento sem precisar treinar novamente o modelo.
  • O custo computacional cresce linearmente com o tamanho da base de conhecimento e é eficiente.
  • Código-fonte aberto, scripts experimentais e conjuntos de dados para facilitar a pesquisa e o desenvolvimento.
  • Oferece suporte a tarefas como questionários e raciocínio, e pode gerar respostas precisas com base em uma base de conhecimento.
  • Nenhuma modificação no recurso de processamento de texto do modelo básico, mantendo o desempenho original.

 

Usando a Ajuda

O KBLaM é uma ferramenta de pesquisa de código aberto com código e documentação disponíveis no GitHub. Abaixo está um guia detalhado de instalação e uso para ajudar os usuários a começar rapidamente.

Processo de instalação

  1. Preparação do ambiente
    Requer Python 3.8 ou superior e Git; recomenda-se Linux ou Windows. Se estiver trabalhando com bases de conhecimento em grande escala, recomenda-se uma GPU NVIDIA (por exemplo, A100 com 80 GB ou mais de memória de vídeo).
  2. Download do Warehouse
    Abra um terminal e digite o comando Clone KBLaM repository (Clonar repositório KBLaM):
git clone https://github.com/microsoft/KBLaM.git

Vá para o catálogo de projetos:

cd KBLaM
  1. Instalação de dependências
    Execute o seguinte comando para instalar as bibliotecas necessárias:
pip install -e .

Isso instalará o PyTorch, o Transformers e outras dependências. Se precisar usar o modelo Llama, você também precisará instalar a ferramenta Hugging Face e fazer login:

pip install huggingface_hub
huggingface-cli login

Para fazer login, você precisa gerar um token do Hugging Face.

  1. Verificar a instalação
    Execute o script de teste para confirmar que o ambiente está OK:
python -m kblam.test

Se nenhum erro for relatado, a instalação foi bem-sucedida.

Funções principais

1. criação de uma base de conhecimento

O KBLaM precisa transformar o conhecimento externo em pares de vetores.

  • mover::
  • Prepare o arquivo da base de conhecimento (por exemplo, no formato JSON), por exemplo:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
  • Gerar vetores:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
  • Os modelos de incorporação compatíveis incluem text-embedding-ada-002 responder cantando all-MiniLM-L6-v2. Arquivos de saída embeddings.npy é um vetor de conhecimento.

2. incorporação de conhecimento em modelos

Incorporação de vetores de conhecimento na camada de atenção de um modelo grande.

  • mover::
  • Faça o download dos modelos compatíveis (por exemplo meta-llama/Meta-Llama-3-8B-Instruct).
  • Execute o script incorporado:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
  • Exportar um catálogo de modelos aprimorado enhanced_model.

3. teste de modelos aprimorados

Carregue o modelo de aprimoramento e teste o efeito.

  • mover::
  • Execute o script de teste:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
  • O modelo retornará: "IA é uma tecnologia que simula a inteligência humana".

Operação da função em destaque

Atualização dinâmica da base de conhecimento

O KBLaM permite a atualização da base de conhecimento a qualquer momento, sem necessidade de retreinamento do modelo.

  • mover::
  • Modifique o arquivo da base de conhecimento para adicionar novas entradas:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
  • Gerar um novo vetor:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
  • Atualizar o modelo:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
  • O modelo atualizado está imediatamente pronto para usar o novo conhecimento.

Adaptadores de treinamento

Treinamento de adaptadores para otimizar os efeitos de incorporação de conhecimento.

  • mover::
  • Treinamento com conjuntos de dados sintéticos:
python train.py --dataset synthetic_data --N 120000 --B 20 --total_steps 601 --encoder_spec OAI --use_oai_embd --key_embd_src key --use_data_aug
  • Os pontos de extremidade do Azure OpenAI são necessários para gerar dados sintéticos, consulte dataset_generation/gen_synthetic_data.py.

experimento de recorrência

O repositório fornece scripts experimentais que reproduzem os resultados do artigo.

  • mover::
  • Acesse o catálogo de experimentos:
cd experiments
  • Execute o script:
python run_synthetic_experiments.py
  • As chaves do Azure OpenAI precisam ser configuradas para gerar conjuntos de dados sintéticos.

advertência

  • Suporte ao modeloSuporte atual Meta-Llama-3-8B-InstructeLlama-3.2-1B-Instruct responder cantando Phi-3-mini-4k-instruct. Outros modelos precisam ser modificados src/kblam/models O código do adaptador no
  • Requisitos de hardwareGPUs de alto desempenho são necessárias para processar grandes bases de conhecimento, enquanto experimentos de pequena escala podem ser executados em CPUs.
  • Feedback da perguntaEm caso de problemas, verifique SUPPORT.md ou enviar um problema no GitHub.

 

cenário do aplicativo

  1. experimento de pesquisa
    Os pesquisadores podem usar o KBLaM para testar como os modelos grandes lidam com a experiência, como a incorporação de uma base de conhecimento no campo da química, para melhorar a precisão das respostas do modelo.
  2. Perguntas e respostas corporativas
    Os desenvolvedores podem transformar os documentos da empresa em uma base de conhecimento e desenvolver assistentes inteligentes para responder rapidamente às perguntas de funcionários ou clientes.
  3. Auxílios educacionais
    Os professores podem incorporar materiais do curso ao KBLaM para criar uma ferramenta que responda às perguntas dos alunos e aprimore o aprendizado.

 

QA

  1. Qual é a diferença entre o KBLaM e o ajuste fino tradicional?
    O KBLaM não modifica o modelo básico e treina apenas o conhecimento de incorporação do adaptador. O ajuste fino tradicional exige o retreinamento de todo o modelo, o que é mais caro.
  2. Ele é adequado para um ambiente de produção?
    O KBLaM é um projeto de pesquisa. As respostas podem ser imprecisas se a base de conhecimento for muito diferente dos dados de treinamento. A recomendação oficial é usá-lo apenas para pesquisa.
  3. Como posso avaliar o desempenho do KBLaM?
    Avaliado pela precisão (quão corretamente o conhecimento é recuperado), pela taxa de rejeição (se as perguntas sem resposta são identificadas corretamente) e pela precisão e recuperação das respostas.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " KBLaM: uma ferramenta aprimorada de código aberto para incorporar conhecimento externo em modelos grandes
pt_BRPortuguês do Brasil