Anteriormente chamado de LlamaIndex na Vertex AI e, mais recentemente, Knowledge Engine, o RAG Engine é um framework de dados para desenvolver aplicativos de modelo de linguagem grande (LLM, na sigla em inglês) aumentados por contexto. A ampliação de contexto ocorre quando você aplica um LLM aos seus dados. Isso implementa a geração de recuperação aumentada (RAG, na sigla em inglês).
Um problema comum com os LLMs é que eles não entendem o conhecimento particular, ou seja, os dados da sua organização. Com o RAG Engine, é possível enriquecer o contexto do LLM com mais informações particulares, porque o modelo pode reduzir a alucinação artificial e responder a perguntas com mais precisão.
Ao combinar outras fontes de conhecimento com o conhecimento atual que os LLMs têm, um contexto melhor é fornecido. O contexto aprimorado com a consulta melhora a qualidade da resposta do LLM.
Os conceitos a seguir são fundamentais para entender o RAG Engine. Esses conceitos são listados na ordem do processo de geração aumentada por recuperação (RAG, na sigla em inglês).
Ingestão de dados: receba dados de diferentes fontes. Por exemplo, arquivos locais, Cloud Storage e Google Drive.
Transformação de dados: conversão dos dados em preparação para indexação. Por exemplo, os dados são divididos em partes.
Embedding: representações numéricas de palavras ou partes de texto. Esses números captam o significado semântico e o contexto do texto. Palavras ou textos semelhantes ou relacionados costumam ter embeddings semelhantes, o que significa que estão mais próximos no espaço vetorial de alta dimensão.
Indexação de dados: o RAG Engine cria um índice chamado corpus. O índice estrutura a base de conhecimento para que seja otimizado para pesquisa. Por exemplo, o índice é como um índice detalhado de um grande livro de referência.
Recuperação: quando um usuário faz uma pergunta ou fornece uma solicitação, o componente de recuperação no RAG Engine pesquisa na base de conhecimento para encontrar informações relevantes para a consulta.
Geração: as informações recuperadas se tornam o contexto adicionado à consulta do usuário original como um guia para que o modelo de IA generativa gere respostas factuais baseadas e relevantes.
Modelos de IA generativa com suporte a RAG
Esta seção lista os modelos compatíveis com o RAG.
Modelos do Gemini
A tabela a seguir lista os modelos do Gemini e as versões que são compatíveis com o RAG Engine:
Modelo | Versão |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-002 gemini-1.5-flash-001 |
Gemini 1.5 Pro | gemini-1.5-pro-002 gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Gemini 1.0 Pro Vision | gemini-1.0-pro-vision-001 |
Gemini | gemini-experimental |
Modelos autoimplantados
O RAG Engine oferece suporte a todos os modelos do Model Garden.
Use o RAG Engine com os endpoints de modelos abertos autoimplantados.
# Create a model instance with your self-deployed open model endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID",
tools=[rag_retrieval_tool]
)
Modelos com APIs gerenciadas na Vertex AI
Os modelos com APIs gerenciadas na Vertex AI que oferecem suporte ao RAG Engine incluem:
O exemplo de código abaixo demonstra como usar a API
GenerateContent
do Gemini para criar uma instância de modelo generativo. O ID do modelo,
/publisher/meta/models/llama-3.1-405B-instruct-maas
, pode ser encontrado no
card do modelo.
# Create a model instance with Llama 3.1 MaaS endpoint
rag_model = GenerativeModel(
"projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
tools=[rag_retrieval_tool]
)
O exemplo de código abaixo demonstra como usar a API ChatCompletions
compatível com a OpenAI para gerar uma resposta de modelo.
# Generate a response with Llama 3.1 MaaS endpoint
response = client.chat.completions.create(
model="meta/llama-3.1-405b-instruct-maas",
messages=[{"role": "user", "content": "your-query"}],
extra_body={
"extra_body": {
"google": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": rag_corpus_resource
},
"similarity_top_k": 10
}
}
}
},
)
Como incorporar modelos
Os modelos de embedding são usados para criar um corpus e para pesquisar e recuperar durante a geração de respostas. Esta seção lista os modelos de embedding compatíveis.
textembedding-gecko@003
textembedding-gecko-multilingual@001
text-embedding-004
(padrão)text-multilingual-embedding-002
textembedding-gecko@002
(somente versões ajustadas)textembedding-gecko@001
(somente versões ajustadas)
Para mais informações sobre o ajuste de modelos de embedding, consulte Ajustar embeddings de texto.
Os seguintes modelos de embedding abertos também são compatíveis. Eles estão no Model Garden.
e5-base-v2
e5-large-v2
e5-small-v2
multilingual-e5-large
multilingual-e5-small
Tipos de documentos aceitos para RAG
Somente documentos de texto são aceitos. A tabela a seguir mostra os tipos de arquivo e os limites de tamanho de arquivo:
Tipo de arquivo | Limite de tamanho do arquivo |
---|---|
Documentos do Google | 10 MB quando exportados do Google Workspace |
Desenhos do Google | 10 MB quando exportados do Google Workspace |
Apresentações Google | 10 MB quando exportados do Google Workspace |
Arquivo HTML | 10 MB |
Arquivo JSON | 1 MB |
Arquivo Markdown | 10 MB |
Slides do Microsoft PowerPoint (arquivo PPTX) | 10 MB |
Documentos do Microsoft Word (arquivo DOCX) | 50 MB |
Arquivo PDF | 50 MB |
Arquivo de texto | 10 MB |
É possível usar o RAG Engine com outros tipos de documentos, mas isso pode gerar respostas de qualidade inferior.
Fontes de dados compatíveis com a RAG
As seguintes fontes de dados são compatíveis:
- Fazer upload de um arquivo local:um upload de arquivo único usando
upload_file
(até 25 MB), que é uma chamada síncrona. - Cloud Storage:importe arquivos do Cloud Storage.
Google Drive:importe um diretório do Google Drive.
A conta de serviço precisa receber as permissões corretas para importar arquivos. Caso contrário, nenhum arquivo será importado e nenhuma mensagem de erro será exibida. Para mais informações sobre os limites de tamanho de arquivo, consulte Tipos de documentos compatíveis.
Para autenticar e conceder permissões, faça o seguinte:
- Acesse a página do IAM do projeto do Google Cloud.
- Selecione Incluir concessão de papel fornecida pelo Google.
- Pesquise a conta de serviço do Agente de serviço de dados do RAG da Vertex AI.
- Clique em Compartilhar na pasta do drive e compartilhe com a conta de serviço.
- Conceda a permissão
Viewer
à conta de serviço na sua pasta ou arquivo do Google Drive. O ID do recurso do Google Drive pode ser encontrado no URL da Web.
Slack:importe arquivos do Slack usando um conector de dados.
Jira:importe arquivos do Jira usando um conector de dados.
Para mais informações, consulte a referência da API RAG.
Ajustar as transformações de RAG
Depois que um documento é ingerido, o RAG Engine executa um conjunto de transformações para preparar os dados para indexação. É possível controlar seus casos de uso usando os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
chunk_size |
Quando os documentos são ingeridos em um índice, eles são divididos em partes. O parâmetro chunk_size (em tokens) especifica o tamanho do bloco. O tamanho do bloco padrão é de 1.024 tokens. |
chunk_overlap |
Por padrão, os documentos são divididos em blocos com uma certa quantidade de sobreposição para melhorar a relevância e a qualidade de recuperação. A sobreposição de blocos padrão é de 200 tokens. |
Um tamanho de bloco menor significa que os embeddings são mais precisos. Um tamanho de bloco maior significa que os embeddings podem ser mais gerais, mas podem perder detalhes específicos.
Por exemplo, se você converter 200 palavras em vez de 1.000 palavras em uma matriz de incorporação da mesma dimensão, você poderá perder detalhes. Esse também é um bom exemplo de quando você considera o limite de tamanho do contexto do modelo. Um bloco grande de texto pode não caber em um modelo de janela pequena.
Cotas da RAG
Para cada serviço que realiza a geração aumentada de recuperação (RAG, na sigla em inglês) usando o RAG Engine, as cotas a seguir se aplicam, com a cota medida como solicitações por minuto (RPM).Serviço | Cota | Métrica |
---|---|---|
APIs de gerenciamento de dados do mecanismo RAG | 60 RPM | VertexRagDataService requests per minute per region |
API RetrievalContexts |
1.500 RPM | VertexRagService retrieve requests per minute per region |
base_model: textembedding-gecko |
1.500 RPM | Online prediction requests per base model per minute per region per base_model Outro filtro que você pode especificar é base_model: textembedding-gecko |
Serviço | Limite | Métrica |
---|---|---|
Solicitações ImportRagFiles simultâneas |
3 RPM | VertexRagService concurrent import requests per region |
Número máximo de arquivos por solicitação ImportRagFiles |
10.000 | VertexRagService import rag files requests per region |
Para mais limites de taxa e cotas, consulte Limites de taxa da IA generativa na Vertex AI.
Parâmetros de recuperação
A tabela a seguir inclui os parâmetros de recuperação:
Parâmetro | Descrição |
---|---|
similarity_top_k |
Controla o número máximo de contextos recuperados. |
vector_distance_threshold |
Somente contextos com uma distância menor que o limite são considerados. |
Gerenciar sua base de conhecimento RAG (corpus)
Esta seção descreve como gerenciar seu corpus para tarefas de RAG realizando o gerenciamento de índices e arquivos.
Gerenciamento do corpus
Um corpus, também chamado de índice, é uma coleção de documentos ou fonte de informações. O corpus pode ser consultado para recuperar contextos relevantes para a geração de respostas. Ao criar um corpus pela primeira vez, o processo pode levar um minuto a mais.
As seguintes operações de corpus são compatíveis:
Operação | Descrição | Parâmetros | Exemplos |
---|---|---|---|
Crie um corpus RAG. | Crie um índice para importar ou fazer upload de documentos. | Criar parâmetros | Criar exemplo |
Atualize um corpus RAG. | Atualizar um índice criado anteriormente para importar ou fazer upload de documentos. | Atualizar parâmetros | Exemplo de atualização |
Listar um corpus RAG. | Lista todos os índices. | Listar parâmetros | Exemplo de lista |
Acesse um corpus RAG. | Receba os metadados que descrevem o índice. | Receber parâmetros | Exemplo |
Excluir um corpus RAG. | Exclua o índice. | Excluir parâmetros | Exemplo de exclusão |
Não há suporte para operações simultâneas em corpora. Para mais informações, consulte a referência da API RAG.
Gerenciamento de arquivos
As seguintes operações de arquivo são compatíveis:
Operação | Descrição | Parâmetros | Exemplos |
---|---|---|---|
Faça upload de um arquivo RAG. | Faça upload de um arquivo do armazenamento local com informações adicionais que contextualizam o LLM para gerar respostas mais precisas. | Parâmetros de upload | Exemplo de upload |
Importe arquivos RAG. | Importe um conjunto de arquivos de outro armazenamento para um local de armazenamento. | Importar parâmetros | Exemplo de importação |
Acesse um arquivo RAG. | Receba detalhes sobre um arquivo RAG para uso pelo LLM. | Receber parâmetros | Exemplo |
Excluir um arquivo RAG. | Faça upload de um arquivo do armazenamento local com informações adicionais que contextualizam o LLM para gerar respostas mais precisas. | Excluir parâmetros | Exemplo de exclusão |
Para mais informações, consulte a referência da API RAG.
A seguir
- Para saber mais sobre os limites de tamanho de arquivo, consulte Tipos de documentos compatíveis.
- Para saber mais sobre as cotas relacionadas ao RAG Engine, consulte Cotas do RAG Engine.
- Para saber como personalizar parâmetros, consulte Parâmetros de recuperação.
- Para saber mais sobre a API RAG, consulte a API RAG Engine.
- Para saber mais sobre o embasamento, consulte Visão geral do embasamento.
- Para saber mais sobre a diferença entre embasamento e RAG, consulte Embasar respostas usando RAG.
- Para saber mais sobre a IA generativa na Vertex AI, consulte a Visão geral da IA generativa na Vertex AI.
- Para saber mais sobre a arquitetura de RAG, consulte Infraestrutura para um aplicativo de IA generativa com capacidade de RAG usando a Vertex AI.