
Uma das aplicações mais poderosas do LLMS é a criação de sofisticados chatbots de resposta à resposta a perguntas, capazes de fornecer respostas precisas com base em informações específicas da fonte. Este projeto se concentra no desenvolvimento de um assistente virtual para o negócio. O conjunto de dados é proveniente de 90 etapas do tutorial disponíveis no acordo oficial.II documentação, que pode ser acessada aqui. O mecanismo de Modelo de Linguagem Grande (LLM) é fornecido pela Cohere, conhecida por fornecer modelos LLM de alta qualidade para incorporações e serviços de bate-papo. Para o banco de dados vetorial, escolhemos o Chroma devido à sua natureza, velocidade e eficiência de código aberto na pesquisa e recuperação de vetores. A estrutura Langchain é usada para gerenciar com eficiência a interação entre a entrada do usuário, o processamento de consultas e a recuperação de informações relevantes do banco de dados do vetor, garantindo integração perfeita entre vários componentes do modelo.
O processo para preparar o banco de dados é o seguinte: Primeiro, as páginas do tutorial são recuperadas do site como objetos de documentos Langchain. Para melhorar a velocidade de acesso (durante o tempo de teste), esses objetos de documentos são salvos como arquivos JSON no disco local. Em seguida, os documentos são divididos em pedaços de tamanho apropriado (cerca de 400 tokens por pedaço com uma sobreposição de 40 tokens). No total, o conjunto de dados compreende 2,3 milhões de tokens. Finalmente, esses documentos divididos são incorporados ao banco de dados vetorial.
O modelo é construído usando quatro cadeias e três modelos de prompt.
Cadeia reformulada : Esta cadeia recebe a pergunta e o histórico de conversas do usuário e reforma a questão com base no diálogo anterior. Por exemplo, se a primeira pergunta é "O que é Fe_Nothing?" E a segunda pergunta é "onde posso usá -la?", A cadeia de reformulação modificará a segunda pergunta para "Onde posso usar o Fe_Nothing?" Esta etapa adiciona essencialmente memória à conversa, garantindo a continuidade do contexto.
Cadeia de várias perguntas : essa cadeia pega a pergunta reformulada e gera cinco questões semelhantes, fornecendo várias perspectivas. Ele gera uma lista Python de perguntas usando uma função Lambda simples e quaisquer linhas vazias são removidas usando a função remove_empty_string como a etapa final.
Cadeia de recuperação : Esta cadeia pega as cinco perguntas da cadeia anterior e consulta o banco de dados do vetor. O banco de dados vetorial procura vetores semelhantes e recupera documentos relevantes. Como o mesmo documento pode ser recuperado várias vezes para perguntas diferentes, um conjunto exclusivo de documentos é criado usando a função get_unique_union como a última etapa.
Cadeia de trapos : Esta cadeia usa a pergunta, o histórico de conversas e os documentos recuperados da cadeia anterior como o contexto para gerar a resposta final.
A extremidade frontal do aplicativo é criada usando ChatInterface de Gradio, com a função de resposta projetada para transmitir a saída em tempo real. O aplicativo é implantado nos espaços de rosto abraçados e pode ser acessado aqui.