Pular para o conteúdo principal

Tutorial da ferramenta de pesquisa de arquivos do Google: Crie aplicativos RAG com a API Gemini

Aprenda a criar um aplicativo RAG com o Google File Search e a API Gemini. Guia passo a passo com código, fragmentação, filtragem de metadados e citações
Atualizado 25 de nov. de 2025  · 14 min lido

Neste tutorial, vou te mostrar como criar um assistente de documentação médica com o Google File Search. Você vai ver como configurar, implementar consultas e usar recursos avançados, como fragmentação personalizada e filtragem de metadados. No final, você vai entender quando faz sentido usar o RAG gerenciado em vez de montar sua própria pilha.

O que é a Ferramenta de Pesquisa de Arquivos do Google?

Criar aplicativos RAG geralmente significa lidar com bancos de dados vetoriais, pipelines de incorporação e muita infraestrutura. A ferramenta de pesquisa de arquivos do Google, lançada em novembro de 2025, acaba com essa confusão com um serviço totalmente gerenciado. RAG integrado diretamente no Gemini.

A ferramenta cuida das partes complicadas pra você: dividir documentos em partes, gerar embeddings e gerenciar a pesquisa semântica sem precisar de ferramentas externas como Pinecone ou ChromaDB. O fluxo de trabalho é simples: carregue os arquivos, crie uma loja e comece a fazer consultas. Você também tem citações integradas que permitem verificar de onde vêm as respostas.

Entendendo o RAG e por que o Google o simplifica

O Gemini File Search se apresenta como um sistema RAG gerenciado. Entender o RAG ajuda você a usar bem a ferramenta e decidir quando ela se encaixa no seu caso de uso.

Basicamente, a geração aumentada por recuperação (RAG) conecta modelos de linguagem a conhecimentos externos. Antes de gerar uma resposta, o modelo pega as informações relevantes dos seus documentos, baseando as respostas nos seus dados reais, em vez de só usar os dados de treinamento.

O desafio DIY RAG

Embora o RAG pareça simples em teoria, criar um pipeline RAG significa gerenciar vários componentes:

  • Bancos de dados vetoriais: Configurar e manter serviços como Pinecone, ChromaDBou Weaviate para guardar embeddings
  • Incorporando pipelines: Converta documentos em vetores numéricos e lide com atualizações quando o conteúdo mudar.
  • Estratégias de fragmentação: Divida os documentos em partes que equilibrem o contexto e a precisão da recuperação.
  • e de infraestrutura: Monitore o desempenho, ajuste os parâmetros e lide com o dimensionamento à medida que seus dados crescem.

Cada componente precisa de conhecimento especializado e manutenção constante. Se você está montando um sistema de produção que precisa de confiabilidade ou um protótipo que precisa de velocidade, a sobrecarga da infraestrutura continua sendo o mesmo gargalo.

Por que o RAG gerenciado é importante

Serviços gerenciados como o Google File Search acabam com esse problema. Em vez de ajustar os sistemas de recuperação, você escreve consultas. Em vez de depurar pipelines de incorporação, você valida os resultados. A infraestrutura funciona em segundo plano enquanto você se concentra na lógica da aplicação.

O Gemini File Search cuida da parte técnica complicada enquanto você controla o que importa: quais documentos indexar, como pesquisá-los e como usar os resultados. Esse equilíbrio funciona bem quando você precisa de qualidade de produção sem custos operacionais. Pra saber mais sobre o básico do RAG, recomendo dar uma olhada no tutorial do DataCamp sobre RAG.

Um diagrama simples do fluxo de trabalho mostrando as duas fases do Google File Search: (1) Indexação: carregar documentos (PDF, DOCX ou TXT) para um File Search Store, onde eles são automaticamente divididos e transformados em embeddings; (2) Consulta: a consulta do usuário é combinada com trechos de documentos relevantes, que o modelo Gemini usa para escrever uma resposta com citações. Marque claramente “Indexar uma vez” para a primeira fase (azul) e “Consultar repetidamente” para a segunda (verde). Use ícones para documentos, armazenamento, pesquisa e modelo Gemini, além de setas para mostrar o fluxo desde o upload até a geração da resposta.

A melhor maneira de entender o Google File Search é usando-o. Na próxima seção, você vai criar um assistente completo de documentação médica que mostra todo o fluxo de trabalho, desde o upload de documentos até respostas fundamentadas com citações.

Criando um assistente de documentação médica com o Google File Search

Isenção de responsabilidade: Este tutorial mostra como usar a Pesquisa de Arquivos com rótulos de medicamentos da FDA só pra fins educacionais. O assistente que você vai criar não é pra ser usado em clínicas, pra tomar decisões sobre cuidados com pacientes ou pra fazer diagnósticos médicos. Sempre consulte profissionais de saúde qualificados para obter orientação médica. Os sistemas de IA podem gerar informações incorretas mesmo com base em documentos de origem.

Esta seção mostra como criar um assistente completo de documentação médica usando a Pesquisa de Arquivos. Você vai trabalhar com rótulos de medicamentos da FDA para três remédios comuns, criando um sistema que responde a perguntas sobre interações medicamentosas, efeitos colaterais e contraindicações. O assistente dá respostas que dá pra conferir, citando trechos específicos dos documentos de origem.

A Pesquisa de Arquivos funciona em duas etapas: você indexa seus documentos uma vez e depois os consulta várias vezes. Você vai primeiro montar a infraestrutura de indexação e, depois, focar totalmente em fazer perguntas e interpretar respostas fundamentadas.

Passo 1: Instale a API e configure a autenticação

Você precisa do Python 3.9 ou mais recente. Instale o SDK do Google Generative AI e as dependências:

pip install google-genai python-dotenv

Pega sua chave API no Google AI Studio. Guarde em um arquivo .env no diretório do seu projeto:

GOOGLE_API_KEY=your_api_key_here

Configure suas importações e inicialize o cliente:

from google import genai
from google.genai import types
import time
from dotenv import load_dotenv

load_dotenv()
client = genai.Client()

O genai.Client() faz a autenticação automaticamente usando sua variável de ambiente. Você vai usar esse objeto cliente para todas as operações de pesquisa de arquivos.

Passo 2: Criar uma loja de pesquisa de arquivos

Crie um armazenamento para guardar seus documentos indexados:

file_search_store = client.file_search_stores.create(
    config={"display_name": "fda-drug-labels"}
)
print(f"Created store: {file_search_store.name}")

Um armazenamento de pesquisa de arquivos funciona como um contêiner para seus documentos indexados. Diferente dos uploads de arquivos temporários, que expiram depois de 48 horas, as lojas ficam lá pra sempre. Isso quer dizer que você indexa os documentos uma vez e pode consultá-los milhares de vezes sem precisar fazer novo upload ou reprocessamento.

O file_search_store.name tem um identificador único que você vai usar como referência quando fizer uma consulta. Parece que é fileSearchStores/fdadruglabels-abc123. Guarde esse valor se precisar consultar a loja a partir de uma sessão diferente.

Passo 3: Carregue e indexe documentos PDF

Neste tutorial, você vai trabalhar com três rótulos de medicamentos aprovados pela FDA. Baixe esses PDFs do site da FDA:

Salve-os no diretório do seu projeto e, em seguida, envie-os para a sua loja de pesquisa de arquivos:

pdf_files = ["metformin.pdf", "atorvastatin.pdf", "lisinopril.pdf"]

for pdf_file in pdf_files:
    operation = client.file_search_stores.upload_to_file_search_store(
        file=pdf_file,
        file_search_store_name=file_search_store.name,
        config={"display_name": pdf_file.replace(".pdf", "")},
    )

    # Wait for indexing to complete
    while not operation.done:
        time.sleep(3)
        operation = client.operations.get(operation)

    print(f"{pdf_file} indexed")

Durante o upload, o File Search divide cada PDF em pedaços e transforma os segmentos em embeddings usando o modelo gemini-embedding-001. Essasincorporações de vetores de representação de palavras ( ) são representações numéricas que capturam o significado semântico, permitindo que o sistema encontre passagens relevantes mesmo quando sua pergunta não corresponde exatamente ao texto do documento.

O padrão de polling (while not operation.done) lida com a natureza assíncrona da indexação. Documentos grandes demoram mais pra serem processados, então a API volta imediatamente e você verifica o status de conclusão de vez em quando. Para sistemas de produção, pense em adicionar uma lógica de tempo limite para evitar loops infinitos.

Cada bloco guarda metadados que o ligam ao documento original e à sua posição. Esses metadados são importantes quando você acessar as citações mais tarde.

Passo 4: Consulta de informações de um único documento

Agora, consulte seus documentos indexados:

query1 = "What are the contraindications for metformin?"

response1 = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=query1,
    config=types.GenerateContentConfig(
        tools=[
            types.Tool(
                file_search=types.FileSearch(
                    file_search_store_names=[file_search_store.name]
                )
            )
        ]
    ),
)

print(response1.text)

Isso mostra a resposta gerada:

Metformin is contraindicated in several conditions:

* Severe renal impairment (eGFR below 30 mL/min/1.73 m2)
* Acute or chronic metabolic acidosis
* Hypersensitivity to metformin

A Pesquisa de Arquivos pega os trechos mais parecidos em termos de significado nos seus documentos e os usa como contexto para o gemini-2.5-flash, que gera a resposta. A configuração da matriz ` tools ` diz ao modelo para usar a Pesquisa de Arquivos durante a geração. Você pode juntar a Pesquisa de Arquivos com outras ferramentas, tipo execução de código ou Pesquisa do Google, na mesma solicitação.

Passo 5: Acesse citações e metadados de fundamentação

Trecho que mostra quais documentos foram usados para responder:

print("Sources used:")
for i, chunk in enumerate(response1.candidates[0].grounding_metadata.grounding_chunks, 1):
    source_name = chunk.retrieved_context.title
    print(f"  [{i}] {source_name}")

Resultado:

Sources used:
  [1] metformin
  [2] atorvastatin

Cada parte dos metadados de referência inclui o título do documento original e a passagem específica do texto que deu a resposta. Isso cria um caminho de verificação desde a resposta gerada até seus documentos originais — necessário para aplicações médicas, jurídicas ou financeiras, onde a precisão é importante.

A matriz ` grounding_chunks ` tem todas as passagens que foram encontradas, organizadas por relevância. Mesmo que a consulta pergunte especificamente sobre a metformina, a Pesquisa de Arquivos também encontrou conteúdo do documento sobre a atorvastatina, provavelmente porque ele tem informações relacionadas a contraindicações. Isso mostra como funciona a recuperação semântica: o sistema encontra conteúdo que faz sentido, não só palavras-chave que batem.

Passo 6: Pesquisa em vários documentos

Teste uma pergunta sobre interação medicamentosa com vários documentos:

query2 = "Can a patient take both atorvastatin and metformin together? Are there any drug interactions?"

response2 = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=query2,
    config=types.GenerateContentConfig(
        tools=[
            types.Tool(
                file_search=types.FileSearch(
                    file_search_store_names=[file_search_store.name]
                )
            )
        ]
    ),
)

print(response2.text)

O mesmo padrão de API agora pega informações de vários documentos e junta tudo. Acesse os trechos de texto recuperados:

print("Sources used:")

for i, chunk in enumerate(response2.candidates[0].grounding_metadata.grounding_chunks, 1):
    source_name = chunk.retrieved_context.title
    source_text = chunk.retrieved_context.text[:100] + "..."
    print(f"  [{i}] {source_name}")
    print(f"      {source_text}")

A saída mostra trechos dos rótulos dos dois medicamentos:

Sources used:
  [1] atorvastatin
      Concomitant use with diabetes medications is generally safe but monitor glucose levels...
  [2] metformin
      Carbonic anhydrase inhibitors may increase the risk of lactic acidosis...

A Pesquisa de Arquivos pega as partes relevantes dos dois documentos, e o modelo junta tudo numa resposta que faz sentido. O atributo retrieved_context.text mostra a passagem exata que foi usada, permitindo que você verifique se o modelo não inventou informações.

Passo 7: Faça comparações entre documentos

Faça uma pergunta analítica que precise comparar os três documentos:

query3 = "Which medications have muscle-related side effects?"

response3 = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=query3,
    config=types.GenerateContentConfig(
        tools=[
            types.Tool(
                file_search=types.FileSearch(
                    file_search_store_names=[file_search_store.name]
                )
            )
        ]
    ),
)

print(response3.text)

# Check which documents were consulted
metadata = response3.candidates[0].grounding_metadata
for i, chunk in enumerate(metadata.grounding_chunks, 1):
    print(f"  [{i}] {chunk.retrieved_context.title}")

O resultado mostra que a atorvastatina tem efeitos colaterais relacionados aos músculos (mialgia, miopatia, rabdomiólise) e confirma que os outros medicamentos não têm esses efeitos. Os metadados de base mostram que a Pesquisa de Arquivos consultou todos os três documentos para responder à pergunta de comparação.

Você acabou de criar um assistente de documentação médica que funciona. O fluxo de trabalho principal continua o mesmo: configure a ferramenta de pesquisa de arquivos na sua chamada generate_content(), pegue o texto da resposta e acesse os metadados básicos para verificação. A loja fica nos servidores do Google, então você pode fazer consultas em sessões futuras sem precisar reindexar.

Depois, você vai ver recursos avançados, tipo configurações personalizadas de chunking e filtragem de metadados, que te dão um controle melhor sobre como as coisas são recuperadas.

Recursos avançados e personalização da ferramenta Google File Search

O fluxo de trabalho básico da Pesquisa de Arquivos cobre a maioria dos casos de uso, mas os sistemas de produção geralmente precisam de um controle mais preciso sobre o comportamento de recuperação. Essa seção mostra como personalizar estratégias de fragmentação, filtrar documentos com metadados, otimizar o desempenho e gerenciar vários armazenamentos para diferentes casos de uso.

Configuração personalizada de fragmentação

A Pesquisa de Arquivos divide automaticamente os documentos em partes durante a indexação. Por padrão, ele usa uma estratégia de fragmentação otimizada para documentos gerais, mas você pode personalizar esse comportamento quando tipos específicos de documentos precisarem de um tratamento diferente.

Pense no exemplo do assistente médico. Os rótulos dos medicamentos têm um monte de informações técnicas em tabelas e parágrafos curtos. Pedaços menores permitem que você pegue informações precisas, como dosagens específicas ou contraindicações, sem precisar lidar com contexto irrelevante. Trechos maiores funcionam melhor para seções narrativas que exigem mais contexto para serem compreendidas adequadamente.

Configure os parâmetros de fragmentação ao enviar documentos:

operation = client.file_search_stores.upload_to_file_search_store(
    file="metformin.pdf",
    file_search_store_name=file_search_store.name,
    config={
        "display_name": "metformin",
        "chunking_config": {
            "white_space_config": {
                "max_tokens_per_chunk": 200,
                "max_overlap_tokens": 20
            }
        }
    }
)

O parâmetro “ chunking_config ” controla como a Pesquisa de Arquivos divide seus documentos. O parâmetro ` max_tokens_per_chunk ` define o tamanho máximo de cada bloco, enquanto ` max_overlap_tokens ` determina a quantidade de conteúdo que se sobrepõe entre blocos consecutivos. Essa sobreposição garante que as informações que ultrapassam os limites dos blocos não se percam durante a recuperação.

A troca é importante: trechos mais curtos dão uma recuperação mais precisa, mas podem perder o contexto mais amplo, enquanto trechos maiores mantêm mais significado, mas podem incluir informações irrelevantes. 

Para documentação técnica com divisões claras entre seções, use trechos menores (150-250 tokens). Para documentos narrativos, como trabalhos de pesquisa ou relatórios, trechos maiores (400-600 tokens) mantêm o fluxo do argumento e o contexto. A documentação oficial da Pesquisa de Arquivos dá mais dicas sobre como escolher tamanhos de blocos para diferentes tipos de documentos.

Filtragem de metadados

Quando sua loja tem dezenas ou centenas de documentos, a filtragem de metadados reduz o escopo de recuperação antes que a pesquisa semântica seja executada. Isso melhora a precisão e reduz o tempo de processamento.

Adicione metadados durante o upload do documento para poder filtrar depois:

operation = client.file_search_stores.upload_to_file_search_store(
    file="metformin.pdf",
    file_search_store_name=file_search_store.name,
    config={
        "display_name": "metformin",
        "custom_metadata": [
            {"key": "category", "string_value": "diabetes"},
            {"key": "year", "numeric_value": 2017},
            {"key": "drug_class", "string_value": "biguanide"}
        ]
    }
)

O parâmetro ` custom_metadata ` aceita uma matriz de pares chave-valor. Use string_value para metadados de texto, como categorias ou classes de medicamentos, e numeric_value para anos, versões ou outros dados numéricos.

Faça uma consulta com filtros de metadados para procurar só os documentos que interessam:

query = "What are the common side effects?"

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=query,
    config=types.GenerateContentConfig(
        tools=[
            types.Tool(
                file_search=types.FileSearch(
                    file_search_store_names=[file_search_store.name],
                    metadata_filter="category=diabetes"
                )
            )
        ]
    )
)

O parâmetro metadata_filter limita a recuperação aos documentos que correspondem aos critérios especificados. Neste exemplo, a Pesquisa de Arquivos só considera documentos com category=diabetes, ignorando os medicamentos para pressão arterial e colesterol, mesmo que eles existam na mesma loja.

Isso é super importante quando os armazenamentos têm documentos diferentes. Uma base de conhecimento médico pode incluir rótulos de medicamentos, artigos de pesquisa e diretrizes clínicas. Filtrar por tipo de documento garante que você obtenha informações sobre dosagem a partir de rótulos, e não de resumos de pesquisas.

Você pode juntar a filtragem de metadados com a capacidade completa de pesquisa semântica. O filtro é usado primeiro para escolher os documentos possíveis, e depois a pesquisa semântica encontra as partes mais relevantes dentro desses documentos.

Otimização do desempenho

O desempenho da pesquisa de arquivos depende do tamanho do armazenamento, da complexidade da consulta e da escolha do modelo. Seguir essas orientações mantém a recuperação rápida e os custos controláveis.

Limites de tamanho da loja: Mantenha os armazenamentos individuais abaixo de 20 GB para uma latência de recuperação ideal. A Pesquisa de arquivos guarda os embeddings junto com seus documentos, e os embeddings ocupam mais ou menos três vezes o tamanho dos seus arquivos originais. Uma coleção de PDFs de 7 GB gera cerca de 21 GB de dados armazenados depois de indexados, ultrapassando o limite recomendado.

Quando você chegar perto desse limite, crie armazenamentos separados organizados por categoria, período de tempo ou padrão de acesso. Para o assistente médico, você pode criar lojas separadas para diferentes categorias de medicamentos, em vez de indexar todos os medicamentos disponíveis em uma única loja.

Estrutura de custos: A Pesquisa de Arquivos cobra US$ 0,15 por 1 milhão de tokens para indexação. Depois de indexado, você pode fazer milhares de consultas sem custos adicionais de indexação. Esse modelo de preços é ideal para cargas de trabalho com muitas leituras, onde você consulta os mesmos documentos várias vezes.

Seleção do modelo: Use gemini-2.5-flash para a maioria das consultas. Ele processa solicitações em 1 a 2 segundos e custa bem menos do que gemini-2.5-pro. Reserve o gemini-2.5-pro para consultas que exigem raciocínio profundo em várias fontes ou que envolvem tarefas de síntese super complexas. A diferença de custo entre os modelos é mais importante do que os custos de indexação para aplicações de alto volume.

Fica de olho no tamanho do armazenamento enquanto adiciona documentos. Você pode conferir isso pela API, mas o cálculo do tamanho rola no backend do Google e pode não aparecer logo depois dos uploads. Para ver as especificações técnicas completas e os limites, dá uma olhada na documentação da API do Gemini File.

Gerenciando várias lojas

Cada projeto da nuvem do Google suporta até 10 armazenamentos do File Search. Várias lojas permitem separar documentos por controle de acesso, requisitos de desempenho ou organização lógica.

Crie lojas especializadas para diferentes casos de uso:

# Create separate stores for different document categories
diabetes_store = client.file_search_stores.create(
    config={"display_name": "diabetes-medications"}
)

cardio_store = client.file_search_stores.create(
    config={"display_name": "cardiovascular-medications"}
)

Consulte várias lojas em uma única solicitação:

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="What medications treat both diabetes and heart disease?",
    config=types.GenerateContentConfig(
        tools=[
            types.Tool(
                file_search=types.FileSearch(
                    file_search_store_names=[
                        diabetes_store.name,
                        cardio_store.name
                    ]
                )
            )
        ]
    )
)

A Pesquisa de Arquivos busca em todos os armazenamentos especificados e junta os resultados. Os metadados de base identificam de onde veio cada citação, mantendo a rastreabilidade total. 

Os armazenamentos ficam lá pra sempre e precisam ser apagados manualmente quando não forem mais necessários, o que os torna bons pra aplicações de produção onde os documentos continuam disponíveis pra consulta em várias sessões e implantações.

A seguir, você vai ver como o File Search se compara a outras soluções RAG e quando escolher abordagens gerenciadas em vez de DIY.

Ferramenta de pesquisa de arquivos do Google vs outras ferramentas de pesquisa de arquivos e RAG

A pesquisa de arquivos não é a única opção para criar aplicativos RAG. Entender como ele se compara às alternativas ajuda você a escolher a ferramenta certa. Vamos comparar a abordagem do Google com a oferta da OpenAI e as construções personalizadas tradicionais.

Recurso

Pesquisa de arquivos do Google

Pesquisa de arquivos OpenAI

RAG personalizado (LangChain)

Modelo de Preços

$0,15/M tokens (apenas índice)

0,10/GB de armazenamento diário

Custos de infraestrutura + desenvolvimento

Controle de fragmentação

Automatizado com configuração básica

Configurável (800 tokens padrão, 400 sobreposições)

Controle total sobre a estratégia

Tipo de pesquisa

Semântica (apenas vetorial)

Híbrido (vetor + palavra-chave)

Qualquer método que você implementar

Formatos de arquivo

Mais de 150 tipos (PDF, DOCX, código, etc.)

6 types (TXT, MD, HTML, DOCX, PPTX, PDF)

Depende dos analisadores usados

Tempo de configuração

Ata

Ata

Dias a semanas

Citações

Integrado com metadados de aterramento

Integrado

Você mesmo precisa implementar

Ideal para

Grande volume de consultas, implantação rápida

Consultas com muitas palavras-chave, controle moderado

Requisitos complexos, personalização total

Pesquisa de arquivos do Google vs Pesquisa de arquivos da OpenAI

As duas empresas oferecem RAG hospedado, mas seguem caminhos diferentes em termos de preços e recursos.

Preços: O Google cobra uma vez durante a indexação (US$ 2,50 por mil consultas mais US$ 0,10 por GB por dia para armazenamento). Se você faz muitas consultas, mas raramente atualiza documentos, o modelo do Google economiza dinheiro. Se você está sempre reindexando, a matemática fica interessante.

Controle de configuração: O Google mantém as coisas simples com fragmentação automática e configuração limitada. A OpenAI te dá mais controle. Você pode definir o tamanho do bloco (800 tokens por padrão) e a sobreposição (400 tokens). A OpenAI também faz uma busca híbrida que junta correspondência de vetores e palavras-chave, enquanto o Google usa só a busca semântica. Isso é importante quando suas consultas têm termos técnicos específicos ou códigos de produtos.

Formatos de arquivo: O Google lida com mais de 150 tipos de arquivos, incluindo arquivos de código e vários formatos de documentos. A OpenAI suporta seis: TXT, MD, HTML, DOCX, PPTX e PDF. Nenhum dos dois lida bem com dados estruturados como CSV ou JSONL. É aí que as construções personalizadas se destacam.

Integração: O Google se conecta aos modelos Gemini e aos serviços da nuvem do Google Cloud. A OpenAI conecta-se à sua família de modelos e ao Azure. Os dois oferecem citações e rastreamento de fontes.

A verdadeira diferença é entre simplicidade e controle. O Google junta tudo em uma única chamada de API. A OpenAI permite ajustar a recuperação, mas isso dá um pouco mais de trabalho. Não tem um único vencedor aqui. Depende se você quer rapidez ou personalização pro seu projeto.

Recursos personalizados do RAG

Criar seu próprio sistema RAG com ferramentas como o LangChain abre possibilidades que os serviços hospedados não oferecem. DataCamp's RAG com LangChain explica essa abordagem em detalhes.

As compilações personalizadas permitem técnicas avançadas:

  • Divisão semântica que detecta quando os tópicos mudam, em vez de cortar em comprimentos fixos
  • Fragmentação sensível a tokens que respeita com precisão as janelas de contexto do modelo
  • Recuperação híbrida misturando a busca por palavra-chave BM25 com vetores densos
  • Transformações de consulta como o HyDE, que criam respostas hipotéticas para melhorar a pesquisa
  • Gráfico RAG representando documentos como redes de entidades e relações

Tutorial do DataCamp sobre melhorar o desempenho do RAG explora essas técnicas com exemplos que mostram melhorias mensuráveis na qualidade. A desvantagem é a complexidade operacional: você está monitorando o desempenho do banco de dados, ajustando modelos de incorporação e lidando com atualizações em vários serviços.

Quando usar cada abordagem

Escolha ferramentas hospedadas como a Pesquisa de Arquivos quando:

  • Criando protótipos ou provas de conceito onde a velocidade é importante
  • O seu caso de uso se encaixa nos padrões padrão (perguntas e respostas sobre documentos, bases de conhecimento, pesquisa de documentação).
  • Sua equipe não tem muita experiência em RAG
  • Você quer custos previsíveis e despesas operacionais mínimas

Crie personalizado quando:

  • Você precisa de métodos avançados de fragmentação ou recuperação especializada.
  • Trabalhando com dados estruturados ou formatos de arquivo incomuns
  • Construindo RAG que juntam várias estratégias
  • Otimizar custos em grande escala justifica o investimento em engenharia.
  • A conformidade precisa de infraestrutura ou modelos específicos.

A maioria dos projetos começa com soluções hospedadas e só muda para versões personalizadas quando os requisitos exigem isso. As técnicas do RAG personalizado (fragmentação inteligente, pesquisa híbrida, otimização de consultas) ainda influenciam como você usa as ferramentas hospedadas. Entender o panorama completo ajuda você a fazer melhores escolhas à medida que suas necessidades evoluem.

Conclusão

Você criou um sistema RAG completo usando a ferramenta Google File Search, desde indexar rótulos de medicamentos da FDA até fazer consultas com citações. O assistente médico mostra como os serviços gerenciados cuidam da infraestrutura enquanto você se concentra na lógica da aplicação.

A pesquisa de arquivos funciona bem quando você precisa de RAG confiável sem ter que gerenciar bancos de dados vetoriais ou incorporar pipelines. O armazenamento gratuito e as incorporações de consulta tornam os custos previsíveis. Os armazenamentos persistentes eliminam a sobrecarga de reindexação, permitindo que você dimensione as consultas sem precisar aumentar a manutenção da infraestrutura.

Antes de colocar em produção, adicione as proteções importantes que o tutorial deixou de fora pra ser mais curto. Implemente o tratamento de erros com tempos limite para operações de upload e blocos try-catch em torno das chamadas de API. Pense nas implicações da privacidade dos dados ao enviar documentos para os servidores do Google, principalmente se forem conteúdos confidenciais. Adicione validação para verificar se os metadados básicos existem antes de acessar as citações. Teste bem com especialistas na área pra pegar os casos em que o modelo gera respostas que parecem certas, mas estão erradas, mesmo com base em dados concretos.

Para os próximos passos, tente expandir seu assistente com filtragem de metadados para organizar documentos por categoria. Experimente diferentes tamanhos de blocos para se adequar aos seus tipos de documentos. As técnicas que você aprendeu aqui valem tanto pra criar bots de suporte, quanto pra pesquisa de documentação ou assistentes de conhecimento.

Perguntas frequentes

Preciso refazer a indexação quando um documento é alterado?

Sim. Para atualizar ou substituir um arquivo, é preciso fazer o upload de novo para que as incorporações reflitam o novo conteúdo.

Posso controlar o acesso a documentos específicos?

Ainda não em um nível detalhado. Você pode usar filtros de metadados para limitar quais documentos são pesquisados, mas permissões no nível do usuário não são suportadas no momento.

Quais são os limites de tamanho dos arquivos e do armazenamento?

Os arquivos individuais podem ter até cerca de 100 MB, e os níveis de armazenamento vão até aproximadamente 1 TB. Manter os armazenamentos abaixo de 20 GB geralmente garante uma recuperação mais rápida.

As citações são confiáveis?

A Pesquisa de Arquivos anexa metadados básicos mostrando quais partes do documento deram uma resposta. Essas citações melhoram a transparência, mas ainda assim devem ser revisadas para garantir sua precisão.

A Pesquisa de Arquivos usa recuperação por palavra-chave ou vetorial?

Ele usa uma busca semântica (baseada em vetores). Se você precisa de uma correspondência exata de palavras-chave, vai precisar de uma configuração de recuperação personalizada ou híbrida.


Bex Tuychiev's photo
Author
Bex Tuychiev
LinkedIn

Sou um criador de conteúdo de ciência de dados com mais de 2 anos de experiência e um dos maiores seguidores no Medium. Gosto de escrever artigos detalhados sobre IA e ML com um estilo um pouco sarcástico, porque você precisa fazer algo para torná-los um pouco menos monótonos. Produzi mais de 130 artigos e um curso DataCamp, e estou preparando outro. Meu conteúdo foi visto por mais de 5 milhões de pessoas, das quais 20 mil se tornaram seguidores no Medium e no LinkedIn. 

Tópicos

Cursos mais populares do DataCamp

Curso

Retrieval Augmented Generation (RAG) with LangChain

3 h
11.9K
Learn cutting-edge methods for integrating external data with LLMs using Retrieval Augmented Generation (RAG) with LangChain.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O que é Retrieval Augmented Generation (RAG)?

Saiba como o Retrieval Augmented Generation (RAG) aprimora grandes modelos de linguagem ao integrar fontes de dados externas.
Natassha Selvaraj's photo

Natassha Selvaraj

6 min

Tutorial

RAG With Llama 3.1 8B, Ollama e Langchain: Tutorial

Aprenda a criar um aplicativo RAG com o Llama 3.1 8B usando Ollama e Langchain, configurando o ambiente, processando documentos, criando embeddings e integrando um retriever.
Ryan Ong's photo

Ryan Ong

Tutorial

Como criar aplicativos LLM com o tutorial LangChain

Explore o potencial inexplorado dos modelos de linguagem grandes com o LangChain, uma estrutura Python de código aberto para criar aplicativos avançados de IA.
Moez Ali's photo

Moez Ali

Tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

cursor ai code editor

Tutorial

AI do cursor: Um guia com 10 exemplos práticos

Saiba como instalar o Cursor AI no Windows, macOS e Linux e descubra como usá-lo em 10 casos de uso diferentes.

Tutorial

Tutorial do Chroma DB: Um guia passo a passo

Com o Chroma DB, você pode gerenciar facilmente documentos de texto, converter texto em embeddings e fazer pesquisas de similaridade.
Abid Ali Awan's photo

Abid Ali Awan

Ver maisVer mais