paint-brush
Alcançando respostas LLM relevantes abordando desafios comuns de geração aumentada de recuperaçãopor@datastax
745 leituras
745 leituras

Alcançando respostas LLM relevantes abordando desafios comuns de geração aumentada de recuperação

por DataStax4m2024/01/16
Read on Terminal Reader

Muito longo; Para ler

Analisamos problemas comuns que podem surgir com implementações RAG e interações LLM.
featured image - Alcançando respostas LLM relevantes abordando desafios comuns de geração aumentada de recuperação
DataStax HackerNoon profile picture
0-item
1-item


Desenvolvendo aplicações generativas de IA com geração aumentada de recuperação (RAG) e bancos de dados vetoriais podem ser desafiadores. Freqüentemente, você precisará solucionar problemas de implementações RAG que dependem de bancos de dados vetoriais para garantir que o contexto relevante seja recuperado; isso é fundamental, porque esse contexto é então incluído em um prompt para um grande modelo de linguagem para fornecer resultados mais precisos.


No artigo anterior desta série , vimos o pipeline de incorporação, que preenche o banco de dados vetorial com incorporações e considerou três áreas que podem levar a resultados ruins: modelos de incorporação abaixo do ideal, estratégias de fragmentação ineficientes e falta de filtragem de metadados.

Aqui, veremos a interação real com o LLM e examinaremos alguns problemas comuns que podem levar a resultados ruins: prompts imprecisos e abordagens de geração insuficientes.

Refinamento imediato

Mesmo as melhores estratégias de incorporação e fragmentação não podem substituir a necessidade de qualidade engenharia imediata . Isto envolve tornar as instruções mais explícitas, específicas e alinhadas com o resultado pretendido. Vários formatos de prompt, comprimentos e escolhas lexicais devem ser testados para ajustar o processo RAG.

Uma visão simplificada de um LLM


Especificamente, há várias coisas que você deve considerar ao criar prompts para aplicativos RAG. Esses incluem:


Diga ao LLM sua função: Ao interagir com agentes LLM como o ChatGPT, eles agirão como um chatbot útil. No entanto, você pode alterar a natureza das respostas que serão geradas instruindo o LLM a agir de uma maneira específica. Exemplos podem ser coisas como “você é um advogado avaliando se alguma das partes está violando um acordo” ou “você é um agente de atendimento ao cliente de um provedor de serviços de Internet; seu trabalho é ajudar as pessoas a solucionar problemas de Internet” ou o que fizer sentido para sua situação específica.


Diga explicitamente ao LLM para usar o contexto fornecido : deixe claro para o LLM que você está fornecendo contexto e deseja que a resposta gerada reflita esse contexto. Você pode fazer isso dizendo algo como “sua resposta deve levar em consideração o seguinte contexto” seguido do contexto. Use exemplos: No cenário recém-mencionado de pedir ao LLM para atuar como um advogado avaliando contratos, você pode incluir vários exemplos na solicitação. Por exemplo, você poderia fornecer um exemplo de contrato que diz que o pagamento vence dentro de 30 dias, mas o comprador não enviou o pagamento até 40 dias após a assinatura do contrato e, portanto, violou o acordo. Você poderia fornecer exemplos adicionais de direitos de reparação e possíveis formas de resolver violações contratuais.


Especifique o formato de saída: se o seu caso de uso exigir uma saída específica, você poderá especificar o formato ao qual a saída gerada deve aderir. Você pode combinar essa técnica com a dica acima para fornecer exemplos que deixem claro para o LLM como você deseja que ele responda, bem como os principais pontos de informação que você espera na resposta gerada.


Use cadeia de pensamento : para casos de uso em que o raciocínio está envolvido para determinar a resposta apropriada, você pode considerar o uso de uma técnica chamada cadeia de pensamento para ajudar a explicar as etapas que você deseja que o LLM siga para chegar a uma resposta gerada. Por exemplo, no caso de contratos legais, você pode querer orientar o LLM pelas etapas lógicas que uma pessoa seguiria para determinar se um termo do contrato foi violado. Por exemplo, ao lidar com contratos legais, você pode dizer ao LLM para primeiro procurar cláusulas que especifiquem as condições de pagamento, depois identificar a quantidade de tempo que o comprador teve para enviar o pagamento e, em seguida, calcular o número de dias entre o momento em que o pagamento foi recebido e o data em que o contrato foi assinado. Então, se o pagamento demorar mais do que o prazo acordado, o comprador violou o acordo.


Aproveitar essas técnicas para melhorar sua engenharia imediata pode ter um impacto significativo na qualidade dos resultados gerados que você pode produzir em suas aplicações RAG. No entanto, às vezes você precisará usar técnicas que envolvam múltiplas trocas com o LLM para obter uma resposta aceitável.

Padrões Avançados

FLARE

Recuperação ativa prospectiva, ou FLARE , é um exemplo de técnica RAG de múltiplas consultas que envolve chamar iterativamente o LLM com instruções personalizadas em seu prompt que solicitam ao LLM que forneça perguntas adicionais sobre frases-chave que o ajudariam a gerar uma resposta melhor. Uma vez que o LLM tenha um contexto sem lacunas, ele termina com a resposta final. O processo adiciona um loop entre o LLM e o agente de IA (o chatbot de IA no diagrama) para facilitar estas iterações:

FLARE


Você pode ver um exemplo de como o FLARE funciona no exemplo do livro de receitas LangChain do FLARE .

Fusão RAG

Ao gerar consultas semelhantes à consulta do usuário e recuperar o contexto relevante tanto para a consulta original quanto para as consultas semelhantes geradas, podemos aumentar a probabilidade de termos selecionado o contexto mais útil para gerar resultados precisos. O processo, denominado “fusão RAG”, é assim:

Fusão RAG

O passo principal aqui é usar uma função de classificação recíproca para refinar ainda mais os resultados da RNA e identificar o contexto mais relevante a ser usado para gerar uma resposta.

Conclusão

RAG é uma abordagem simples de começar, mas que muitas vezes deixa os desenvolvedores frustrados com resultados insatisfatórios por motivos pouco claros. A relevância dos resultados em aplicações de IA generativa habilitadas para RAG pode ser afetada por vários fatores. Ao selecionar meticulosamente modelos de incorporação, formular estratégias de chunking e projetar prompts, você pode elevar significativamente a qualidade e a precisão das respostas geradas em sistemas alimentados por LLMs como o ChatGPT. Esperamos que essas dicas ajudem você a criar aplicativos RAG mais úteis que proporcionem a experiência e o valor que você busca.


Experimente o DataStax Astra DB , o único banco de dados vetorial para a construção de aplicativos de IA em nível de produção com base em dados em tempo real .


Por Chris Latimer, DataStax


Também aparece aqui .