

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como funcionam as bases de conhecimento do Amazon Bedrock
<a name="kb-how-it-works"></a>

O Amazon Bedrock Knowledge Bases ajuda você a aproveitar as vantagens da geração aumentada via recuperação (RAG), uma técnica conhecida que envolve extrair informações de um datastore para aumentar as respostas geradas por grandes modelos de linguagem (LLMs). Quando você configura uma base de conhecimento com fonte de dados, a aplicação pode consultar a base de conhecimento para exibir informações e responder à consulta com citações diretas das fontes ou com respostas naturais geradas com base nos resultados da consulta.

Com as Bases de Conhecimento do Amazon Bedrock, é possível criar aplicações enriquecidas pelo contexto recebido da consulta a uma base de conhecimento. Isso acelera o tempo de lançamento no mercado ao evitar o trabalho pesado da criação de pipelines, fornecendo a você uma solução de RAG pronta para usar a fim de reduzir o tempo de compilação da aplicação. Adicionar uma base de conhecimento também aumenta a relação custo-benefício, eliminando a necessidade de treinar continuamente o modelo para poder aproveitar os dados privados.

Os diagramas a seguir ilustram esquematicamente como a RAG é realizada. A base de conhecimento simplifica a configuração e a implementação da RAG, automatizando várias etapas desse processo.

**Pré-processamento de dados não estruturados**

Para permitir a recuperação eficaz de dados privados estruturados (dados que não existem em um armazenamento de dados estruturados), uma prática comum é converter os dados em texto e dividi-los em partes gerenciáveis. As partes ou fragmentos são convertidos em incorporações e gravados em um índice de vetores, mantendo uma correção com o documento original. Essas incorporações são usadas para determinar a semelhança semântica entre as consultas e o texto das fontes de dados. A imagem a seguir ilustra o pré-processamento de dados para o banco de dados de vetores.

![\[Pré-processar de dados para geração aumentada via recuperação\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/images/kb/rag-preprocess.png)


As incorporações de vetores são uma série de números que representam cada fragmento de texto. Um modelo converte cada fragmento de texto em uma série de números, conhecidos como vetores, para que os textos possam ser comparados matematicamente. Esses vetores podem ser números de ponto flutuante (float32) ou números binários. A maioria dos modelos de incorporação compatíveis com o Amazon Bedrock usa vetores de ponto flutuante por padrão. No entanto, alguns modelos oferecem suporte a vetores binários. Se você escolher um modelo de incorporação de vetores binários, também deverá escolher um modelo e um armazenamento de vetores que ofereça suporte a vetores binários.

Os vetores binários, que usam apenas 1 bit por dimensão, não têm um armazenamento tão caro quanto os vetores de ponto flutuante (float32), que usam 32 bits por dimensão. No entanto, os vetores binários não são tão precisos quanto os vetores de ponto flutuante com relação à representação do texto.

O seguinte exemplo mostra um trecho de texto em três representações:


****  

| Representação | Valor | 
| --- | --- | 
| Texto | “O Amazon Bedrock usa modelos de base de alto desempenho das principais empresas de IA e da Amazon.” | 
| Vetor de ponto flutuante | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| Vetor binário | [1,1,0,0,0, ...] | 

**Execução do Runtime**

Em tempo de execução, um modelo de incorporação é usado para converter a consulta do usuário em um vetor. O índice de vetores é consultado para encontrar partes que sejam semanticamente semelhantes à consulta do usuário, comparando os vetores do documento com o vetor de consulta do usuário. Na etapa final, o prompt do usuário é aumentado com o contexto adicional dos fragmentos que são recuperados do índice de vetores. O prompt e o contexto adicional são enviados ao modelo para gerar uma resposta para o usuário. A imagem a seguir ilustra como a RAG opera em tempo de execução para aumentar as respostas às consultas dos usuários.

![\[Geração aumentada via recuperação em tempo de execução\]](http://docs.aws.amazon.com/pt_br/bedrock/latest/userguide/images/kb/rag-runtime.png)


Para saber mais sobre como transformar seus dados em uma base de conhecimento, como consultar a base de conhecimento depois de configurá-la e personalizações que é possível aplicar à fonte de dados durante a ingestão, consulte os seguintes tópicos:

**Topics**
+ [Transformar dados em uma base de conhecimento](kb-how-data.md)
+ [Recuperar informações de fontes de dados usando as Bases de Conhecimento do Amazon Bedrock](kb-how-retrieval.md)
+ [Personalizar a base de conhecimento](kb-how-customization.md)

# Transformar dados em uma base de conhecimento
<a name="kb-how-data"></a>

Para criar uma base de conhecimento, conecte-se a uma fonte de dados compatível que você deseja que a base de conhecimento possa acessar. A base de conhecimento poderá responder às consultas dos usuários ou gerar respostas de acordo com os dados recuperados.

 As Bases de Conhecimento do Amazon Bedrock permitem usar uma variedade de documentos, como texto, imagens ou documentos multimodais que contêm tabelas, gráficos, diagramas e outras imagens. Os dados *multimodais* se referem a uma combinação de texto e dados visuais. Exemplos de tipos de arquivo que contêm dados não estruturados são texto, markdown, HTML e. PDFs

As seções abaixo descrevem os tipos de dados que as Bases de Conhecimento do Amazon Bedrock aceitam e os serviços aos quais você pode conectar a base de conhecimento para cada tipo de dados:

## Dados não estruturados
<a name="kb-how-unstructured"></a>

Dados não estruturados se referem a dados que não são forçados a seguir uma estrutura predefinida. As Bases de Conhecimento do Amazon Bedrock permitem a conexão com os seguintes serviços para adicionar dados não estruturados à base de conhecimento:
+ Amazon S3
+ Confluence (versão prévia)
+ Microsoft SharePoint (versão prévia)
+ Salesforce (versão prévia)
+ Web Crawler (versão prévia)
+ Fonte de dados personalizada (permite a ingestão direta de dados em bases de conhecimento sem precisar de sincronização)

Uma fonte de dados contém documentos em um formato bruto. Para otimizar o processo de consulta, uma base de conhecimento converte os dados brutos em *incorporações de vetores*, uma representação numérica dos dados, para quantificar a semelhança com consultas que também são convertidas em incorporações de vetores. As Bases de Conhecimento do Amazon Bedrock usam os seguintes recursos no processo de conversão da fonte de dados:
+ Modelo de incorporação: um modelo de base que converte os dados em incorporações de vetores. Para dados multimodais contendo texto e imagens, você pode usar modelos de incorporação multimodais, como Amazon Titan Multimodal Embeddings G1 ou Cohere Embed v3.
+ Armazenamento de vetores: um serviço que armazena a representação de vetor dos seus dados. Somente os seguintes tipos de armazenamento de vetores são aceitos:
  + Amazon sem OpenSearch servidor
  + Amazon Neptune
  + Amazon Aurora (RDS)
  + Pinecone
  + Redis Enterprise Cloud
  + Atlas do MongoDB

O processo de conversão dos dados em incorporações de vetores é chamado de *ingestão*. O processo de ingestão que transforma os dados em uma base de conhecimento envolve as seguintes etapas:

**Ingestão**

1. Os dados são analisados pelo analisador escolhido. Para ter mais informações sobre análise, consulte [Opções de análise para a fonte de dados](kb-advanced-parsing.md).

1. Cada documento na fonte de dados é dividido fragmentos, que são subdivisões dos dados que podem ser definidas pelo número de tokens e outros parâmetros. Para ter mais informações sobre fragmentação, consulte [Como a fragmentação de conteúdo funciona para bases de conhecimento](kb-chunking.md).

1. O modelo de incorporação escolhido converte os dados em incorporações de vetores. Para conteúdo multimodal, as imagens são incorporadas como vetores visuais, enquanto o texto é incorporado como vetores de texto, permitindo a pesquisa em ambas as modalidades.

1. As incorporações de vetores são gravadas em um índice de vetores no armazenamento de vetores escolhido.

Depois que o processo de ingestão for concluído, a base de conhecimento estará pronta para ser consultada. Para ter informações sobre como consultar e recuperar informações da base de conhecimento, consulte [Recuperar informações de fontes de dados usando as Bases de Conhecimento do Amazon Bedrock](kb-how-retrieval.md).

Se você fizer alterações em uma fonte de dados, deverá sincronizar as alterações para incluir adições, modificações e exclusões na base de conhecimento. Algumas fontes de dados permitem a ingestão ou exclusão direta de arquivos na base de conhecimento, eliminando a necessidade de tratar a modificação e a ingestão da fonte de dados como etapas separadas e a necessidade de sempre realizar sincronizações completas. Para saber como ingerir documentos diretamente na base de conhecimento e nas fontes de dados que a atendem, consulte [Ingerir alterações diretamente em uma base de conhecimento](kb-direct-ingestion.md).

As Bases de Conhecimento do Amazon Bedrock oferecem várias opções para personalizar a forma como os dados são ingeridos. Para ter mais informações sobre como personalizar esse processo, consulte [Personalizar a base de conhecimento](kb-how-customization.md).

## Dados estruturados
<a name="kb-how-structured"></a>

Dados estruturados se referem a dados tabulares em um formato predefinido pelo datastore em que eles residem. As Bases de Conhecimento do Amazon Bedrock se conectam a armazenamentos de dados estruturados compatíveis por meio do mecanismo de consulta do Amazon Redshift. Elas oferecem um mecanismo totalmente gerenciado que analisa padrões de consulta, histórico de consultas e metadados de esquema para converter consultas em linguagem natural em consultas SQL. Essas consultas convertidas são então usadas para recuperar informações relevantes de fontes de dados compatíveis.

As Bases de Conhecimento do Amazon Bedrock permitem a conexão com os seguintes serviços para adicionar armazenamentos de dados estruturados à base de conhecimento:
+ banco de dados de origem
+ AWS Glue Data Catalog(AWS Lake Formation)

Se você conectar a base de conhecimento a um armazenamento de dados estruturados, não precisará converter os dados em incorporações de vetores. Em vez disso, as Bases de Conhecimento do Amazon Bedrock podem consultar diretamente o armazenamento de dados estruturados. Durante a consulta, as Bases de Conhecimento do Amazon Bedrock podem converter consultas de usuários em consultas SQL para recuperar dados relevantes à consulta do usuário e gerar respostas mais precisas. Também é possível gerar consultas SQL sem recuperar dados e usá-las em outros fluxos de trabalho.

Como exemplo, um repositório de banco de dados contém a seguinte tabela com informações sobre clientes e compras:


****  

| ID da do cliente | Quantidade comprada em 2020 | Quantidade comprada em 2021 | Quantidade comprada em 2022 | Valor total comprado até o momento | 
| --- | --- | --- | --- | --- | 
| 1 | 200 | 300 | 500 | 1000 | 
| 2 | 150 | 100 | 120 | 370 | 
| 3 | 300 | 300 | 300 | 900 | 
| 4 | 720 | 180 | 100 | 900 | 
| 5 | 500 | 400 | 100 | 1000 | 
| 6 | 900 | 800 | 1000 | 2700 | 
| 7 | 470 | 420 | 400 | 1290 | 
| 8 | 250 | 280 | 250 | 780 | 
| 9 | 620 | 830 | 740 | 2190 | 
| 10 | 300 | 200 | 300 | 800 | 

Se uma consulta do usuário disser “forneça um resumo dos cinco clientes que mais gastam”, a base de conhecimento poderá fazer o seguinte:
+ Converter a consulta em uma consulta SQL.
+ Exibir um trecho da tabela que contém o seguinte:
  + Colunas relevantes da tabela “ID do cliente” e “Valor total de compra até o momento”.
  + Linhas da tabela contendo o valor total da compra para os dez clientes que mais gastam.
+ Gerar uma resposta que indique quais clientes foram os cinco clientes que mais gastaram e quanto eles compraram.

Outros exemplos de consulta para as quais uma base de conhecimento pode gerar um trecho de tabela incluem:
+ “Os cinco principais clientes por gasto em 2020”;
+ “O principal cliente por valor de compra em 2020”;
+ “Os cinco principais clientes por valor de compra de 2020 a 2022”;
+ “Os cinco principais clientes com gastos mais altos em 2022”;
+ “Os clientes com valor total de compra inferior a \$1 10”;
+ “Os cinco clientes com gastos mais baixos”.

Quanto mais específica ou detalhada for uma consulta, mais a base de conhecimento poderá restringir as informações exatas a serem exibidas. Por exemplo, em vez da consulta “Os dez principais clientes por gasto em 2020”, uma consulta mais específica é “Encontre os dez valores totais de compra mais altos até o momento para clientes em 2020”. A consulta específica se refere ao nome da coluna “Valor total de compra até o momento” na tabela do banco de dados de gastos dos clientes e também indica que os dados devem ser classificados por “mais alto”.

# Recuperar informações de fontes de dados usando as Bases de Conhecimento do Amazon Bedrock
<a name="kb-how-retrieval"></a>

Depois que você configurar uma base de conhecimento, poderá configurar sua aplicação para consultar as fontes de dados contidas nela. Para consultar uma base de conhecimento, é possível utilizar as seguintes operações de API:
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html): recupera os fragmentos ou imagens de origem dos seus dados que são mais relevantes para a consulta e os exibe na resposta como uma matriz.
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html): une `Retrieve` à operação [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) no Amazon Bedrock para recuperar os fragmentos de origem dos seus dados que são mais relevantes para a consulta e gerar uma resposta em linguagem natural. Inclui citações de fragmentos de fontes específicas dos dados. Se a fonte de dados incluir elementos visuais, o modelo utilizará os insights dessas imagens ao gerar uma resposta de texto e citará a fonte referente às imagens.
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html): converte consultas de usuários em linguagem natural em consultas que estão em um formato adequado ao armazenamento de dados estruturados.

A operação `RetrieveAndGenerate` é uma ação combinada que usa subjacentemente `GenerateQuery` (se a base de conhecimento estiver conectada a um armazenamento de dados estruturados), `Retrieve` e `InvokeModel` para realizar todo o processo de RAG. Como as Bases de Conhecimento do Amazon Bedrock também oferecem acesso à operação `Retrieve`, você tem a flexibilidade de separar as etapas na RAG e personalizá-las para seu caso de uso específico.

Também é possível usar um [modelo de reclassificação](rerank.md) ao usar `Retrieve` ou `RetrieveAndGenerate` para reclassificar a relevância de documentos recuperados durante a consulta.

Para saber como usar essas operações de API ao consultar uma base de conhecimento, consulte [Testar a base de conhecimento com consultas e respostas](knowledge-base-test.md).

# Personalizar a base de conhecimento
<a name="kb-how-customization"></a>

As Bases de Conhecimento do Amazon Bedrock oferecem opções para personalizar como as fontes de dados são processadas na base de conhecimento, oferecendo flexibilidade quanto à forma como seus dados são armazenados, analisados e exibidos aos usuários finais. Selecione um dos seguintes tópicos para saber mais sobre as opções de personalização que você pode considerar ao configurar a base de conhecimento:

**Topics**
+ [Como a fragmentação de conteúdo funciona para bases de conhecimento](kb-chunking.md)
+ [Opções de análise para a fonte de dados](kb-advanced-parsing.md)
+ [Usar uma função do Lambda de transformação personalizada para definir como os dados são ingeridos](kb-custom-transformation.md)
+ [Incluir metadados em uma fonte de dados para melhorar a consulta à base de conhecimento](kb-metadata.md)

# Como a fragmentação de conteúdo funciona para bases de conhecimento
<a name="kb-chunking"></a>

Ao ingerir dados, o Amazon Bedrock primeiro divide os documentos ou o conteúdo em partes manejáveis para uma recuperação de dados eficiente. Depois, os fragmentos são convertidos em incorporações e gravados em um índice de vetores (representação vetorial dos dados), ao mesmo tempo em que mantêm uma correlação com o documento original. As incorporações de vetores permitem que os textos sejam comparados quantitativamente.

**Topics**
+ [Fragmentação padrão](#kb-standard-chunking)
+ [Fragmentação hierárquica](#kb-hiearchical-chunking)
+ [Fragmentação semântica](#kb-semantic-chunking)
+ [Fragmentação de conteúdo multimodal](#kb-multimodal-chunking)

## Fragmentação padrão
<a name="kb-standard-chunking"></a>

O Amazon Bedrock é compatível com as seguintes abordagens padrão de fragmentação:

**nota**  
As estratégias de fragmentação de texto se aplicam somente a documentos de texto. Para conteúdo multimodal (áudio, vídeo, imagens), a fragmentação ocorre no nível do modelo de incorporação, não por meio dessas estratégias baseadas em texto.
+ Fragmentação de tamanho fixo: você pode configurar o tamanho do fragmento desejado especificando o número de tokens por fragmento e uma porcentagem de sobreposição, oferecendo flexibilidade para se alinhar aos requisitos específicos. É possível definir o número máximo de tokens que não devem exceder um fragmento e a porcentagem de sobreposição entre fragmentos consecutivos.
**nota**  
Para conteúdo analisado (como conteúdo usando analisadores avançados ou convertido de HTML), as Bases de Conhecimento Amazon Bedrock podem fragmentar o conteúdo para otimizar e obter melhores resultados. O fragmento respeita os limites lógicos do documento (como páginas ou seções) e não mescla o conteúdo entre esses limites, mesmo quando o aumento do tamanho máximo do token permitiria fragmentos maiores.
+ Fragmentação padrão: divide o conteúdo em fragmentos de texto de aproximadamente 300 tokens. O processo de fragmentação respeita os limites das frases, garantindo que as frases completas sejam preservadas em cada fragmento.

Você também pode optar por nenhuma fragmentação para os documentos. Cada documento é tratado como um único fragmento de texto. Convém pré-processar os documentos, dividindo-os em arquivos separados antes de optar por nenhuma fragmentação como abordagem/estratégia de fragmentação. Se você optar por não agrupar seus documentos, não poderá visualizar o número da página na citação ou filtrar pelo campo/atributo de metadados *x-amz-bedrock-kb- document-page-number*.

## Fragmentação hierárquica
<a name="kb-hiearchical-chunking"></a>

A fragmentação hierárquica envolve a organização das informações em estruturas aninhadas de fragmentos pai e filho. Ao criar uma fonte de dados, você pode definir o tamanho do fragmento pai, o tamanho do fragmento filho e o número de tokens de sobreposição entre cada fragmento. Durante a recuperação, o sistema recupera inicialmente fragmentos filho, mas os substitui por fragmentos pai maiores para dar ao modelo um contexto mais abrangente.

Pequenas incorporações de texto são mais precisas, mas a recuperação visa um contexto abrangente. Um sistema de fragmentação hierárquica equilibra essas necessidades substituindo os fragmentos filho recuperados pelos fragmentos pai quando indicado.

**nota**  
Como os fragmentos secundários são substituídos pelos fragmentos principais durante a recuperação, o número de resultados exibidos pode ser menor que o valor solicitado.
A fragmentação hierárquica não é recomendada ao usar o bucket vetorial do S3 como seu armazenamento de vetores. Ao usar um grande número de tokens para fragmentação (mais de 8000 tokens combinados), você pode se deparar com limitações de tamanho de metadados.

Para fragmentação hierárquica, as bases de conhecimento do Amazon Bedrock permitem especificar dois níveis ou a seguinte profundidade para fragmentação:
+ Pai: você define o tamanho máximo do token do fragmento pai.
+ Filho: você define o tamanho máximo do token do fragmento filho.

Você também define os tokens de sobreposição entre os fragmentos. Esse é o número absoluto de tokens de sobreposição entre fragmentos pai consecutivos e fragmentos filho consecutivos.

## Fragmentação semântica
<a name="kb-semantic-chunking"></a>

Fragmentação semântica é uma técnica de processamento de linguagem natural que divide o texto em fragmentos significativos para melhorar a compreensão e a recuperação de informações. Ela deve aumentar a precisão da recuperação concentrando-se no conteúdo semântico, e não apenas na estrutura sintática. Fazendo isso, ela pode facilitar uma extração e manipulação mais precisas de informações relevantes.

Ao configurar a fragmentação semântica, você tem a opção de especificar os hiperparâmetros a seguir.
+ Máximo de tokens: o número máximo de fichas que devem ser incluídos em um único fragmento, respeitando os limites de frase.
+ Tamanho do buffer: para uma determinada frase, o tamanho do buffer define o número de frases próximas a serem adicionadas para criação de incorporações. Por exemplo, um tamanho de buffer 1 resulta em 3 frases (atual, anterior e próxima) a serem combinadas e incorporadas. Esse parâmetro pode influenciar a quantidade de texto examinada em conjunto para determinar os limites de cada fragmento, afetando a granularidade e a coerência dos fragmentos resultantes. Um tamanho de buffer maior pode registrar mais contexto, embora também possa introduzir ruído, e um tamanho de buffer menor pode perder um contexto importante, mas garante uma fragmentação mais precisa.
+ Limite do percentil do ponto de interrupção: o limite do percentil da frase para traçar pontos de interrupção entre as frases. distance/dissimilarity Um limite mais alto exige que as frases sejam mais distinguíveis para serem divididas em partes diferentes. Um limite maior acarreta menos fragmentos e, normalmente, um tamanho de fragmento médio maior.
**nota**  
Existem custos adicionais para o uso da fragmentação semântica por causa do uso de um modelo básico. O custo depende da quantidade de dados que você tem. Consulte [Preços do Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/) para obter informações sobre o custo dos modelos de base.

## Fragmentação de conteúdo multimodal
<a name="kb-multimodal-chunking"></a>

Para conteúdo multimodal (áudio, vídeo, imagens), o comportamento de fragmentação difere dos documentos de texto:
+ **Embutimentos multimodais Nova: a fragmentação ocorre no nível do modelo de incorporação**. Você pode configurar a duração do bloco de áudio e vídeo de 1 a 30 segundos (padrão: 5 segundos). Para arquivos de vídeo, somente a duração do fragmento de vídeo se aplica, mesmo que o vídeo contenha áudio. A duração do fragmento de áudio só se aplica a arquivos de áudio independentes.
+ **Analisador Bedrock Data Automation (BDA):** o conteúdo é primeiro convertido em texto (transcrições e resumos de cenas) e, em seguida, estratégias padrão de fragmentação de texto são aplicadas ao texto convertido.

**nota**  
Ao usar incorporações multimodais Nova, as estratégias de fragmentação de texto configuradas em sua base de conhecimento afetam apenas documentos de texto em sua fonte de dados, não arquivos de áudio, vídeo ou imagem.

# Opções de análise para a fonte de dados
<a name="kb-advanced-parsing"></a>

A análise se refere à compreensão e extração de conteúdo de dados brutos. As Bases de Conhecimento do Amazon Bedrock oferecem as seguintes opções para analisar a fonte de dados durante a ingestão:
+ **Analisador padrão do Amazon Bedrock**: analisa somente texto em arquivos de texto, como arquivos .txt, .md, .html, .doc/.docx, .xls/.xlsx e.pdf. Não há cobranças para usar esse analisador.
**nota**  
Como o analisador padrão gera apenas texto, recomendamos usar a Automação de Dados do Amazon Bedrock ou um modelo de base como analisador em vez do analisador padrão se seus documentos incluírem figuras, gráficos, tabelas ou imagens. A Automação de Dados do Amazon Bedrock e os modelos de base podem extrair esses elementos dos documentos e exibi-los como saída.
+ As Bases de Conhecimento do Amazon Bedrock oferece os seguintes analisadores para analisar dados multimodais, como figuras, gráficos e tabelas em arquivos .pdf, além de arquivos de imagem .jpeg e .png. Esses analisadores também podem extrair figuras, gráficos, tabelas e imagens e armazená-los como arquivos em um destino do S3 que você especifica durante a criação da base de conhecimento. Durante a recuperação da base de conhecimento, esses arquivos podem ser exibidos na resposta ou na citação da fonte utilizada.
  + **Automação de Dados do Amazon Bedrock**: um serviço totalmente gerenciado que processa dados multimodais com eficiência, sem a necessidade de fornecer nenhum prompt adicional. O custo desse analisador depende do número de páginas no documento ou do número de imagens a serem processadas. Para ter mais informações sobre esse serviço, consulte [Automação de Dados do Amazon Bedrock](bda.md).
  + **Modelos de base**: processam dados multimodais usando um modelo de base. Esse analisador fornece a opção de personalizar o prompt padrão usado para extração de dados. O custo desse analisador depende do número de tokens de entrada e saída processados pelo modelo de base. Para ver uma lista de modelos em que é possível usar a análise de dados das Bases de Conhecimento do Amazon Bedrock, consulte [Modelos e regiões compatíveis](knowledge-base-supported.md#knowledge-base-supported-parsing).

**Importante**  
Se você escolher a Automação de Dados do Amazon Bedrock ou modelos de base como analisador, o método escolhido será usado para analisar todos os arquivos .pdf na fonte de dados, mesmo que os arquivos .pdf contenham somente texto. O analisador padrão não será usado para analisar esses arquivos .pdf. Sua conta incorre em cobranças pelo uso da Automação de Dados do Amazon Bedrock ou do modelo de base na análise desses arquivos.

Ao selecionar como analisar seus dados, considere o seguinte:
+ Se seus dados são puramente textuais ou contêm dados multimodais, como imagens, gráficos e tabelas, que você deseja que a base de conhecimento possa consultar.
+ Se você deseja ter a opção de personalizar o prompt usado para instruir o modelo sobre como analisar seus dados.
+ O custo do analisador. A Automação de Dados do Amazon Bedrock usa preços por página, enquanto os modelos de base analisadores cobram de acordo com os tokens de entrada e saída. Para obter mais informações, consulte [Preço do Amazon Bedrock](https://aws.amazon.com/bedrock/pricing/).
+ O limite total do tamanho do arquivo. Quando você usa modelos básicos como seu analisador, o tamanho total do arquivo em todos os arquivos não deve ser maior que 100 GB.

Para saber como configurar a forma como sua base de conhecimento deve ser analisada, consulte a configuração de conexão da sua fonte de dados em [Conectar uma fonte de dados à base de conhecimento](data-source-connectors.md).

# Usar uma função do Lambda de transformação personalizada para definir como os dados são ingeridos
<a name="kb-custom-transformation"></a>

Você tem a capacidade de definir uma função do Lambda de transformação personalizada para injetar a própria lógica no processo de ingestão da base de conhecimento.

Você pode ter uma lógica de fragmentação específica, não compatível nativamente com as bases de conhecimento do Amazon Bedrock. Use a opção de estratégia sem fragmentação, ao mesmo tempo em que especifica uma função do Lambda que contenha a lógica de fragmentação. Além disso, você precisará especificar um bucket do Amazon S3 para que a base de conhecimento grave arquivos a serem fragmentados pela função do Lambda.

Depois da fragmentação, a função do Lambda vai gravar arquivos fragmentados no mesmo bucket e retornar referências para a base de conhecimento para processamento adicional. Você também tem a possibilidade de fornecer a própria chave do AWS KMS para criptografia de arquivos armazenados no bucket do S3.

**nota**  
Se forem usados conectores da web, será transmitido um texto Markdown para o Lambda em vez de HTML.

Como alternativa, convém especificar metadados no nível de fragmento, ao mesmo tempo em que faz a base de conhecimento aplicar uma das estratégias de fragmentação de suporte nativo. Nesse caso, selecione uma das estratégias de fragmentação predefinidas (por exemplo, fragmentação padrão ou de tamanho fixo), ao mesmo tempo em que fornece uma referência para a função do Lambda e o bucket do S3. Nesse caso, a base de conhecimento vai armazenar arquivos analisados e pré-fragmentados no bucket do S3 predefinido, antes de chamar a função do Lambda para adicionar ainda mais metadados no nível de fragmento.

Depois da adição de metadados no nível do fragmento, a função do Lambda vai gravar arquivos fragmentados no mesmo bucket e retornar referências para a base de conhecimento para processamento adicional. Os metadados em nível de fragmento têm precedência e substituem os metadados em nível de arquivo, em caso de eventuais colisões.

Para obter um exemplo de uso de uma função do Lambda Python para fragmentação personalizada, consulte [Custom chunking using Lambda function](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/rag/knowledge-bases/features-examples/03-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb).

Para contratos de API e arquivo, consulte as estruturas abaixo:

**Contrato de API ao adicionar uma transformação personalizada usando a função do Lambda**

```
{
...
    "vectorIngestionConfiguration": {
        "customTransformationConfiguration": { // Custom transformation 
            "intermediateStorage": {
                "s3Location": { // the location where input/output of the Lambda is expected 
                    "uri": "string"
                }
            },
            "transformations": [{
                "transformationFunction": {
                    "transformationLambdaConfiguration": {
                        "lambdaArn": "string"
                    }
                },
                "stepToApply": "string" // enum of POST_CHUNKING
            }]
        },
        "chunkingConfiguration": {
            "chunkingStrategy": "string",
            "fixedSizeChunkingConfiguration": {
                "maxTokens": "number",
                "overlapPercentage": "number"
            }
            ...
        }
    }
}
```

**Formato de entrada da transformação do Lambda personalizado**

```
{
    "version": "1.0",
    "knowledgeBaseId": "string",
    "dataSourceId": "string",
    "ingestionJobId": "string",
    "bucketName": "string",
    "priorTask": "string",
    "inputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key":"string"
        }]
    }]
}
```

**Formato de saída da transformação do Lambda personalizado**

```
{
    "outputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key": "string"
        }]
    }]
}
```

**O formato de arquivo para objetos é referenciado em `fileContents`**

```
{
    "fileContents": [{
        "contentBody": "...",
        "contentType": "string", // enum of TEXT, PDF, ...
        "contentMetadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
    ...
    ]
}
```

# Incluir metadados em uma fonte de dados para melhorar a consulta à base de conhecimento
<a name="kb-metadata"></a>

Ao ingerir arquivos CSV (valores separados por vírgula), você tem a possibilidade de fazer a base de conhecimento tratar determinadas colunas como campos de conteúdo, e não campos de metadados. Em vez de ter potencialmente centenas ou milhares de pares de arquivos/metadados/conteúdo, agora você pode ter um único arquivo CSV e um arquivo metadata.json correspondente, dando à base de conhecimento dicas sobre como tratar cada coluna dentro do CSV.

Há limites para campos/atributos de metadados do documento por fragmento. Consulte [Quotas for knowledge bases](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)

Antes de ingerir um arquivo CSV, verifique se:
+ O CSV está no formato RFC4180 e codificado em UTF-8.
+ A primeira linha do CSV inclui informações de cabeçalho.
+ Os campos de metadados fornecidos no metadata.json estão presentes como colunas no CSV.
+ Você fornece um arquivo Filename.csv.metadata.json com o seguinte formato:

  ```
  {
      "metadataAttributes": {
          "${attribute1}": "${value1}",
          "${attribute2}": "${value2}",
          ...
      },
      "documentStructureConfiguration": {
          "type": "RECORD_BASED_STRUCTURE_METADATA",
          "recordBasedStructureMetadata": {
              "contentFields": [
                  {
                      "fieldName": "string"
                  }
              ],
              "metadataFieldsSpecification": {
                  "fieldsToInclude": [
                      {
                          "fieldName": "string"
                      }
                  ],
                  "fieldsToExclude": [
                      {
                          "fieldName": "string"
                      }
                  ]
              }
          }
      }
  }
  ```

O arquivo CSV é analisado uma linha por vez e a estratégia de fragmentação e a incorporação de vetores são aplicadas ao campo de conteúdo. Atualmente, as bases de conhecimento do Amazon Bedrock oferecem um campo de conteúdo. O campo de conteúdo é dividido em fragmentos e os campos de metadados (colunas) associados a cada fragmento são tratados como valores de string.

Por exemplo, digamos que haja um CSV com uma coluna “Description” e uma coluna “Creation\$1Date”. O campo de descrição é o campo de conteúdo, e a data de criação é um campo de metadados associado. O texto da descrição é dividido em fragmentos e convertido em incorporações de vetores para cada linha no CSV. O valor da data de criação é tratado como uma representação em string da data e está associado a cada fragmento da descrição.

Se nenhum campo de inclusão/exclusão for fornecido, todas as colunas serão tratadas como colunas de metadados, exceto a coluna de conteúdo. Se apenas os campos de inclusão forem fornecidos, somente as colunas fornecidas serão tratadas como metadados. Se apenas campos de exclusão forem fornecidos, todas as colunas, exceto as de exclusão, serão tratadas como metadados. Se você fornecer o mesmo `fieldName` em `fieldsToInclude` e `fieldsToExclude`, o Amazon Bedrock lançará uma exceção de validação. Se houver um conflito entre inclusão e exclusão, isso acarretará uma falha.

As linhas em branco encontradas dentro de um CSV são ignoradas.