A IA conversacional percorreu um longo caminho nos últimos anos graças aos rápidos desenvolvimentos na IA generativa, especialmente às melhorias de desempenho de grandes modelos de linguagem (LLMs) introduzidas por técnicas de treinamento, como o ajuste fino de instruções e o aprendizado reforçado a partir do feedback humano. Quando solicitados corretamente, esses modelos podem realizar conversas coerentes sem quaisquer dados de treinamento específicos da tarefa. No entanto, não conseguem generalizar bem para questões específicas da empresa porque, para gerar uma resposta, baseiam-se nos dados públicos a que foram expostos durante a pré-formação. Esses dados muitas vezes carecem do conhecimento especializado contido em documentos internos disponíveis nas empresas modernas, que normalmente é necessário para obter respostas precisas em domínios como investigação farmacêutica, investigação financeira e apoio ao cliente.
Para criar assistentes de IA que sejam capazes de realizar discussões baseadas em conhecimento empresarial especializado, precisamos conectar esses LLMs poderosos, mas genéricos, a bases de conhecimento internas de documentos. Este método de enriquecer o contexto de geração de LLM com informações recuperadas de suas fontes de dados internas é chamado de Retrieval Augmented Generation (RAG) e produz assistentes que são específicos do domínio e mais confiáveis, conforme mostrado por Geração aumentada de recuperação para tarefas de PNL intensivas em conhecimento. Outro fator por trás da popularidade do RAG é a sua facilidade de implementação e a existência de soluções maduras de busca vetorial, como as oferecidas pela Amazona Kendra (Vejo Amazon Kendra lança API de recuperação) e Serviço Amazon OpenSearch (Vejo Pesquisa de k-vizinho mais próximo (k-NN) no Amazon OpenSearch Service), entre outros.
No entanto, o popular padrão de design RAG com pesquisa semântica não consegue responder a todos os tipos de perguntas possíveis em documentos. Isto é especialmente verdadeiro para questões que exigem raciocínio analítico em vários documentos. Por exemplo, imagine que você está planejando a estratégia de uma empresa de investimentos para o próximo ano. Um passo essencial seria analisar e comparar os resultados financeiros e os riscos potenciais das empresas candidatas. Esta tarefa envolve responder a questões de raciocínio analítico. Por exemplo, a consulta “Dê-me as 5 principais empresas com as maiores receitas nos últimos 2 anos e identifique os seus principais riscos” requer múltiplos passos de raciocínio, alguns dos quais podem utilizar a recuperação de pesquisa semântica, enquanto outros requerem capacidades analíticas.
Neste post, mostramos como projetar um assistente de documentos inteligente capaz de responder questões analíticas e de raciocínio em várias etapas em três partes. Na Parte 1, revisamos o padrão de projeto RAG e suas limitações em questões analíticas. A seguir apresentamos uma arquitetura mais versátil que supera essas limitações. A Parte 2 ajuda você a se aprofundar no pipeline de extração de entidades usado para preparar dados estruturados, que é um ingrediente-chave para responder perguntas analíticas. A Parte 3 mostra como usar Rocha Amazônica LLMs para consultar esses dados e construir um agente LLM que aprimora o RAG com recursos analíticos, permitindo assim que você crie assistentes de documentos inteligentes que podem responder a perguntas complexas específicas de domínio em vários documentos.
Parte 1: Limitações do RAG e visão geral da solução
Nesta seção, revisamos o padrão de projeto RAG e discutimos suas limitações em questões analíticas. Apresentamos também uma arquitetura mais versátil que supera essas limitações.
Visão geral do RAG
As soluções RAG são inspiradas em aprendizagem de representação e busca semântica ideias que foram gradualmente adotadas em problemas de classificação (por exemplo, recomendação e pesquisa) e tarefas de processamento de linguagem natural (PNL) desde 2010.
A abordagem popular usada hoje é formada por três etapas:
- Um trabalho de processamento em lote offline ingere documentos de uma base de conhecimento de entrada, divide-os em partes, cria uma incorporação para cada parte para representar sua semântica usando um modelo de incorporação pré-treinado, como Titã Amazona incorporação de modelos e, em seguida, usa essas incorporações como entrada para criar um índice de pesquisa semântica.
- Ao responder uma nova pergunta em tempo real, a pergunta de entrada é convertida em uma incorporação, que é usada para procurar e extrair os pedaços de documentos mais semelhantes usando uma métrica de similaridade, como similaridade de cosseno, e um algoritmo aproximado de vizinhos mais próximos. A precisão da pesquisa também pode ser melhorada com filtragem de metadados.
- Um prompt é construído a partir da concatenação de uma mensagem do sistema com um contexto formado pelos pedaços relevantes de documentos extraídos na etapa 2 e pela própria pergunta de entrada. Este prompt é então apresentado a um modelo LLM para gerar a resposta final à pergunta a partir do contexto.
Com o modelo de incorporação subjacente correto, capaz de produzir representações semânticas precisas dos pedaços do documento de entrada e das questões de entrada, e um módulo de pesquisa semântica eficiente, esta solução é capaz de responder a questões que requerem a recuperação de informações existentes numa base de dados de documentos. Por exemplo, se você tem um serviço ou produto, pode começar indexando sua seção de perguntas frequentes ou documentação e ter uma IA de conversação inicial adaptada à sua oferta específica.
Limitações do RAG baseado em pesquisa semântica
Embora o RAG seja um componente essencial nos modernos assistentes de IA específicos de domínio e um ponto de partida sensato para a construção de uma IA conversacional em torno de uma base de conhecimento especializada, ele não pode responder a perguntas que exijam digitalização, comparação e raciocínio em todos os documentos da sua base de conhecimento. simultaneamente, especialmente quando o aumento é baseado apenas na busca semântica.
Para compreender estas limitações, consideremos novamente o exemplo de decidir onde investir com base em relatórios financeiros. Se usássemos o RAG para conversar com esses relatórios, poderíamos fazer perguntas como “Quais são os riscos que a empresa X enfrentou em 2022” ou “Qual é a receita líquida da empresa Y em 2022?” Para cada uma dessas questões, o vetor de incorporação correspondente, que codifica o significado semântico da questão, é usado para recuperar os K principais pedaços de documentos semanticamente semelhantes disponíveis no índice de pesquisa. Isso normalmente é conseguido empregando uma solução aproximada de vizinhos mais próximos, como FAISS, NMSLIB, pgvector ou outros, que se esforçam para encontrar um equilíbrio entre velocidade de recuperação e recuperação para alcançar desempenho em tempo real, mantendo ao mesmo tempo uma precisão satisfatória.
No entanto, a abordagem anterior não consegue responder com precisão a questões analíticas em todos os documentos, como “Quais são as 5 principais empresas com as maiores receitas líquidas em 2022?”
Isso ocorre porque a recuperação da pesquisa semântica tenta encontrar os K pedaços de documentos mais semelhantes à pergunta de entrada. Mas como nenhum dos documentos contém resumos abrangentes das receitas, irá devolver pedaços de documentos que contêm apenas menções a “receitas líquidas” e possivelmente a “2022”, sem cumprir a condição essencial de se concentrar nas empresas com as receitas mais elevadas. Se apresentarmos esses resultados de recuperação a um LLM como contexto para responder à pergunta de entrada, ele poderá formular uma resposta enganosa ou recusar-se a responder, porque faltam as informações corretas exigidas.
Essas limitações surgem intencionalmente porque a pesquisa semântica não realiza uma verificação completa de todos os vetores de incorporação para encontrar documentos relevantes. Em vez disso, ele usa métodos aproximados do vizinho mais próximo para manter uma velocidade de recuperação razoável. Uma estratégia chave para a eficiência destes métodos é segmentar o espaço de incorporação em grupos durante a indexação. Isto permite identificar rapidamente quais grupos podem conter incorporações relevantes durante a recuperação, sem a necessidade de comparações aos pares. Além disso, mesmo as técnicas tradicionais de vizinhos mais próximos, como KNN, que verificam todos os documentos, calculam apenas métricas básicas de distância e não são adequadas para comparações complexas necessárias para o raciocínio analítico. Portanto, o RAG com pesquisa semântica não está adaptado para responder questões que envolvam raciocínio analítico em todos os documentos.
Para superar essas limitações, propomos uma solução que combina RAG com extração de metadados e entidades, consulta SQL e agentes LLM, conforme descrito nas seções a seguir.
Superando as limitações do RAG com agentes de metadados, SQL e LLM
Vamos examinar mais profundamente uma questão na qual o RAG falha, para que possamos rastrear o raciocínio necessário para respondê-la de forma eficaz. Esta análise deverá indicar-nos a abordagem correcta que poderá complementar o RAG na solução global.
Considere a questão: “Quais são as 5 empresas com maior receita em 2022?”
Para poder responder a esta pergunta, precisaríamos:
- Identifique a receita de cada empresa.
- Filtre para baixo para manter as receitas de 2022 para cada um deles.
- Classifique as receitas em ordem decrescente.
- Divida as 5 principais receitas junto com os nomes das empresas.
Normalmente, essas operações analíticas são realizadas em dados estruturados, usando ferramentas como pandas ou mecanismos SQL. Se tivéssemos acesso a uma tabela SQL contendo as colunas company
, revenue
e year
, poderíamos facilmente responder à nossa pergunta executando uma consulta SQL, semelhante ao exemplo a seguir:
SELECT company, revenue FROM table_name WHERE year = 2022 ORDER BY revenue DESC LIMIT 5;
Armazenar metadados estruturados em uma tabela SQL que contém informações sobre entidades relevantes permite responder a muitos tipos de questões analíticas escrevendo a consulta SQL correta. É por isso que complementamos o RAG em nossa solução com um módulo de consulta SQL em tempo real em uma tabela SQL, preenchida por metadados extraídos em um processo offline.
Mas como podemos implementar e integrar esta abordagem a uma IA conversacional baseada em LLM?
Existem três etapas para adicionar raciocínio analítico SQL:
- Extração de metadados – Extraia metadados de documentos não estruturados em uma tabela SQL
- Texto para SQL – Formule consultas SQL a partir de perguntas de entrada com precisão usando um LLM
- Seleção de ferramentas – Identifique se uma pergunta deve ser respondida usando RAG ou uma consulta SQL
Para implementar essas etapas, primeiro reconhecemos que a extração de informações de documentos não estruturados é uma tarefa tradicional da PNL, para a qual os LLMs se mostram promissores em alcançar alta precisão por meio de aprendizado zero-shot ou poucos-shots. Em segundo lugar, a capacidade destes modelos para gerar consultas SQL a partir de linguagem natural foi comprovada há anos, como visto no 2020 lançamento of Amazon QuickSightQ. Por fim, a seleção automática da ferramenta certa para uma pergunta específica melhora a experiência do usuário e permite responder a perguntas complexas por meio de raciocínio em várias etapas. Para implementar esse recurso, nos aprofundaremos nos agentes LLM em uma seção posterior.
Resumindo, a solução que propomos é composta pelos seguintes componentes principais:
- Recuperação de pesquisa semântica para aumentar o contexto de geração
- Extração estruturada de metadados e consulta com SQL
- Um agente capaz de usar as ferramentas certas para responder a uma pergunta
Visão geral da solução
O diagrama a seguir descreve uma arquitetura simplificada da solução. Ajuda a identificar e compreender a função dos componentes principais e como eles interagem para implementar o comportamento completo do assistente LLM. A numeração está alinhada com a ordem das operações ao implementar esta solução.
Na prática, implementamos esta solução conforme descrito na arquitetura detalhada a seguir.
Para esta arquitetura, propomos uma implementação em GitHub, com componentes fracamente acoplados onde o backend (5), os pipelines de dados (1, 2, 3) e o front end (4) podem evoluir separadamente. Isso simplifica a colaboração entre competências ao personalizar e melhorar a solução para produção.
Implante a solução
Para instalar esta solução em sua conta AWS, conclua as seguintes etapas:
- Clone o repositório no GitHub.
- Instale o back-end Kit de desenvolvimento em nuvem da AWS (AWSCDK) app:
- Abra o
backend
pasta. - Execute
npm install
para instalar as dependências. - Se você nunca usou o AWS CDK na conta atual e na região, execute bootstrapping de
npx cdk bootstrap
. - Execute
npx cdk deploy
para implantar a pilha.
- Abra o
- Opcionalmente, execute o
streamlit-ui
como se segue:- Recomendamos clonar este repositório em um Estúdio Amazon SageMaker ambiente. Para obter mais informações, consulte Integração ao domínio Amazon SageMaker usando configuração rápida.
- No interior do
frontend/streamlit-ui
pasta, executebash run-streamlit-ui.sh
. - Escolha o link com o seguinte formato para abrir a demonstração:
https://{domain_id}.studio.{region}.sagemaker.aws/jupyter/default/proxy/{port_number}/
.
- Finalmente, você pode executar o Amazon Sage Maker pipeline definido no
data-pipelines/04-sagemaker-pipeline-for-documents-processing.ipynb
notebook para processar os documentos PDF de entrada e preparar a tabela SQL e o índice de pesquisa semântica usado pelo assistente LLM.
No restante desta postagem, nos concentramos em explicar os componentes e opções de design mais importantes, para inspirar você ao projetar seu próprio assistente de IA em uma base de conhecimento interna. Assumimos que os componentes 1 e 4 são simples de entender e nos concentramos nos componentes principais 2, 3 e 5.
Parte 2: Pipeline de extração de entidade
Nesta seção, nos aprofundamos no pipeline de extração de entidades usado para preparar dados estruturados, que é um ingrediente chave para responder perguntas analíticas.
Extração de texto
Os documentos normalmente são armazenados em formato PDF ou como imagens digitalizadas. Eles podem ser formados por layouts de parágrafos simples ou tabelas complexas e conter texto digital ou manuscrito. Para extrair informações corretamente, precisamos transformar esses documentos brutos em texto simples, preservando sua estrutura original. Para fazer isso, você pode usar amazontext, que é um serviço de aprendizado de máquina (ML) que fornece APIs maduras para extração de texto, tabelas e formulários de entradas digitais e manuscritas.
No componente 2, extraímos texto e tabelas da seguinte forma:
- Para cada documento, chamamos Amazon Textract para extrair o texto e as tabelas.
- Nós usamos o seguinte Script Python para recriar tabelas como DataFrames do pandas.
- Consolidamos os resultados em um único documento e inserimos tabelas como descontos.
Este processo é descrito pelo diagrama de fluxo a seguir e demonstrado concretamente em notebooks/03-pdf-document-processing.ipynb
.
Extração e consulta de entidades usando LLMs
Para responder a perguntas analíticas de forma eficaz, você precisa extrair metadados e entidades relevantes da base de conhecimento do seu documento para um formato de dados estruturado acessível. Sugerimos usar SQL para armazenar essas informações e recuperar respostas devido à sua popularidade, facilidade de uso e escalabilidade. Essa escolha também se beneficia da capacidade comprovada dos modelos de linguagem de gerar consultas SQL a partir de linguagem natural.
Nesta seção, nos aprofundamos nos seguintes componentes que permitem questões analíticas:
- Um processo em lote que extrai dados estruturados de dados não estruturados usando LLMs
- Um módulo em tempo real que converte perguntas de linguagem natural em consultas SQL e recupera resultados de um banco de dados SQL
Você pode extrair os metadados relevantes para apoiar questões analíticas da seguinte forma:
- Defina um esquema JSON para as informações que você precisa extrair, que contém uma descrição de cada campo e seu tipo de dados, além de incluir exemplos dos valores esperados.
- Para cada documento, solicite um LLM com o esquema JSON e peça para extrair os dados relevantes com precisão.
- Quando o comprimento do documento ultrapassa o comprimento do contexto e para reduzir o custo de extração com LLMs, você pode usar a pesquisa semântica para recuperar e apresentar os pedaços relevantes de documentos ao LLM durante a extração.
- Analise a saída JSON e valide a extração LLM.
- Opcionalmente, faça backup dos resultados no Amazon S3 como arquivos CSV.
- Carregue no banco de dados SQL para consulta posterior.
Este processo é gerenciado pela seguinte arquitetura, onde os documentos em formato texto são carregados com um script Python que roda em formato Processamento do Amazon SageMaker trabalho para realizar a extração.
Para cada grupo de entidades, construímos dinamicamente um prompt que inclui uma descrição clara da tarefa de extração de informações e inclui um esquema JSON que define a saída esperada e inclui os pedaços de documentos relevantes como contexto. Também adicionamos alguns exemplos de entrada e saída correta para melhorar o desempenho de extração com aprendizado em poucas tentativas. Isto é demonstrado em notebooks/05-entities-extraction-to-structured-metadata.ipynb
.
Parte 3: Crie um assistente de documentos agente com Amazon Bedrock
Nesta seção, demonstramos como usar Amazon Bedrock LLMs para consultar dados e criar um agente LLM que aprimora o RAG com recursos analíticos, permitindo assim que você crie assistentes de documentos inteligentes que podem responder a perguntas complexas específicas de domínio em vários documentos. Você pode consultar o Função Lambda no GitHub para a implementação concreta do agente e das ferramentas descritas nesta parte.
Formule consultas SQL e responda perguntas analíticas
Agora que temos um armazenamento de metadados estruturado com as entidades relevantes extraídas e carregadas em um banco de dados SQL que podemos consultar, a questão que permanece é como gerar a consulta SQL correta a partir das perguntas de linguagem natural de entrada.
LLMs modernos são bons para gerar SQL. Por exemplo, se você solicitar ao Anthropic Claude LLM através Rocha Amazônica para gerar uma consulta SQL, você verá respostas plausíveis. No entanto, precisamos obedecer a algumas regras ao escrever o prompt para obter consultas SQL mais precisas. Estas regras são especialmente importantes para consultas complexas para reduzir alucinações e erros de sintaxe:
- Descreva a tarefa com precisão no prompt
- Incluir o esquema das tabelas SQL no prompt, ao mesmo tempo que descreve cada coluna da tabela e especifica seu tipo de dados
- Diga explicitamente ao LLM para usar apenas nomes de colunas e tipos de dados existentes
- Adicione algumas linhas das tabelas SQL
Você também pode pós-processar a consulta SQL gerada usando um linter tais como sqlfluff para corrigir a formatação ou um analisador como sqlglot para detectar erros de sintaxe e otimizar a consulta. Além disso, quando o desempenho não atende ao requisito, você pode fornecer alguns exemplos no prompt para orientar o modelo com aprendizado rápido para gerar consultas SQL mais precisas.
Do ponto de vista da implementação, usamos um AWS Lambda função para orquestrar o seguinte processo:
- Chame um modelo Antrópico Claude no Amazon Bedrock com a pergunta de entrada para obter a consulta SQL correspondente. Aqui, usamos o Banco de dados SQL classe do LangChain para adicionar descrições de esquema de tabelas SQL relevantes e usar um prompt personalizado.
- Analise, valide e execute a consulta SQL no Edição compatível com Amazon Aurora PostgreSQL base de dados.
A arquitetura desta parte da solução é destacada no diagrama a seguir.
Considerações de segurança para evitar ataques de injeção de SQL
À medida que permitimos que o assistente de IA consulte um banco de dados SQL, precisamos garantir que isso não introduza vulnerabilidades de segurança. Para conseguir isso, propomos as seguintes medidas de segurança para evitar ataques de injeção de SQL:
- Aplicar permissões IAM com privilégio mínimo – Limite a permissão da função Lambda que executa as consultas SQL usando um Gerenciamento de acesso e identidade da AWS (IAM) política e função que segue o princípio do privilégio mínimo. Nesse caso, concedemos acesso somente leitura.
- Limitar o acesso aos dados – Forneça acesso apenas ao mínimo necessário de tabelas e colunas para evitar ataques de divulgação de informações.
- Adicione uma camada de moderação – Introduzir uma camada de moderação que detecte tentativas de injeção imediata e evite que elas se propaguem para o resto do sistema. Ele pode assumir a forma de filtros baseados em regras, correspondência de similaridade com um banco de dados de exemplos conhecidos de injeção de prompt ou um classificador de ML.
Recuperação de pesquisa semântica para aumentar o contexto de geração
A solução que propomos utiliza RAG com busca semântica no componente 3. Você pode implementar este módulo usando bases de conhecimento para Amazon Bedrock. Além disso, há uma variedade de outras opções para implementar o RAG, como o API de recuperação Amazon Kendra, Banco de dados de vetores Amazon OpenSearch e Amazon Aurora PostgreSQL com pgvector, entre outros. O pacote de código aberto aws-genai-llm-chatbot demonstra como usar muitas dessas opções de pesquisa vetorial para implementar um chatbot com tecnologia LLM.
Nesta solução, como precisamos tanto de consulta SQL quanto de pesquisa vetorial, decidimos usar o Amazon Aurora PostgreSQL com o vetor pg extensão, que suporta ambos os recursos. Portanto, implementamos o componente RAG de pesquisa semântica com a seguinte arquitetura.
O processo de resposta a perguntas utilizando a arquitetura anterior é feito em duas etapas principais.
Primeiro, um processo em lote offline, executado como um trabalho do SageMaker Processing, cria o índice de pesquisa semântica da seguinte forma:
- Periodicamente ou ao receber novos documentos, um trabalho do SageMaker é executado.
- Ele carrega os documentos de texto do Amazon S3 e os divide em partes sobrepostas.
- Para cada pedaço, ele usa um modelo de incorporação do Amazon Titan para gerar um vetor de incorporação.
- Ele usa o PGVetor classe do LangChain para ingerir os embeddings, com seus pedaços de documentos e metadados, no Amazon Aurora PostgreSQL e criar um índice de pesquisa semântica em todos os vetores de incorporação.
Segundo, em tempo real e para cada nova pergunta, construímos uma resposta da seguinte forma:
- A pergunta é recebida pelo orquestrador que executa uma função Lambda.
- O orquestrador incorpora a pergunta com o mesmo modelo de incorporação.
- Ele recupera os K principais pedaços de documentos mais relevantes do índice de pesquisa semântica do PostgreSQL. Opcionalmente, ele usa filtragem de metadados para melhorar a precisão.
- Esses pedaços são inseridos dinamicamente em um prompt do LLM junto com a pergunta de entrada.
- O prompt é apresentado ao Anthropic Claude no Amazon Bedrock, para instruí-lo a responder à pergunta de entrada com base no contexto disponível.
- Finalmente, a resposta gerada é enviada de volta ao orquestrador.
Um agente capaz de usar ferramentas para raciocinar e agir
Até agora nesta postagem, discutimos o tratamento de questões que exigem RAG ou raciocínio analítico separadamente. No entanto, muitas questões do mundo real exigem ambas as capacidades, por vezes através de múltiplos passos de raciocínio, para se chegar a uma resposta final. Para apoiar estas questões mais complexas, precisamos introduzir a noção de agente.
Agentes LLM, como o agentes da Amazon Bedrock, surgiram recentemente como uma solução promissora capaz de usar LLMs para raciocinar e adaptar-se usando o contexto atual e escolher ações apropriadas a partir de uma lista de opções, que apresenta uma estrutura geral de resolução de problemas. Como discutido em Agentes autônomos alimentados por LLM, existem várias estratégias de prompt e padrões de design para agentes LLM que suportam raciocínio complexo.
Um desses padrões de design é Reason and Act (ReAct), introduzido em ReAct: sinergia entre raciocínio e ação em modelos de linguagem. No ReAct, o agente toma como entrada um objetivo que pode ser uma pergunta, identifica as informações que faltam para respondê-la e propõe iterativamente a ferramenta certa para coletar informações com base nas descrições das ferramentas disponíveis. Após receber a resposta de uma determinada ferramenta, o LLM reavalia se possui todas as informações necessárias para responder integralmente à pergunta. Caso contrário, realiza outra etapa de raciocínio e utiliza a mesma ou outra ferramenta para coletar mais informações, até que uma resposta final esteja pronta ou um limite seja atingido.
O diagrama de sequência a seguir explica como um agente ReAct trabalha para responder à pergunta “Dê-me as 5 principais empresas com maior receita nos últimos 2 anos e identifique os riscos associados à principal”.
Os detalhes da implementação desta abordagem em Python são descritos em Agente LLM personalizado. Em nossa solução, o agente e as ferramentas são implementados com a seguinte arquitetura parcial destacada.
Para responder a uma pergunta de entrada, usamos os serviços AWS da seguinte forma:
- Um usuário insere sua pergunta por meio de uma IU, que chama uma API em Gateway de API da Amazon.
- O API Gateway envia a pergunta para uma função Lambda que implementa o executor do agente.
- O agente chama o LLM com um prompt que contém uma descrição das ferramentas disponíveis, o formato da instrução ReAct e a pergunta de entrada e, em seguida, analisa a próxima ação a ser concluída.
- A ação contém qual ferramenta chamar e qual é a entrada da ação.
- Se a ferramenta a ser usada for SQL, o executor do agente chama SQLQA para converter a pergunta em SQL e executá-la. Em seguida, ele adiciona o resultado ao prompt e chama o LLM novamente para ver se consegue responder à pergunta original ou se são necessárias mais ações.
- Da mesma forma, se a ferramenta a ser usada for a pesquisa semântica, a entrada da ação será analisada e usada para recuperar do índice de pesquisa semântica do PostgreSQL. Ele adiciona os resultados ao prompt e verifica se o LLM consegue responder ou precisa de outra ação.
- Depois que todas as informações para responder a uma pergunta estiverem disponíveis, o agente LLM formula uma resposta final e a envia de volta ao usuário.
Você pode estender o agente com outras ferramentas. Na implementação disponível em GitHub, demonstramos como você pode adicionar um mecanismo de pesquisa e uma calculadora como ferramentas extras ao mecanismo SQL e às ferramentas de pesquisa semântica mencionados acima. Para armazenar o histórico de conversas em andamento, usamos um Amazon DynamoDB tabela.
Pela nossa experiência até agora, vimos que os seguintes são os segredos para um agente de sucesso:
- Um LLM subjacente capaz de raciocinar com o formato ReAct
- Uma descrição clara das ferramentas disponíveis, quando usá-las e uma descrição de seus argumentos de entrada com, potencialmente, um exemplo da entrada e do resultado esperado
- Um esboço claro do formato ReAct que o LLM deve seguir
- As ferramentas certas para resolver a questão de negócios disponibilizadas para o agente LLM usar
- Analisando corretamente as saídas das respostas do agente LLM conforme raciocina
Para otimizar custos, recomendamos armazenar em cache as perguntas mais comuns com suas respostas e atualizar esse cache periodicamente para reduzir chamadas para o LLM subjacente. Por exemplo, você pode criar um índice de pesquisa semântica com as perguntas mais comuns conforme explicado anteriormente e comparar a pergunta do novo usuário com o índice antes de chamar o LLM. Para explorar outras opções de cache, consulte Integrações de cache LLM.
Suporta outros formatos, como vídeo, imagem, áudio e arquivos 3D
Você pode aplicar a mesma solução a vários tipos de informações, como imagens, vídeos, áudio e arquivos de design 3D, como CAD ou arquivos de malha. Isso envolve o uso de técnicas de ML estabelecidas para descrever o conteúdo do arquivo em texto, que pode então ser assimilado na solução que exploramos anteriormente. Essa abordagem permite conduzir conversas de controle de qualidade sobre esses diversos tipos de dados. Por exemplo, você pode expandir seu banco de dados de documentos criando descrições textuais de imagens, vídeos ou conteúdo de áudio. Você também pode aprimorar a tabela de metadados identificando propriedades por meio de classificação ou detecção de objetos em elementos nesses formatos. Depois que esses dados extraídos são indexados no armazenamento de metadados ou no índice de pesquisa semântica de documentos, a arquitetura geral do sistema proposto permanece amplamente consistente.
Conclusão
Neste post, mostramos como o uso de LLMs com o padrão de design RAG é necessário para construir um assistente de IA específico de domínio, mas é insuficiente para atingir o nível de confiabilidade necessário para gerar valor de negócio. Por causa disso, propusemos estender o popular padrão de design RAG com os conceitos de agentes e ferramentas, onde a flexibilidade das ferramentas nos permite usar tanto técnicas tradicionais de PNL quanto recursos modernos de LLM para permitir que um assistente de IA tenha mais opções para buscar informações e ajudar. usuários na solução eficiente de problemas de negócios.
A solução demonstra o processo de design para um assistente LLM capaz de responder a vários tipos de perguntas de recuperação, raciocínio analítico e raciocínio em várias etapas em toda a sua base de conhecimento. Também destacamos a importância de pensar retrospectivamente a partir dos tipos de perguntas e tarefas nas quais se espera que seu assistente LLM ajude os usuários. Neste caso, a jornada de design nos levou a uma arquitetura com três componentes: pesquisa semântica, extração de metadados e consulta SQL, e agente e ferramentas LLM, que consideramos genéricas e flexíveis o suficiente para vários casos de uso. Acreditamos também que, ao se inspirar nesta solução e se aprofundar nas necessidades dos seus usuários, você será capaz de ampliar ainda mais essa solução em direção ao que funciona melhor para você.
Sobre os autores
Mohamed Ali Jamaoui é arquiteto sênior de prototipagem de ML com 10 anos de experiência em aprendizado de máquina de produção. Ele gosta de resolver problemas de negócios com aprendizado de máquina e engenharia de software e de ajudar os clientes a extrair valor de negócios com ML. Como parte da AWS EMEA Prototyping and Cloud Engineering, ele ajuda os clientes a criar soluções de negócios que aproveitam inovações em MLOPs, PNL, CV e LLMs.
Giuseppe Hannen é consultor associado da ProServe. Giuseppe aplica suas habilidades analíticas em combinação com IA&ML para desenvolver soluções claras e eficazes para seus clientes. Ele adora encontrar soluções simples para problemas complicados, especialmente aqueles que envolvem os mais recentes desenvolvimentos tecnológicos e de pesquisa.
Laurens dez Cate é Cientista de Dados Sênior. Laurens trabalha com clientes empresariais na região EMEA, ajudando-os a acelerar seus resultados de negócios usando tecnologias de IA/ML da AWS. Ele é especialista em soluções de PNL e se concentra no setor de Supply Chain e Logística. Nas horas vagas gosta de leitura e arte.
Irina Radu é Prototyping Engagement Manager, parte da AWS EMEA Prototyping and Cloud Engineering. Ela está ajudando os clientes a aproveitar ao máximo as tecnologias mais recentes, inovar com mais rapidez e pensar maior.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/boosting-rag-based-intelligent-document-assistants-using-entity-extraction-sql-querying-and-agents-with-amazon-bedrock/
- :tem
- :é
- :não
- :onde
- $UP
- 1
- 10
- 100
- 2022
- 3d
- 7
- a
- habilidade
- Capaz
- Sobre
- acelerar
- Acesso
- acessível
- realizado
- Conta
- precisão
- preciso
- exatamente
- Alcançar
- alcançar
- em
- Aja
- atuação
- Açao Social
- ações
- adaptar
- adicionar
- Adicionalmente
- Adiciona
- adotado
- Depois de
- novamente
- contra
- Agente
- agentes
- AI
- Assistente de IA
- AI / ML
- algoritmo
- Alinha
- Todos os Produtos
- permite
- ao lado de
- tb
- Amazon
- Amazon Sage Maker
- amazontext
- Amazon Web Services
- entre
- an
- análise
- Análises
- analisar
- e
- Outro
- responder
- respostas
- Antrópico
- qualquer
- api
- APIs
- aplica
- Aplicar
- abordagem
- apropriado
- aproximado
- arquitetura
- SOMOS
- argumentos
- por aí
- Arte
- AS
- perguntar
- auxiliar
- Assistente
- assistentes
- Jurídico
- associado
- assumir
- At
- Ataques
- Tentativas
- auditivo
- aumentar
- aumentado
- aurora
- automaticamente
- Autônomo
- disponível
- AWS
- em caminho duplo
- Backend
- Equilíbrio
- base
- baseado
- basic
- BE
- Porque
- sido
- antes
- comportamento
- atrás
- Acreditar
- Benefícios
- MELHOR
- entre
- Pós
- maior
- impulsionar
- ambos
- construir
- Prédio
- negócio
- negócios
- mas a
- by
- Esconderijo
- CAD
- chamada
- chamado
- chamada
- chamadas
- CAN
- candidato
- capacidades
- capaz
- transportar
- casas
- casos
- cadeia
- chatbot
- Cheques
- escolha
- escolhas
- Escolha
- classe
- classificação
- remover filtragem
- Na nuvem
- COERENTE
- colaboração
- Coluna
- colunas
- combinação
- combina
- como
- comum
- Empresas
- Empresa
- comparar
- comparando
- comparações
- Complemento
- completar
- integrações
- complicado
- componente
- componentes
- composta
- compreensivo
- Computar
- conceitos
- concreto
- condição
- Conduzir
- Contato
- Considerar
- Considerações
- consistente
- consolidar
- construir
- consultor
- não contenho
- contida
- contém
- conteúdo
- contexto
- Conversa
- conversação
- IA conversacional
- conversas
- converter
- convertido
- núcleo
- correta
- corretamente
- Correspondente
- Custo
- custos
- poderia
- acoplado
- crio
- cria
- Criar
- Atual
- personalizadas
- cliente
- Suporte ao cliente
- Clientes
- dados,
- acesso a dados
- cientista de dados
- banco de dados
- decidido
- Decidindo
- profundo
- mais profunda
- definido
- Define
- mergulhar
- Demanda
- demonstração
- demonstrar
- demonstraram
- demonstra
- dependências
- implantar
- descreve
- descrito
- descrevendo
- descrição
- Design
- Padrões de design
- processo de design
- concepção
- detalhado
- detalhes
- descobrir
- Detecção
- desenvolver
- Desenvolvimento
- desenvolvimentos
- digital
- divulgação
- discutir
- discutido
- discussões
- distância
- mergulho
- diferente
- mergulho
- do
- documento
- documentação
- INSTITUCIONAIS
- parece
- Não faz
- domínio
- domínios
- feito
- down
- motorista
- dois
- durante
- dinamicamente
- cada
- Mais cedo
- Cedo
- facilidade
- facilidade de utilização
- facilmente
- Eficaz
- efetivamente
- eficiência
- eficiente
- eficientemente
- ou
- elementos
- embutindo
- EMEA
- emergiu
- empregando
- permitir
- permite
- permitindo
- final
- COMPROMETIMENTO
- Motor
- Engenharia
- Motores
- aumentar
- Melhora
- suficiente
- enriquecedor
- Empreendimento
- entidades
- entidade
- Meio Ambiente
- erros
- especialmente
- essencial
- estabelecido
- Mesmo
- evolui
- examinar
- exemplo
- exemplos
- existência
- existente
- Expandir
- esperado
- vasta experiência
- explicado
- explicando
- Explica
- explorar
- Explorado
- exposto
- estender
- estendendo
- extensão
- extra
- extrato
- Extração
- Extractos
- enfrentou
- falha
- Perguntas frequentes
- longe
- mais rápido
- Característica
- Funcionalidades
- retornos
- poucos
- campo
- Envie o
- Arquivos
- filtragem
- filtros
- final
- Finalmente
- financeiro
- Encontre
- Primeiro nome
- Flexibilidade
- flexível
- fluxo
- Foco
- focando
- seguinte
- segue
- Escolha
- formulário
- formato
- formado
- formas
- Quadro
- Gratuito
- da
- frente
- Front-end
- cumprimento
- cheio
- totalmente
- função
- mais distante
- porta de entrada
- reunir
- Geral
- gerar
- gerado
- gerando
- geração
- generativo
- IA generativa
- ter
- obtendo
- GitHub
- dado
- meta
- Bom estado, com sinais de uso
- gradualmente
- conceder
- Grupo
- Do grupo
- tinha
- Ter
- ter
- he
- ajudar
- ajuda
- ajuda
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Alta
- mais
- Destaque
- sua
- história
- Esperançosamente
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTML
- HTTPS
- humano
- idéias
- identifica
- identificar
- identificar
- Identidade
- if
- imagem
- imagens
- fotografia
- executar
- implementação
- implementado
- implementação
- importância
- importante
- melhorar
- melhorado
- melhorias
- melhorar
- in
- inclui
- índice
- indexado
- indústria
- INFORMAÇÕES
- extração de informação
- do estado inicial,
- inovar
- e inovações
- entrada
- inputs
- Inspiração
- inspirar
- inspirado
- instalar
- instância
- em vez disso
- integrar
- Inteligente
- interagir
- interno
- para dentro
- introduzir
- introduzido
- Investir
- investigação
- investimento
- envolver
- IT
- ESTÁ
- se
- Trabalho
- viagem
- jpg
- json
- Guarda
- Chave
- chaves
- Conhecimento
- conhecido
- língua
- grande
- largamente
- Sobrenome
- mais tarde
- mais recente
- lança
- camada
- aprendizagem
- mínimo
- levou
- Comprimento
- Nível
- Alavancagem
- como
- LIMITE
- limitações
- LINK
- Lista
- LLM
- cargas
- logística
- indústria de logística
- longo
- ama
- máquina
- aprendizado de máquina
- moldadas
- a Principal
- a manter
- Manter
- fazer
- gerenciados
- Gerente
- muitos
- Match
- correspondente
- maduro
- Posso..
- me
- significado
- medidas
- Conheça
- menções
- apenas
- malha
- mensagem
- metadados
- método
- métodos
- métrico
- Métrica
- mínimo
- enganosa
- desaparecido
- ML
- MLOps
- modelo
- modelos
- moderação
- EQUIPAMENTOS
- Módulo
- mais
- Além disso
- a maioria
- múltiplo
- devo
- nomes
- natural
- Processamento de linguagem natural
- necessário
- você merece...
- necessário
- Cria
- vizinhos
- líquido
- receita liquida
- nunca
- Novo
- Próximo
- PNL
- nenhum
- caderno
- Noção
- objeto
- Detecção de Objetos
- of
- oferecido
- oferecendo treinamento para distância
- modo offline
- frequentemente
- on
- ONE
- contínuo
- só
- aberto
- open source
- Operações
- Otimize
- Opções
- or
- ordem
- original
- Outros
- Outros
- A Nossa
- Fora
- resultados
- esboço
- delineado
- saída
- outputs
- Acima de
- global
- Superar
- próprio
- pacote
- pandas
- parte
- peças
- padrão
- padrões
- Realizar
- atuação
- permissão
- perspectiva
- Farmacêutica
- peças
- oleoduto
- Avião
- planejamento
- platão
- Inteligência de Dados Platão
- PlatãoData
- plausível
- ponto
- Privacidade
- Popular
- popularidade
- populosa
- possível
- possivelmente
- Publique
- Postgresql
- potencial
- potencialmente
- alimentado
- poderoso
- prática
- Precisão
- Preparar
- presente
- apresentado
- presentes
- preservando
- evitar
- impede
- anteriormente
- privilégio
- Solução de problemas
- problemas
- processo
- em processamento
- produz
- produtor
- Produto
- Produção
- promessa
- promissor
- Propriedades
- oferece
- proposto
- propõe
- prototipagem
- comprovado
- fornecer
- fornece
- público
- Python
- Dúvidas
- consultas
- questão
- Frequentes
- Links
- rapidamente
- Posição
- rápido
- Cru
- alcançar
- alcançado
- Reagir
- Leitura
- pronto
- reais
- mundo real
- em tempo real
- razão
- razoável
- recebido
- receber
- recentemente
- recentemente
- reconhecer
- recomendar
- Recomendação
- reduzir
- referir
- região
- relevante
- confiabilidade
- depender
- permanece
- Relatórios
- repositório
- representar
- solicitar
- requerer
- requeridos
- requerimento
- exige
- pesquisa
- resposta
- respostas
- DESCANSO
- resultar
- Resultados
- retorno
- receita
- receitas
- rever
- certo
- riscos
- Tipo
- regras
- Execute
- corrida
- é executado
- sábio
- mesmo
- AMPLIAR
- digitalização
- exploração
- Cientista
- escrita
- Pesquisar
- motor de busca
- Segundo
- Seção
- seções
- segurança
- Medidas de Segurança
- Vejo
- Buscar
- visto
- selecionando
- doadores,
- semântica
- envia
- senior
- enviei
- Seqüência
- serviço
- Serviços
- ela
- rede de apoio social
- mostrar
- mostrou
- mostrando
- semelhante
- simples
- simplificada
- simplificar
- simultaneamente
- desde
- solteiro
- Habilidades
- So
- até aqui
- Software
- Engenharia de software
- unicamente
- solução
- Soluções
- Resolvendo
- alguns
- às vezes
- fonte
- Fontes
- Espaço
- especializado
- especializada
- específico
- velocidade
- splits
- pilha
- Estágio
- começo
- Comece
- dirigir
- Passo
- Passos
- loja
- armazenadas
- franco
- estratégias
- Estratégia
- greve
- lutar
- estrutura
- estruturada
- estudo
- bem sucedido
- tal
- sugerir
- adequado
- resumir
- supply
- cadeia de suprimentos
- ajuda
- suportes
- certo
- sintaxe
- .
- mesa
- adaptados
- Tire
- toma
- Tarefa
- tarefas
- tecnologia
- técnicas
- tecnológica
- Tecnologias
- dizer
- dez
- texto
- textual
- obrigado
- que
- A
- as informações
- deles
- Eles
- então
- Lá.
- assim
- assim sendo
- Este
- deles
- think
- Pensando
- isto
- aqueles
- três
- Através da
- tempo
- titã
- para
- hoje
- ferramenta
- ferramentas
- topo
- 5 topo
- para
- para
- Traçar
- tradicional
- Training
- Transformar
- tratamento
- verdadeiro
- digno de confiança
- dois
- tipo
- tipos
- tipicamente
- ui
- subjacente
- compreender
- até
- atualização
- sobre
- us
- usar
- usava
- Utilizador
- Experiência do Usuário
- usuários
- usos
- utilização
- VALIDAR
- valor
- Valores
- variedade
- vário
- versátil
- Vídeo
- VÍDEOS
- vulnerabilidades
- anda
- Caminho..
- we
- web
- serviços web
- BEM
- foram
- O Quê
- quando
- enquanto que
- se
- qual
- enquanto
- porque
- Wikipedia
- precisarão
- de
- dentro
- sem
- trabalho
- seria
- escrita
- X
- ano
- anos
- Vocês
- investimentos
- zefirnet