Semântica é desejo, índice é fato
Importado@odus · 1 de mar., 21:59
Resumo da conversa
O PageIndex RAG sem vetores resolve os problemas de fragmentação semântica e falta de precisão do RAG vetorial ao abandonar a segmentação e retornar ao índice invertido, mas sacrifica a capacidade de correspondência semântica difusa e aumenta significativamente o consumo computacional e a latência. Portanto, a melhor prática atual é a recuperação híbrida de duas vias, combinando busca vetorial e por palavras-chave para equilibrar precisão e compreensão semântica.
Conversa
Me apresente o PageIndex, por que fazer RAG sem vetores?
Esta é uma questão muito inovadora que atinge o cerne do problema. A ascensão do PageIndex e do No-Vector RAG (RAG sem Vetores) é, na verdade, uma reflexão e correção das limitações do atual Vector RAG (RAG baseado em banco de dados vetoriais), que é mainstream.
Simplificando, PageIndex é uma tecnologia baseada em Índice Invertido (Inverted Index), que visa encontrar com precisão a "Página (Page)" relevante ou o contexto completo por meio da correspondência de palavras-chave, em vez de depender de uma busca vaga por fragmentos de vetores semânticos.
A seguir, vou detalhar o conceito de PageIndex e por que estamos começando a migrar ou combinar com o "RAG sem Vetores".
1. O que é PageIndex?
No Vector RAG tradicional, dividimos os documentos em pequenos pedaços (Chunks), os convertemos em vetores e depois pesquisamos vetores semelhantes.
No modo PageIndex, a lógica retorna à origem dos mecanismos de busca:
- Fase de Indexação: O sistema não segmenta nem vetoriza mais os documentos, mas sim cria um índice invertido global (semelhante ao índice no final de um livro). Ele registra em quais páginas (Pages) ou documentos cada palavra-chave (Keyword) aparece.
- Fase de Recuperação: Quando o usuário faz uma pergunta, o sistema extrai as palavras-chave da pergunta e, através do índice invertido, localiza diretamente as páginas completas que contêm essas palavras-chave.
- Fase de Geração: O sistema fornece ao LLM (Large Language Model) o conteúdo completo dessas páginas (em vez de Chunks fragmentados) como contexto, permitindo que o próprio LLM leia, compreenda e extraia a resposta.
Diferença central: O Vector RAG alimenta o LLM com "parágrafos picados"; o PageIndex alimenta o LLM com "páginas completas contendo as pistas".
2. Por que adotar o "RAG sem Vetores" (No-Vector RAG)?
Embora o Vector RAG seja popular, ele expõe três grandes pontos problemáticos na implementação prática, e o RAG sem Vetores visa exatamente resolvê-los:
A. Fragmentação Semântica Causada pela "Segmentação" (The Chunking Problem)
- Problema do Vector RAG: Para armazenar no banco de vetores, é necessário cortar documentos longos em blocos de 500-1000 palavras. Isso leva à perda de contexto. Por exemplo, a "cláusula de penalidade" de um contrato pode estar na página 5, mas o "valor da indenização" na página 10. A recuperação vetorial pode encontrar apenas o bloco da página 5, impedindo o LLM de responder a perguntas lógicas completas.
- Vantagem do No-Vector: O PageIndex recupera Páginas (Page) ou Documentos (Document). O LLM tem uma janela de contexto mais longa (tornando-se viável com modelos que suportam 128k/200k/1M tokens), permitindo entender relações lógicas entre parágrafos.
B. Correspondência Difusa vs. Correspondência Exata (Fuzziness vs. Precision)
- Problema do Vector RAG: A busca vetorial é uma busca difusa baseada em "similaridade semântica".
- Exemplo: Você pesquisa "código de erro 1024", e o vetor pode retornar conteúdo relacionado a "código de erro 1025", pois estão próximos no espaço matemático, mas para um programador isso está completamente errado.
- Falha em nomes próprios: Ao pesquisar números de SKU específicos, nomes ou palavras de frequência muito baixa, os vetores geralmente falham.
- Vantagem do No-Vector: O índice invertido é uma correspondência exata. Você pesquisa "1024", e ele retorna apenas as páginas que contêm "1024". Para áreas que exigem rigor, como direito, finanças e código, isso é crucial.
C. Falta de Explicabilidade e Custo de Manutenção (Black Box & Complexity)
- Problema do Vector RAG: O vetor é uma caixa-preta. Você não sabe por que o sistema considera A e B semelhantes. Além disso, manter um banco de dados vetoriais (Vector DB) de alto desempenho é caro, e atualizar o índice (inserir, deletar, modificar, consultar) é mais complexo do que em bancos de dados tradicionais.
- Vantagem do No-Vector: A recuperação baseada em palavras-chave é totalmente explicável ("Porque esta página contém estas três palavras de busca"). Além disso, a tecnologia de índice invertido (como Lucene, ElasticSearch) já é muito madura, barata e eficiente.
3. PageIndex vs. Vector RAG: Comparação Central
Para uma compreensão mais intuitiva, podemos comparar as duas arquiteturas:
| Característica | Vector RAG (Tradicional Mainstream) | No-Vector RAG / PageIndex |
|---|---|---|
| Unidade de Recuperação | Chunks (Fragmentos de Texto) | Páginas / Documentos Completos |
| Lógica de Correspondência | Similaridade Semântica (Cosseno) | Correspondência Exata de Palavras-chave (Exact Match / BM25) |
| Integridade do Contexto | Baixa (Propensa a tirar conclusões fora de contexto) | Alta (Preserva a lógica completa do contexto) |
| Cenários Adequados | Perguntas abertas, compreensão de intenção, consultas difusas | Consultas de dados exatos, análise de documentos longos, busca por nomes próprios |
| Tecnologias Dependentes | Modelo de Embedding + Banco de Vetores | Índice Invertido (ex.: ElasticSearch) + Contexto Longo do LLM |
| Custo Computacional | Indexação lenta, inferência requer cálculo de vetores | Indexação rápida, inferência consome principalmente Tokens do LLM |
4. Por que só agora está popular? (Contexto Técnico)
Você pode perguntar: "O índice invertido não é uma tecnologia de décadas? Por que só agora está sendo mencionado?"
Isso porque a janela de contexto (Context Window) dos LLMs aumentou.
- Antes (início de 2023): O LLM só conseguia ver 4k Tokens. Se você colocasse uma página inteira (talvez 2k Tokens), duas páginas já enchiam o limite. Portanto, era necessário segmentar (Vector RAG).
- Agora: Claude 3 suporta 200k, Gemini 1.5 Pro suporta 1M+ Tokens.
- Resultado: Não precisamos mais nos esforçar para "picar" o conhecimento. Precisamos apenas usar o PageIndex para localizar rapidamente até 10 páginas relevantes e, em seguida, jogar todas essas 10 páginas para o LLM, dizendo: "Leia dentro deste escopo e encontre a resposta para mim."
Esse modelo de "Recuperar Páginas -> LLM Lê Tudo" geralmente produz melhores resultados do que "Embedar Chunks -> Recuperar Chunks -> LLM Adivinha".
Resumo
Fazer RAG sem Vetores (PageIndex) não significa abandonar completamente os vetores, mas sim resolver os problemas de "falta de precisão" e "perda de contexto" da recuperação vetorial.
- Vector RAG é como um bibliotecário com boa intuição, que sabe mais ou menos quais livros são relevantes para sua pergunta, mas arranca apenas algumas páginas para você.
- PageIndex é como um sistema de indexação rigoroso, que abre todas as páginas que mencionam as palavras-chave e permite que você (o LLM) leia o capítulo inteiro.
A tendência futura é o Híbrido (Hybrid RAG): Primeiro, usar o PageIndex para garantir a cobertura de palavras-chave (precisão) e, em seguida, usar Vetores para complementar as omissões semânticas (generalização).
A seguir, gostaria que eu mostrasse um exemplo simples de código Python comparando a diferença entre a implementação real de "recuperação baseada em vetores" e "indexação baseada em palavras-chave"?
Como o RAG vetorial original era feito? Por que parece tão ruim? Como o texto longo era comprimido?
Esta é uma pergunta muito perspicaz. Você acha o Vector RAG "ruim" porque estávamos usando a precisão (ponto forte do PageIndex) para atacar a imprecisão (ponto fraco do Vector RAG).
Na verdade, o Vector RAG é a tecnologia mais mainstream atualmente. Ele não é "ruim", apenas sacrificou a "precisão" pela "generalidade".
Para responder sua pergunta, precisamos nos aprofundar na lógica subjacente do Vector RAG e ver como ele "comprime" e "desmembra" textos longos.
I. Como o Vector RAG original era feito? (Fluxo padrão)
A lógica central do Vector RAG é transformar texto em coordenadas matemáticas. Seu fluxo de trabalho geralmente tem quatro etapas:
- Fatiamento (Chunking):
-
Primeiro, um documento longo (por exemplo, um PDF de 100 páginas) é cortado em inúmeros pequenos parágrafos.
-
Por exemplo, a cada 500 palavras, um bloco.
-
Consequência: A lógica contínua original do artigo é interrompida à força.
- Vetorização (Embedding):
-
Usa-se um modelo (como o text-embedding-3 da OpenAI) para transformar essas 500 palavras em um conjunto de números (geralmente 1536 números de ponto flutuante).
-
Esse conjunto de números representa a "posição semântica" do texto.
- Armazenamento (Indexing):
- Esse conjunto de números é armazenado em um banco de dados vetorial (Vector DB).
- Recuperação (Retrieval):
-
Quando você faz uma pergunta, sua pergunta também é transformada em um conjunto de números.
-
O banco de dados calcula qual conjunto de números está mais próximo do conjunto da sua pergunta (similaridade de cosseno) e recupera esses trechos.
II. Como o texto longo era "comprimido"? (Princípio central)
Esta é a parte mais técnica da sua pergunta. Nesse processo, o texto é comprimido duas vezes, e é aí que ocorre a perda de informação.
1. Compressão física: Fatiamento (The Chunking)
Imagine que você está assistindo a um filme (texto longo). O editor corta a fita em inúmeros vídeos de 30 segundos (Chunks).
- Problema: Se uma fala ultrapassa o ponto de corte, por exemplo, a primeira metade está no bloco 1 e a segunda no bloco 2. Quando você recupera apenas o bloco 1, não sabe o que está sendo dito. Isso é perda de contexto.
2. Compressão semântica: Embedding (The Embedding)
Este é o passo mais abstrato. A chamada "vetorização" é, na verdade, uma compressão semântica extremamente com perdas.
-
Princípio: O modelo de Embedding lê as 500 palavras e tenta resumir o que elas dizem em 1536 dimensões (números).
-
Analogia: Suponha que você queira apresentar um amigo (texto longo) a alguém.
-
Apresentação completa (original): "Ele se chama João, gosta de comida apimentada, foi mordido por um cachorro quando criança e tem medo de cães, terminou um relacionamento recentemente..."
-
Vetorização (comprimido): [Altura: 180, Peso: 70kg, Sexo: Masculino, Índice emocional: 0.2]
-
Por que é "ruim"?
-
Essa compressão perde detalhes. Se sua pergunta é "O que aconteceu com João quando criança?", apenas olhar para o conjunto de números (altura, peso) não permite deduzir o detalhe "foi mordido por um cachorro".
-
O Embedding, na verdade, comprime um texto rico em um "tema vago". Ele lembra que "este parágrafo é sobre informações pessoais", mas pode esquecer o "número de telefone" específico.
III. Por que o Vector RAG parece tão "ruim"?
Não é que a tecnologia em si seja ruim, mas ela tem deficiências naturais ao lidar com tarefas intensivas em conhecimento, principalmente nos três pontos a seguir:
1. "Imprecisão" leva a "alucinação"
A busca vetorial é baseada em "similaridade".
-
Exemplo: Você pesquisa "bebida sem açúcar".
-
Resultado vetorial: Pode recomendar "bebida com açúcar".
-
Motivo: No espaço matemático, as palavras "com açúcar" e "sem açúcar" estão muito próximas (porque ambas falam sobre açúcar e bebidas). O vetor tem dificuldade em distinguir a palavra crucial "sem". O índice invertido (correspondência de palavras-chave) não comete esse erro, pois precisa corresponder exatamente à palavra "sem".
2. "Fatiamento" quebra a lógica
Muitos documentos complexos (como contratos legais, manuais técnicos) exigem compreensão entre parágrafos.
-
Cenário: A definição está na página 1, a execução específica na página 10.
-
Vector RAG: Pode recuperar as etapas de execução da página 10, mas como a página 1 foi cortada, o LLM não sabe o que significam os termos técnicos mencionados e começa a inventar.
3. "Caixa-preta" impede otimização
-
Quando um usuário faz uma pergunta e o banco vetorial recupera o fragmento errado, o desenvolvedor tem dificuldade em depurar.
-
Você não sabe por que esse conjunto de 1536 números foi considerado "semelhante" àquele outro. Isso torna o sistema difícil de otimizar.
Resumo: Por que ainda usamos Vector RAG?
Embora tenha muitas desvantagens, o Vector RAG tem uma vantagem que o PageIndex não consegue igualar: ele entende o subtexto da "linguagem humana".
-
Usuário: "Meu carro não pega."
-
Documento: "A bateria descarregada pode causar falha na partida do motor."
Nesse caso:
-
PageIndex (palavras-chave) pode falhar, porque o usuário não disse "bateria" nem "falha na partida".
-
Vector RAG (vetores) terá sucesso, porque sabe que "não pega" e "falha na partida" são semanticamente a mesma coisa.
Conclusão: O Vector RAG original parece "ruim" porque é uma "generalização vaga". Já o PageIndex é uma "localização precisa". A tendência atual é não comprimir mais o texto. Com LLMs capazes de ler 1 milhão de caracteres de uma vez, estamos cada vez mais inclinados a jogar o "texto original não comprimido" diretamente para o LLM, deixando o modelo mais inteligente ler por si só, em vez de depender do "intermediário que só calcula altura (modelo vetorial)".
Por que não fazer RAG após a segmentação semântica? Por que não fatiar os parágrafos em pedaços ainda menores?
Sua intuição é muito aguçada. Na verdade, "segmentação semântica (Semantic Chunking)" e "fatiar em granularidade ainda mais fina (Small-to-Big)" são exatamente as duas principais direções de otimização do RAG atualmente.
Ninguém "deixa de fazer" isso, mas cada uma traz novos efeitos colaterais.
É como cortar um bolo:
-
Corte de tamanho fixo (tradicional): Independentemente de tudo, corte a cada 5 cm. Simples e grosseiro, pode danificar o enfeite.
-
Corte semântico: Corte seguindo o enfeite. O resultado é bom, mas é lento e é difícil definir onde termina o "enfeite".
-
Corte mais fino: Corte em migalhas. Cada pedaço é comestível, mas você não sabe se aquela migalha pertencia ao morango de cima ou à base de baixo.
A seguir, detalho por que essas duas soluções não resolveram completamente o problema:
I. Por que não adotar amplamente a "segmentação semântica"?
A chamada segmentação semântica usa modelos de PLN para julgar se "este parágrafo terminou" e, se sim, corta, em vez de cortar rigidamente por número de palavras.
Embora pareça perfeita, há três grandes problemas na implementação prática:
- Lento e caro (Latência e Custo)
-
O corte tradicional por número de palavras é feito com uma linha de código em Python
text[0:500], levando 0,0001 segundo. -
A segmentação semântica exige que o modelo "leia" o artigo, calcule a similaridade entre frases adjacentes ou peça ao LLM para julgar "se aqui mudou de assunto". Processar um arquivo grande pode levar minutos ou mais. Para sistemas com requisitos de tempo real, isso é inaceitável.
- Os limites da "semântica" são extremamente difusos
-
Exemplo: Um parágrafo primeiro fala sobre "preço do produto" e em seguida sobre "política de reembolso".
-
Você corta quando o "preço" termina? Mas se cortar, quando o usuário perguntar "Qual o preço para reembolso deste produto?", o RAG fica perdido, porque "preço" está no bloco anterior e "reembolso" neste, a relação foi quebrada.
- Ainda não resolve a "dependência global"
-
Mesmo que você corte perfeitamente por parágrafo, este parágrafo ainda pode depender de uma definição páginas atrás.
-
Por exemplo, um parágrafo na página 10 diz: "De acordo com o acordo acima..."
-
A segmentação semântica garante que este parágrafo está completo, mas ainda não incluiu o "acordo acima" da página 1.
II. Por que não fatiar os parágrafos em pedaços ainda menores?
Você pode pensar: "Se fatiar grande inclui ruído, então fatio no nível da frase (Sentence Level). Quando encontrar uma frase, uso aquela frase. Não seria mais preciso?"
Isso envolve o paradoxo mais clássico da área de RAG: Granularidade de recuperação vs. Granularidade de compreensão.
Fatiar muito fino (por exemplo, por frase) leva aos seguintes problemas fatais:
1. Desastre dos pronomes (The Pronoun Problem)
-
Original: "Elon Musk fundou a SpaceX. Ela reduziu drasticamente o custo de lançamento de foguetes."
-
Após fatiamento (fino):
-
Bloco A: "Elon Musk fundou a SpaceX."
-
Bloco B: "Ela reduziu drasticamente o custo de lançamento de foguetes."
-
Busca: O usuário pergunta "O que reduziu o custo de lançamento?"
-
Resultado: O vetor encontra o bloco B.
-
Para o LLM: O LLM vê "Ela reduziu o custo". O LLM pergunta: "Quem é ela?"
-
Desfecho: Por fatiar muito fino, a relação de referência foi perdida. Esse fragmento se torna um dado inútil.
2. Baixa densidade semântica (Low Semantic Density)
-
A busca vetorial precisa que um trecho tenha "informação suficiente" para ser localizado com precisão.
-
Se for fatiado em frases curtas: "Sim, concordo." ou "Conforme disposto a seguir:".
-
Essas frases curtas geram vetores extremamente genéricos, sem características. Quando o usuário pesquisa, essas frases curtas aparecem como ruído em grande quantidade, ocupando o lugar de informações realmente úteis.
3. Fragmentos não montam o quadro completo
-
Suponha que a janela do LLM comporte 5 blocos.
-
Fatiamento grosso: Você vê 5 parágrafos completos e tem uma ideia geral do contexto.
-
Fatiamento muito fino: Você vê 5 frases isoladas. É como receber 5 peças de um quebra-cabeça e ter que adivinhar a imagem completa. Extremamente difícil.
III. Solução avançada atual: Parent-Child Indexing (Indexação Pai-Filho)
Para resolver os dois problemas que você levantou, a solução mais madura atualmente é chamada de "Small-to-Big" (recuperar pequeno, fornecer grande ao LLM).
É uma abordagem intermediária que combina as vantagens de "fatiar fino" e "não fragmentar":
- Fase de fatiamento:
-
Child Chunk (bloco filho): O documento é fatiado em frases ou pequenos parágrafos muito finos (por exemplo, 100 palavras). Usado para vetorização e recuperação. Como o bloco filho é semanticamente puro, a precisão da recuperação é alta.
-
Parent Chunk (bloco pai): Registra a qual parágrafo pai maior (por exemplo, 1000 palavras) ou até mesmo ao documento completo esse bloco filho pertence.
- Fase de recuperação:
- O sistema encontra o "bloco filho" por meio de vetores (por exemplo, a frase "Ela reduziu o custo").
- Fase de geração (passo crucial):
-
O sistema não fornece esse bloco filho ao LLM.
-
Em vez disso, o sistema encontra seu "pai" (Parent Chunk) por meio do ID e fornece ao LLM o parágrafo completo de 1000 palavras que contém o contexto.
Resumo:
-
Não usar segmentação semântica -> porque é muito lenta; em vez disso, usa-se fatiamento com sobreposição (Sliding Window) para compensar problemas de borda.
-
Não usar granularidade fina para geração -> porque sem contexto, não é compreensível.
Portanto, a tendência atual é: usar granularidade extremamente fina para "mirar" (indexação) e granularidade extremamente grossa para "ler" (geração). E o PageIndex é, na verdade, a forma final dessa lógica: mirar com palavras-chave e ler com o texto completo.
O RAG sem vetores resolveu esses problemas?
Esta é uma excelente pergunta de acompanhamento. A resposta simples é: Ele resolve de forma extremamente perfeita os problemas de "segmentação" e "contexto", mas também traz um novo defeito fatal.
O RAG sem Vetores (PageIndex) não é uma panaceia; ele é mais como uma estética da força bruta que "faz o oposto".
Podemos vê-lo como uma troca de "poder computacional por inteligência".
I. Quais problemas ele resolve completamente? (Ganhos)
O RAG sem Vetores, ao abandonar a "pré-segmentação" e usar diretamente a capacidade de contexto ultra-longo do LLM, arranca pela raiz os problemas crônicos mencionados anteriormente:
1. Cura completamente a "Fragmentação por Segmentação" (Solucionado: Fragmentation)
- Problema do Vector RAG: A segmentação corta no meio, perdendo a lógica entre parágrafos.
- Solução do RAG sem Vetores: Já que não se sabe onde cortar, simplesmente não corte.
- Ele joga diretamente para o LLM a página inteira, ou até o capítulo inteiro, que contém as palavras-chave.
- Efeito: Problemas como "referência pronominal ambígua" e "definição entre parágrafos" desaparecem instantaneamente. Isso porque o LLM vê o texto original coeso e consegue entender a quem "ele" se refere, qual é o "acordo mencionado acima".
2. Resolve o problema de "Precisão" (Solucionado: Precision)
- Problema do Vector RAG: Pesquisar "1024" retorna "1025"; pesquisar um nome próprio raro não encontra.
- Solução do RAG sem Vetores: Retorno ao índice invertido (lógica do Ctrl+F).
- Efeito: Apenas páginas que obrigatoriamente contêm a palavra "1024" serão encontradas. Para indicadores rígidos como números de contrato, SKU, códigos de erro, nomes próprios, a precisão sobe de 70% para 100%.
3. Resolve o problema de "Caixa-Preta e Manutenção" (Solucionado: Black Box)
- Problema do Vector RAG: O banco de vetores é uma caixa-preta; é difícil saber por que aquela frase sem sentido foi recuperada.
- Solução do RAG sem Vetores: Lógica transparente.
- Efeito: Por que esta página foi recuperada? Porque ela tem estas três palavras-chave. Se a recuperação estiver errada, é um problema na estratégia de extração de palavras-chave, que é muito fácil de corrigir.
II. Que novos problemas ele traz? (Perdas)
Tudo tem um custo. O RAG sem Vetores, na verdade, sacrifica a "compreensão semântica" para obter "contexto preciso". Isso leva a dois novos pontos problemáticos:
1. Perda do "Significado Implícito" (Perdido: Semantic Fuzziness)
Esta é a maior desvantagem do RAG sem Vetores.
- Cenário: O usuário pesquisa "Como economizar dinheiro?" O documento diz "Reduzir custos otimizando processos".
- Vector RAG: Consegue encontrar. Porque sabe que "economizar dinheiro" ≈ "reduzir custos".
- RAG sem Vetores: Não encontra. Porque o documento não contém as palavras "economizar dinheiro".
- Medida corretiva: É necessário usar o LLM para fazer "Expansão de Consulta (Query Expansion)" antes da busca, reescrevendo a pergunta do usuário em várias palavras-chave (economizar dinheiro -> reduzir custos, diminuir gastos, poupar), mas isso aumenta a complexidade e a latência.
2. Consumo de Poder Computacional e Dinheiro (Custo e Latência)
- Vector RAG: Fornece apenas 5 fragmentos ao LLM (cerca de 1000 Tokens). Barato, rápido.
- RAG sem Vetores: Pode fornecer 10 páginas completas ao LLM (cerca de 10.000 a 20.000 Tokens).
- Dinheiro: Sua fatura da API pode aumentar de 10 a 20 vezes.
- Lentidão: O tempo até o primeiro token (TTFT) é completamente diferente quando o LLM lê 20 mil palavras versus 1 mil palavras.
- Risco de Perda no Meio (Lost in the Middle): Embora os LLMs afirmem suportar 200k de contexto, experimentos mostram que, quando o contexto é muito longo, o LLM tende a ignorar as informações do meio, lembrando apenas do início e do fim.
III. O Árbitro Final: Onde ele realmente é bom?
Para te ajudar a ver a essência, usamos uma analogia de "prova com consulta":
| Modo | Cenário Analógico | Resultado |
|---|---|---|
| Vector RAG | Cola de flashcards: O professor não deixa você olhar o livro, só permite que, antes da prova, você pique o livro em pedaços e faça colas (Chunks). Na prova, você tenta adivinhar qual cola pegar baseado na pergunta. | Se a cola estiver mal feita, ou você adivinhar a cola errada, está ferrado. |
| RAG sem Vetores | Prova com livro aberto: O professor permite que você leve o livro inteiro. Você usa o sumário (índice) para ir rapidamente ao capítulo e lê do início ao fim para encontrar a resposta. | Você consegue entender a lógica completa, sem tirar conclusões fora de contexto. Mas a velocidade de folhear e ler é lenta, e é cansativo. |
IV. Qual é a Melhor Prática Atual?
Não há uma "substituição" de um pelo outro; a arquitetura mais forte agora é o Hybrid RAG (RAG Híbrido), que combina os pontos fortes:
- Recuperação de Dupla Via:
- Uma via usa Vetores para encontrar conteúdo "semanticamente relevante" (resolvendo o problema "economizar" vs. "reduzir custos").
- Outra via usa Palavras-chave para encontrar conteúdo de "correspondência exata" (resolvendo o problema do "número do contrato").
- Reclassificação (Rerank):
- Mistura o conteúdo recuperado das duas vias, usa um modelo refinado para pontuar e seleciona os melhores N resultados.
- Geração com Janela Ampla:
- Independentemente do método de recuperação usado, tente dar uma "janela de contexto" maior (por exemplo, se um trecho foi recuperado, forneça também os 2000 caracteres anteriores e posteriores ao LLM), aproveitando os modelos de texto longo agora baratos (como Gemini 1.5 Flash ou Claude Haiku) para a leitura.
Conclusão:
O RAG sem Vetores resolve os dois problemas de engenharia mais dolorosos: "contexto fragmentado" e "precisão", mas depende extremamente da capacidade de texto longo do LLM e da espessura da sua carteira.
A seguir, você gostaria de saber como é construída a arquitetura específica do "RAG Híbrido (Hybrid RAG)"? Ou gostaria de ver como otimizar os custos do RAG de texto longo?