Crie sistemas avançados de geração aumentada auxiliada por recuperação de informação
Este artigo explora a geração com recuperação aumentada (RAG) em profundidade. Descrevemos o trabalho e as considerações necessárias para que os desenvolvedores criem uma solução RAG pronta para produção.
Para saber mais sobre duas opções para criar um aplicativo de "bate-papo sobre seus dados", um dos principais casos de uso de IA generativa em empresas, consulte Aumentar LLMs com RAG ou ajustar.
O diagrama a seguir mostra as etapas ou fases do RAG:
Esta representação é chamada ingênua RAG. É uma maneira útil de entender inicialmente os mecanismos, funções e responsabilidades necessárias para implementar um sistema de bate-papo baseado em RAG.
Mas uma implementação no mundo real tem muito mais etapas de pré-processamento e pós-processamento para preparar os artigos, consultas e respostas para uso. O diagrama a seguir é uma representação mais realista de um RAG, às vezes chamado de RAG avançado:
Este artigo fornece uma estrutura conceitual para entender as fases de pré e pós-processamento em um sistema de bate-papo baseado em RAG do mundo real:
- Fase de ingestão
- Fase do pipeline de inferência
- Fase de avaliação
Ingestão
A entrada de dados consiste principalmente em armazenar os documentos da sua organização para que possam ser facilmente recuperados para responder à pergunta de um utilizador. O desafio é garantir que as partes dos documentos que melhor correspondem à consulta do usuário sejam localizadas e usadas durante a inferência. A correspondência é realizada principalmente através de incorporações vetorizadas e uma pesquisa de semelhança de cosseno. No entanto, a correspondência é facilitada pela compreensão da natureza do conteúdo (por exemplo, padrões e forma) e da estratégia de organização de dados (a estrutura dos dados quando são armazenados no banco de dados vetorial).
Para ingestão, os desenvolvedores precisam considerar as seguintes etapas:
- Pré-processamento e extração de conteúdo
- Estratégia de fragmentação
- Organização de fragmentação
- Estratégia de atualização
Pré-processamento e extração de conteúdo
Conteúdo limpo e preciso é uma das melhores maneiras de melhorar a qualidade geral de um sistema de bate-papo baseado em RAG. Para obter um conteúdo limpo e preciso, comece analisando a estrutura e a forma dos documentos a serem indexados. Os documentos estão em conformidade com padrões de conteúdo especificados, como documentação? Em caso negativo, a que tipo de perguntas poderão os documentos responder?
No mínimo, crie fases na cadeia de processamento para:
- Padronizar formatos de texto
- Manipular caracteres especiais
- Remover conteúdo não relacionado e desatualizado
- Conta para conteúdo versionado
- Conta para a experiência de conteúdo (guias, imagens, tabelas)
- Extrair metadados
Algumas dessas informações (como metadados, por exemplo) podem ser úteis se forem mantidas com o documento no banco de dados vetorial para usar durante o processo de recuperação e avaliação no pipeline de inferência. Ele também pode ser combinado com o bloco de texto para persuadir a incorporação vetorial do bloco.
Estratégia de fragmentação
Como desenvolvedor, você deve decidir como dividir um documento maior em partes menores. O Chunking pode melhorar a relevância do conteúdo suplementar enviado ao LLM para responder com precisão às consultas dos usuários. Considere também como usar os pedaços após a recuperação. Os projetistas de sistemas devem pesquisar técnicas comuns da indústria e fazer algumas experimentações. Você pode até mesmo testar sua estratégia em uma capacidade limitada em sua organização.
Os desenvolvedores devem considerar:
- Otimização do tamanho do bloco: Determine o tamanho ideal do bloco e como designar um bloco. Por secção? Por parágrafo? Por sentença?
- Blocos de janela sobrepostos e deslizantes: Determine se o conteúdo deve ser dividido em partes discretas ou os blocos se sobreporão? Você pode até fazer as duas coisas, em um design de janela deslizante.
- Small2Big: Quando a fragmentação é feita em um nível granular como uma única frase, o conteúdo é organizado de modo que seja fácil encontrar as frases vizinhas ou o parágrafo que contém a frase? Recuperar essas informações e fornecê-las ao LLM pode fornecer mais contexto para responder às perguntas dos usuários. Para obter mais informações, consulte a próxima seção.
Organização de fragmentação
Em um sistema RAG, organizar estrategicamente seus dados no banco de dados vetorial é a chave para a recuperação eficiente de informações relevantes para aumentar o processo de geração. Aqui estão os tipos de estratégias de indexação e recuperação que você pode considerar:
- Índices hierárquicos: Esta abordagem envolve a criação de várias camadas de índices. Um índice de nível superior (um índice de resumo) reduz rapidamente o espaço de pesquisa a um subconjunto de partes potencialmente relevantes. Um índice de segundo nível (um índice de partes) fornece ponteiros mais detalhados para os dados reais. Esse método pode acelerar significativamente o processo de recuperação porque reduz o número de entradas a serem verificadas no índice detalhado filtrando primeiro o índice de resumo.
-
Índices especializados: Dependendo da natureza dos dados e das relações entre partes, você pode usar índices especializados, como bancos de dados baseados em gráficos ou relacionais:
- Os índices baseados em gráficos são úteis quando os blocos têm informações interconectadas ou relações que podem melhorar a recuperação, como redes de citação ou gráficos de conhecimento.
- Bancos de dados relacionais podem ser eficazes se os blocos forem estruturados em um formato tabular. Use consultas SQL para filtrar e recuperar dados com base em atributos ou relacionamentos específicos.
- Índices híbridos: Uma abordagem híbrida combina vários métodos de indexação para aplicar seus pontos fortes à sua estratégia geral. Por exemplo, você pode usar um índice hierárquico para filtragem inicial e um índice baseado em gráfico para explorar dinamicamente as relações entre partes durante a recuperação.
Otimização do alinhamento
Para aumentar a relevância e a precisão das partes recuperadas, alinhe-as de perto com a pergunta ou os tipos de consulta que respondem. Uma estratégia é gerar e inserir uma pergunta hipotética para cada parte que representa a pergunta para a qual a parte é mais adequada. Isso ajuda de várias maneiras:
- Correspondência melhorada: Durante a recuperação de informações, o sistema pode comparar a consulta recebida com essas perguntas hipotéticas para encontrar a melhor correspondência, melhorando assim a relevância dos blocos que são obtidos.
- Dados de treinamento para modelos de aprendizado de máquina: Esses emparelhamentos de perguntas e partes podem ser dados de treinamento para melhorar os modelos de aprendizado de máquina que são os componentes subjacentes do sistema RAG. O sistema RAG aprende quais tipos de perguntas são melhor respondidas por cada segmento.
- Tratamento direto de consultas: Se uma consulta de usuário real corresponder a uma pergunta hipotética, o sistema pode recuperar e usar rapidamente a parte correspondente e acelerar o tempo de resposta.
As perguntas hipotéticas de cada segmento agem como rótulos que guiam o algoritmo de recuperação, tornando-o mais focado e ciente do contexto. Este tipo de otimização é útil quando os blocos cobrem uma ampla gama de tópicos ou tipos de informação.
Estratégias de atualização
Se sua organização indexa documentos que são atualizados com frequência, é essencial manter um corpus atualizado para garantir que o componente retriever possa acessar as informações mais atuais. O componente retriever é a lógica no sistema que executa a consulta no banco de dados vetorial e, em seguida, retorna resultados. Aqui estão algumas estratégias para atualizar o banco de dados vetorial nesses tipos de sistemas:
Atualizações incrementais:
- Intervalos regulares: Agende atualizações em intervalos regulares (por exemplo, diários ou semanais), dependendo da frequência das alterações de documentos. Esse método garante que o banco de dados seja atualizado periodicamente em uma agenda conhecida.
- Atualizações baseadas em gatilhos: Implemente um sistema no qual uma atualização aciona a reindexação. Por exemplo, qualquer modificação ou adição de um documento inicia automaticamente a reindexação nas seções afetadas.
Atualizações parciais:
- Reindexação seletiva: Em vez de reindexar um banco de dados inteiro, atualize apenas as partes do corpus alteradas. Essa abordagem pode ser mais eficiente do que a reindexação completa, especialmente para grandes conjuntos de dados.
- Codificação delta: armazene apenas as diferenças entre os documentos existentes e suas versões atualizadas. Essa abordagem reduz a carga de processamento de dados, evitando a necessidade de processar dados inalterados.
Versionamento:
- Snapshotting: Mantenha versões do corpus de documentos em diferentes momentos no tempo. Esta técnica fornece um mecanismo de backup e permite que o sistema reverta ou faça referência a versões anteriores.
- Controle de versão do documento: use um sistema de controle de versão para controlar sistematicamente as alterações do documento para manter o histórico de alterações e simplificar o processo de atualização.
Atualizações em tempo real:
- Processamento de fluxo: Quando a atualidade da informação for crítica, use tecnologias de processamento de fluxo para atualizações de banco de dados vetoriais em tempo real à medida que as alterações são feitas no documento.
- Consulta em tempo real: em vez de depender apenas de vetores pré-indexados, use uma abordagem de consulta de dados em tempo real para respostas atualizadas up-to, possivelmente combinando dados em tempo real com resultados armazenados em cache para eficiência.
Técnicas de otimização:
Processamento em lote: O processamento em lote acumula alterações para aplicar com menos frequência para otimizar recursos e reduzir despesas gerais.
Abordagens híbridas: Combine várias estratégias:
- Use atualizações incrementais para pequenas alterações.
- Use a reindexação completa para atualizações importantes.
- Documentar as alterações estruturais que são feitas no corpus.
A escolha da estratégia de atualização certa ou da combinação certa depende de requisitos específicos, incluindo:
- Tamanho do corpus do documento
- Frequência de atualização
- Necessidades de dados em tempo real
- Disponibilidade de recursos
Avalie estes fatores com base nas necessidades da aplicação específica. Cada abordagem tem compensações em complexidade, custo e latência de atualização.
Pipeline de inferência
Seus artigos são fragmentados, vetorizados e armazenados em um banco de dados vetorial. Agora, volte seu foco para a resolução de desafios de conclusão.
Para obter as conclusões mais precisas e eficientes, você deve levar em conta muitos fatores:
- A consulta do usuário é escrita de forma a obter os resultados que o usuário está procurando?
- A consulta do usuário viola alguma das políticas da organização?
- Como você reescreve a consulta do usuário para melhorar as chances de encontrar as correspondências mais próximas no banco de dados vetoriais?
- Como você avalia os resultados da consulta para garantir que os blocos do artigo estejam alinhados à consulta?
- Como você avalia e modifica os resultados da consulta antes de passá-los para o LLM para garantir que os detalhes mais relevantes sejam incluídos na conclusão?
- Como você avalia a resposta do LLM para garantir que a conclusão do LLM responda à consulta original do usuário?
- Como você garante que a resposta do LLM esteja em conformidade com as políticas da organização?
Todo o pipeline de inferência é executado em tempo real. Não há uma maneira certa de projetar suas etapas de pré-processamento e pós-processamento. Você provavelmente escolherá uma combinação de lógica de programação e outras chamadas LLM. Uma das considerações mais importantes é a compensação entre construir o pipeline mais preciso e compatível possível e o custo e a latência necessários para o alcançar.
Vamos identificar estratégias específicas em cada estágio do pipeline de inferência.
Etapas de pré-processamento de consultas
O pré-processamento da consulta ocorre imediatamente após o usuário enviar sua consulta:
O objetivo destas etapas é garantir que o utilizador coloque questões que estejam dentro do âmbito do seu sistema e preparar a consulta do utilizador para aumentar a probabilidade de localizar os melhores fragmentos de artigos possíveis, utilizando a similaridade cosseno ou a pesquisa de "vizinho mais próximo".
Verificação de política: Esta etapa envolve a lógica que identifica, remove, sinaliza ou rejeita determinado conteúdo. Alguns exemplos incluem a remoção de dados pessoais, a remoção de palavrões e a identificação de tentativas de "jailbreak". Jailbreaking refere-se às tentativas dos utilizadores de contornar ou manipular as orientações internas de segurança, ética ou operacionais do modelo.
Reescrita da Consulta: Esta etapa pode incluir desde a expansão de acrónimos e a remoção de gírias até à reformulação da pergunta para a tornar mais abstrata, a fim de extrair conceitos e princípios de alto nível (step-back prompting).
Uma variação na solicitação de passo atrás é Hypothetical Document Embeddings (HyDE). O HyDE usa o LLM para responder à pergunta do usuário, cria uma incorporação para essa resposta (a incorporação hipotética de documentos) e, em seguida, usa a incorporação para executar uma pesquisa no banco de dados vetorial.
Subconsultas
A etapa de processamento de subconsultas é baseada na consulta original. Se a consulta original for longa e complexa, pode ser útil dividi-la programaticamente em várias consultas menores e, em seguida, combinar todas as respostas.
Por exemplo, uma pergunta sobre descobertas científicas na física pode ser: "Quem fez contribuições mais significativas para a física moderna, Albert Einstein ou Niels Bohr?"
A divisão de consultas complexas em subconsultas as torna mais gerenciáveis:
- Subconsulta 1: "Quais são as principais contribuições de Albert Einstein para a física moderna?"
- Subconsulta 2: "Quais são as principais contribuições de Niels Bohr para a física moderna?"
Os resultados dessas subconsultas detalham as principais teorias e descobertas de cada físico. Por exemplo:
- Para Einstein, as contribuições podem incluir a teoria da relatividade, o efeito fotoelétrico e E=mc^2.
- Para Bohr, as contribuições podem incluir o modelo de Bohr do átomo de hidrogênio, o trabalho de Bohr sobre mecânica quântica e o princípio de complementaridade de Bohr.
Quando essas contribuições são definidas, elas podem ser avaliadas para determinar mais subconsultas. Por exemplo:
- Subconsulta 3: "Como as teorias de Einstein impactaram o desenvolvimento da física moderna?"
- Subconsulta 4: "Como as teorias de Bohr impactaram o desenvolvimento da física moderna?"
Estas subconsultas exploram a influência de cada cientista na física, tais como:
- Como as teorias de Einstein levaram a avanços na cosmologia e na teoria quântica
- Como o trabalho de Bohr contribuiu para a compreensão da estrutura atômica e da mecânica quântica
A combinação dos resultados dessas subconsultas pode ajudar o modelo de linguagem a formar uma resposta mais abrangente sobre quem fez contribuições mais significativas para a física moderna com base em seus avanços teóricos. Esse método simplifica a consulta complexa original acessando componentes mais específicos e respondíveis e, em seguida, sintetizando essas descobertas em uma resposta coerente.
Roteador de consulta
Sua organização pode optar por dividir seu corpus de conteúdo em vários repositórios vetoriais ou em sistemas de recuperação inteiros. Nesse cenário, você pode usar um roteador de consulta. Um roteador de consulta seleciona o banco de dados ou índice mais apropriado para fornecer as melhores respostas a uma consulta específica.
Um roteador de consulta normalmente funciona em um ponto depois que o usuário formula a consulta, mas antes de enviá-la para sistemas de recuperação.
Aqui está um fluxo de trabalho simplificado para um roteador de consulta:
- Análise de consulta: O LLM ou outro componente analisa a consulta de entrada para entender seu conteúdo, contexto e o tipo de informação que provavelmente é necessária.
- Seleção de índice: Com base na análise, o roteador de consulta seleciona um ou mais índices de vários índices potencialmente disponíveis. Cada índice pode ser otimizado para diferentes tipos de dados ou consultas. Por exemplo, alguns índices podem ser mais adequados para consultas factuais. Outros índices podem se destacar no fornecimento de opiniões ou conteúdo subjetivo.
- Despacho de consulta: A consulta é enviada para o índice selecionado.
- Agregação de resultados: As respostas dos índices selecionados são recuperadas e, possivelmente, agregadas ou processadas posteriormente para formar uma resposta abrangente.
- Geração de respostas: A etapa final envolve gerar uma resposta coerente com base nas informações recuperadas, possivelmente integrando ou sintetizando conteúdo de várias fontes.
Sua organização pode usar vários mecanismos de recuperação ou índices para os seguintes casos de uso:
- Especialização do tipo de dados: Alguns índices podem especializar-se em artigos noticiosos, outros em artigos académicos e ainda outros em conteúdos web gerais ou bases de dados específicas, como para informação médica ou jurídica.
- Otimização do tipo de consulta: Certos índices podem ser otimizados para pesquisas factuais rápidas (por exemplo, datas ou eventos). Outros podem ser melhores para usar para tarefas de raciocínio complexas ou para consultas que exigem um conhecimento profundo do domínio.
- Diferenças algorítmicas: Diferentes algoritmos de recuperação podem ser usados em diferentes mecanismos, como pesquisas de semelhança baseadas em vetores, pesquisas tradicionais baseadas em palavras-chave ou modelos de compreensão semântica mais avançados.
Imagine um sistema baseado em RAG que é usado em um contexto de aconselhamento médico. O sistema tem acesso a vários índices:
- Um índice de artigos de pesquisa médica otimizado para explicações técnicas e detalhadas
- Um índice de estudo de caso clínico que fornece exemplos reais de sintomas e tratamentos
- Um índice geral de informações sobre saúde para consultas básicas e informações de saúde pública
Se um usuário fizer uma pergunta técnica sobre os efeitos bioquímicos de um novo medicamento, o roteador de consulta pode priorizar o índice de papel de pesquisa médica devido à sua profundidade e foco técnico. Para uma pergunta sobre sintomas típicos de uma doença comum, no entanto, o índice de saúde geral pode ser escolhido por seu conteúdo amplo e facilmente compreensível.
Etapas de processamento pós-recuperação
O processamento pós-recuperação ocorre depois que o componente retriever recupera partes de conteúdo relevantes do banco de dados vetorial:
Com os blocos de conteúdo candidato recuperados, a próxima etapa é validar a utilidade do bloco de artigo ao aumentar prompt do LLM antes de preparar o prompt a ser apresentado ao LLM.
Aqui estão alguns aspetos imediatos a considerar:
- Incluir demasiada informação complementar pode resultar em ignorar a informação mais importante.
- A inclusão de informações irrelevantes pode influenciar negativamente a resposta.
Outra consideração é o problema de agulha num palheiro, um termo que se refere a uma peculiaridade conhecida de alguns LLMs em que o conteúdo no início e no final de um prompt tem maior peso para o LLM do que o conteúdo no meio.
Finalmente, considere o comprimento máximo da janela de contexto do LLM e o número de tokens necessários para completar prompts extremamente longos (especialmente para consultas em grande escala).
Para lidar com esses problemas, um pipeline de processamento pós-recuperação pode incluir as seguintes etapas:
- Filtrando resultados: Nesta etapa, verifique se os blocos de artigo retornados pelo banco de dados vetorial são relevantes para a consulta. Caso não estejam, o resultado é ignorado quando o pedido LLM é formulado.
- Reclassificação: Ordene os blocos de artigos recuperados do repositório de vetores para garantir que os detalhes relevantes fiquem próximos do início e do fim do prompt.
- Prompt compression: Use um modelo pequeno e barato para compactar e resumir vários blocos de artigo em um único prompt compactado antes de enviar o prompt para o LLM.
Etapas de processamento pós-conclusão
O processamento pós-conclusão ocorre após a consulta do usuário e todos os blocos de conteúdo são enviados para o LLM:
A validação da precisão ocorre após a pronta conclusão do LLM. Um pipeline de processamento pós-conclusão pode incluir as seguintes etapas:
- Verificação de factos: A intenção é identificar alegações específicas feitas no artigo que são apresentadas como factos e, em seguida, verificar a exatidão desses factos. Se a etapa de verificação de fatos falhar, pode ser apropriado consultar novamente o LLM na esperança de obter uma resposta melhor ou retornar uma mensagem de erro para o usuário.
- Verificação da política: A última linha de defesa para garantir que as respostas não contenham conteúdo nocivo, seja para o usuário ou para a organização.
Avaliação
Avaliar os resultados de um sistema não determinístico não é tão simples quanto executar os testes de unidade ou testes de integração com os quais a maioria dos desenvolvedores está familiarizada. Você precisa considerar vários fatores:
- Os utilizadores estão satisfeitos com os resultados que estão a obter?
- Os usuários estão recebendo respostas precisas às suas perguntas?
- Como você captura o feedback dos usuários? Você tem alguma política em vigor que limite quais dados você pode coletar sobre os dados do usuário?
- Para o diagnóstico de respostas insatisfatórias, tem visibilidade de todo o trabalho que foi realizado para responder à pergunta? Você mantém um registro de cada estágio no pipeline de inferência de entradas e saídas para que possa executar a análise de causa raiz?
- Como fazer alterações no sistema sem regressão ou degradação dos resultados?
Captar e agir com base no feedback dos utilizadores
Conforme descrito anteriormente, talvez seja necessário trabalhar com a equipe de privacidade da sua organização para projetar mecanismos de captura de feedback, telemetria e registro em log para análise forense e de causa raiz de uma sessão de consulta.
O próximo passo é desenvolver um pipeline de avaliação. Um pipeline de avaliação ajuda com a complexidade e o caráter moroso da análise do feedback direto e das causas profundas das respostas fornecidas por um sistema de IA. Essa análise é crucial porque envolve investigar cada resposta para entender como a consulta de IA produziu os resultados, verificar a adequação dos blocos de conteúdo que são usados a partir da documentação e as estratégias empregadas na divisão desses documentos.
Também envolve considerar quaisquer etapas extras de pré-processamento ou pós-processamento que possam melhorar os resultados. Esse exame detalhado geralmente revela lacunas de conteúdo, especialmente quando não existe documentação adequada para responder à consulta de um usuário.
A construção de um pipeline de avaliação torna-se essencial para gerenciar a escala dessas tarefas de forma eficaz. Um pipeline eficiente usa ferramentas personalizadas para avaliar métricas que se aproximam da qualidade das respostas fornecidas pela IA. Esse sistema simplifica o processo de determinar por que uma resposta específica foi dada à pergunta de um usuário, quais documentos foram usados para gerar essa resposta e a eficácia do pipeline de inferência que processa as consultas.
Conjunto de dados dourado
Uma estratégia para avaliar os resultados de um sistema não determinístico como um sistema de chat RAG é usar um conjunto de dados dourado. Um conjunto de dados dourado é um conjunto curado de perguntas e respostas aprovadas, metadados (como tópico e tipo de pergunta), referências a documentos de origem que podem servir como verdade básica para respostas e até variações (diferentes fraseados para capturar a diversidade de como os usuários podem fazer as mesmas perguntas).
Um conjunto de dados dourado representa o "melhor cenário". Os desenvolvedores podem avaliar o sistema para ver o seu desempenho e, em seguida, fazer testes de regressão quando implementarem novos recursos ou atualizações.
Avaliação dos danos
A modelagem de danos é uma metodologia que visa prever danos potenciais, detetar deficiências em um produto que possam representar riscos para os indivíduos e desenvolver estratégias proativas para mitigar tais riscos.
Uma ferramenta projetada para avaliar o impacto da tecnologia, particularmente os sistemas de IA, apresentaria vários componentes-chave com base nos princípios de modelagem de danos, conforme descrito nos recursos fornecidos.
As principais características de uma ferramenta de avaliação de danos podem incluir:
de identificação das partes interessadas: A ferramenta pode ajudar os usuários a identificar e categorizar várias partes interessadas que são afetadas pela tecnologia, incluindo usuários diretos, partes afetadas indiretamente e outras entidades, como gerações futuras ou fatores não humanos, como preocupações ambientais.
Categorias e descrições de danos: A ferramenta pode incluir uma lista abrangente de danos potenciais, como perda de privacidade, sofrimento emocional ou exploração econômica. A ferramenta pode guiar o usuário por vários cenários, ilustrar como a tecnologia pode causar esses danos e ajudar a avaliar as consequências intencionais e não intencionais.
Avaliações de gravidade e probabilidade: A ferramenta pode ajudar os usuários a avaliar a gravidade e a probabilidade de cada dano identificado. O usuário pode priorizar os problemas a serem resolvidos primeiro. Os exemplos incluem avaliações qualitativas apoiadas por dados, quando disponíveis.
Estratégias de mitigação: A ferramenta pode sugerir potenciais estratégias de mitigação depois de identificar e avaliar danos. Os exemplos incluem alterações na conceção do sistema, a adição de salvaguardas e soluções tecnológicas alternativas que minimizam os riscos identificados.
Mecanismos de feedback: A ferramenta deve incorporar mecanismos de recolha de feedback das partes interessadas para que o processo de avaliação de danos seja dinâmico e sensível a novas informações e perspetivas.
Documentação e relatórios: Para transparência e responsabilização, a ferramenta pode facilitar relatórios detalhados que documentam o processo de avaliação de danos, descobertas e potenciais ações de mitigação de riscos tomadas.
Esses recursos podem ajudá-lo a identificar e mitigar riscos, mas também ajudam a projetar sistemas de IA mais éticos e responsáveis, considerando um amplo espectro de impactos desde o início.
Para obter mais informações, consulte estes artigos:
Testar e verificar as salvaguardas
Este artigo descreve vários processos que visam mitigar a possibilidade de um sistema de chat baseado em RAG ser explorado ou comprometido. Red-teaming desempenha um papel crucial para garantir que as mitigações sejam eficazes. Red-teaming envolve simular as ações de um adversário potencial para descobrir potenciais fraquezas ou vulnerabilidades no aplicativo. Esta abordagem é especialmente vital para lidar com o risco significativo de jailbreaking.
Os desenvolvedores precisam avaliar rigorosamente as proteções do sistema de chat baseado em RAG sob vários cenários de diretriz para testá-las e verificá-las de forma eficaz. Essa abordagem não só garante robustez, mas também ajuda a ajustar as respostas do sistema para cumprir rigorosamente os padrões éticos e procedimentos operacionais definidos.
Considerações finais para o design do aplicativo
Aqui está uma pequena lista de coisas a considerar e outras conclusões deste artigo que podem afetar suas decisões de design de aplicativo:
- Reconheça a natureza não determinística da IA generativa em seu design. Planear a variabilidade dos resultados e criar mecanismos para assegurar a coerência e a pertinência das respostas.
- Avalie os benefícios do pré-processamento de prompts do usuário em relação ao potencial aumento da latência e dos custos. Simplificar ou modificar prompts antes do envio pode melhorar a qualidade da resposta, mas pode adicionar complexidade e tempo ao ciclo de resposta.
- Para melhorar o desempenho, investigue estratégias para paralelizar solicitações de LLM. Essa abordagem pode reduzir a latência, mas requer um gerenciamento cuidadoso para evitar o aumento da complexidade e possíveis implicações de custo.
Se você quiser começar a experimentar a criação de uma solução de IA generativa imediatamente, recomendamos que você dê uma olhada em Introdução ao bate-papo usando sua própria amostra de dados para Python. O tutorial também está disponível para .NET, Javae JavaScript.