RAG Avançado: LongRAG, Self-RAG e GraphRAG Explicados
LongRAG, Self-RAG, GraphRAG - Técnicas de nova geração
Geração Aumentada por Recuperação (RAG) evoluiu muito além da simples busca por similaridade vetorial. LongRAG, Self-RAG e GraphRAG representam a fronteira das capacidades desses sistemas.
Os sistemas RAG modernos precisam lidar com documentos massivos, entender relações complexas entre entidades e muito mais.
Esta bela imagem é gerada pelo modelo de IA Flux 1 dev.
A Evolução Além do RAG Básico
Os sistemas RAG tradicionais seguem um padrão simples: fragmentar documentos, incorporá-los em vetores, recuperar trechos similares via similaridade cosseno e alimentá-los a um LLM. Embora eficaz para muitos casos de uso, essa abordagem tem dificuldades com três cenários críticos:
Compreender a distinção entre busca, busca profunda (deepsearch) e pesquisa aprofundada (deep research) ajuda a esclarecer por que variantes avançadas de RAG são necessárias para tarefas complexas de recuperação de informações. Para uma análise mais profunda desses conceitos, veja Busca vs Busca Profunda vs Pesquisa Aprofundada.
- Dependências de longo alcance: O contexto importante pode se estender por milhares de tokens entre vários fragmentos
- Confiança na recuperação: O sistema não tem maneira de avaliar se o conteúdo recuperado é realmente relevante
- Complexidade das relações: A similaridade vetorial não consegue capturar conexões intrincadas entre entidades
Variantes avançadas de RAG abordam essas limitações com arquiteturas especializadas adaptadas a desafios específicos.
LongRAG: Conquistando Contexto Estendido
Visão Geral da Arquitetura
O LongRAG repensa fundamentalmente a estratégia de fragmentação (chunking) aproveitando LLMs com janelas de contexto estendidas (32K, 100K ou até 1M tokens). Em vez de dividir documentos em pequenos fragmentos de 512 tokens, o LongRAG usa uma abordagem hierárquica:
Incorporação a nível de Documento: O documento inteiro (ou seções muito grandes) é processado como uma única unidade. Uma incorporação a nível de documento capta o significado semântico geral, mantendo o texto completo para processamento subsequente.
Fragmentação Mínima: Quando a fragmentação é necessária, o LongRAG usa fragmentos muito maiores (4K-8K tokens) com sobreposição significativa (20-30%). Isso preserva o fluxo narrativo e reduz a fragmentação do contexto.
Montagem de Contexto: No momento da recuperação, o LongRAG retorna documentos completos ou seções grandes e coerentes, em vez de fragmentos dispersos. O LLM recebe um contexto contínuo que preserva as relações estruturais e semânticas.
Estratégia de Implementação
Aqui está uma implementação conceitual usando Python e modelos de incorporação modernos:
from typing import List, Dict
import numpy as np
class LongRAGRetriever:
def __init__(self, model, chunk_size=8000, overlap=1600):
self.model = model
self.chunk_size = chunk_size
self.overlap = overlap
self.doc_embeddings = []
self.documents = []
def create_long_chunks(self, text: str) -> List[str]:
"""Create overlapping large chunks"""
chunks = []
start = 0
while start < len(text):
end = start + self.chunk_size
chunk = text[start:end]
chunks.append(chunk)
start += (self.chunk_size - self.overlap)
return chunks
def index_document(self, doc: str, metadata: Dict):
"""Index document with hierarchical embedding"""
# Embed entire document
doc_embedding = self.model.embed(doc)
# Create large chunks with overlap
chunks = self.create_long_chunks(doc)
chunk_embeddings = [self.model.embed(c) for c in chunks]
self.doc_embeddings.append({
'doc_id': len(self.documents),
'doc_embedding': doc_embedding,
'chunk_embeddings': chunk_embeddings,
'chunks': chunks,
'full_text': doc,
'metadata': metadata
})
self.documents.append(doc)
def retrieve(self, query: str, top_k: int = 3) -> List[Dict]:
"""Retrieve relevant long-form content"""
query_embedding = self.model.embed(query)
# Score at document level first
doc_scores = [
np.dot(query_embedding, doc['doc_embedding'])
for doc in self.doc_embeddings
]
# Get top documents
top_doc_indices = np.argsort(doc_scores)[-top_k:][::-1]
results = []
for idx in top_doc_indices:
doc_data = self.doc_embeddings[idx]
# For each document, find best chunks
chunk_scores = [
np.dot(query_embedding, emb)
for emb in doc_data['chunk_embeddings']
]
best_chunk_idx = np.argmax(chunk_scores)
# Return extended context around best chunk
context_chunks = self._get_extended_context(
doc_data['chunks'],
best_chunk_idx
)
results.append({
'text': ''.join(context_chunks),
'score': doc_scores[idx],
'metadata': doc_data['metadata']
})
return results
def _get_extended_context(self, chunks: List[str],
center_idx: int) -> List[str]:
"""Get extended context around relevant chunk"""
start = max(0, center_idx - 1)
end = min(len(chunks), center_idx + 2)
return chunks[start:end]
Casos de Uso e Desempenho
O LongRAG se destaca em cenários onde o contexto importa:
- Análise de documentos legais: Contratos e memoriais legais frequentemente têm dependências que se estendem por dezenas de páginas
- Recuperação de artigos de pesquisa: Compreender a metodologia requer seções coerentes, não parágrafos isolados
- Repositórios de código: Funções e classes devem ser compreendidas no contexto de seus módulos
Características de desempenho:
- Latência: Maior devido ao processamento de fragmentos grandes (2-5x mais lento que o RAG padrão)
- Precisão: Melhora de 15-25% em benchmarks de QA de longo formato
- Memória: Requer 3-4x mais memória para janelas de contexto
Self-RAG: Recuperação Reflexiva
Princípios Fundamentais
O Self-RAG introduz uma camada metacognitiva aos sistemas RAG. Em vez de recuperar e gerar cegamente, o sistema reflete ativamente sobre seus próprios processos por meio de tokens de reflexão especiais. Essa mesma ideia de auto-reflexão e recuperação iterativa reaparece no nível da aplicação em sistemas de Pesquisa Aprofundada (Deep Research) auto-hospedados — veja Sistemas de Pesquisa Aprofundada Auto-Hospedados: 12 Ferramentas Comparadas para como ferramentas como Local Deep Research e lukeswade/deep-research avaliam seus próprios gaps de evidência e decidem o que buscar a seguir:
Token de Recuperação: Decide se a recuperação é necessária para uma consulta dada Token de Relevância: Avalia se os documentos recuperados são realmente relevantes Token de Suporte: Verifica se a resposta gerada é suportada pelo conteúdo recuperado Token de Crítica: Avalia a qualidade geral da resposta gerada
Componentes da Arquitetura
A arquitetura do Self-RAG consiste em três fases intercaladas:
class SelfRAGSystem:
def __init__(self, retriever, generator, critic):
self.retriever = retriever
self.generator = generator
self.critic = critic
def generate_with_reflection(self, query: str,
max_iterations: int = 3):
"""Generate answer with self-reflection"""
# Phase 1: Decide if retrieval needed
retrieve_decision = self.critic.should_retrieve(query)
if not retrieve_decision:
# Direct generation without retrieval
return self.generator.generate(query)
# Phase 2: Retrieve and evaluate relevance
retrieved_docs = self.retriever.retrieve(query)
relevant_docs = []
for doc in retrieved_docs:
relevance_score = self.critic.assess_relevance(
query, doc
)
if relevance_score > 0.7: # Threshold
relevant_docs.append(doc)
if not relevant_docs:
# Fallback to generation without retrieval
return self.generator.generate(query)
# Phase 3: Generate and verify support
best_answer = None
best_score = -1
for _ in range(max_iterations):
# Generate candidate answer
answer = self.generator.generate(
query, context=relevant_docs
)
# Evaluate support and quality
support_score = self.critic.check_support(
answer, relevant_docs
)
quality_score = self.critic.assess_quality(answer)
total_score = 0.6 * support_score + 0.4 * quality_score
if total_score > best_score:
best_score = total_score
best_answer = answer
# Early stopping if high quality achieved
if total_score > 0.9:
break
return {
'answer': best_answer,
'confidence': best_score,
'sources': relevant_docs,
'reflections': {
'retrieved': retrieve_decision,
'relevance': len(relevant_docs),
'support': support_score
}
}
Treinamento dos Mecanismos de Reflexão
O Self-RAG requer o treinamento do componente crítico para fazer avaliações confiáveis. Isso geralmente envolve:
- Ajuste fino supervisionado em conjuntos de dados anotados com julgamentos de relevância
- Aprendizado por reforço com recompensas por previsões precisas
- Aprendizado contrastivo para distinguir afirmações suportadas vs. não suportadas
Os tokens de reflexão podem ser implementados como:
- Tokens especiais no vocabulário (como
[RETRIEVE],[RELEVANT]) - Cabeças de classificador separadas no modelo
- Modelos críticos externos (abordagem de ensemble)
Considerações de Produção
Ao implantar o Self-RAG em sistemas de produção:
Compromissos de Latência: Cada passo de reflexão adiciona 20-40% de sobrecarga de inferência. Equilibre a minúcia com os requisitos de tempo de resposta.
Limiares de Confiança: Ajuste os limiares de reflexão com base no seu caso de uso. Aplicações legais ou médicas precisam de maior confiança do que chatbots gerais.
Monitoramento: Rastreie decisões de reflexão para identificar padrões. Se a recuperação raramente for necessária, você pode se beneficiar de uma arquitetura mais simples.
GraphRAG: Recuperação Aprimorada por Grafos de Conhecimento
Fundação Conceitual
O GraphRAG transforma o problema de recuperação de similaridade vetorial para traversing de grafo. Em vez de encontrar trechos de texto semanticamente similares, o GraphRAG identifica subgrafos relevantes de entidades e relações conectadas.
Extração de Entidades: Identificar entidades nomeadas, conceitos e seus tipos Mapeamento de Relações: Extrair relações entre entidades (temporais, causais, hierárquicas) Construção do Grafo: Construir um grafo de conhecimento com entidades como nós e relações como arestas Recuperação de Subgrafo: Dada uma consulta, encontrar subgrafos conectados relevantes
Pipeline de Construção do Grafo
Construir um grafo de conhecimento a partir de texto não estruturado envolve várias etapas:
class GraphRAGBuilder:
def __init__(self, entity_extractor, relation_extractor):
self.entity_extractor = entity_extractor
self.relation_extractor = relation_extractor
self.graph = NetworkGraph()
def build_graph(self, documents: List[str]):
"""Build knowledge graph from documents"""
for doc in documents:
# Extract entities
entities = self.entity_extractor.extract(doc)
# Add entities as nodes
for entity in entities:
self.graph.add_node(
entity['text'],
entity_type=entity['type'],
context=entity['surrounding_text']
)
# Extract relationships
relations = self.relation_extractor.extract(
doc, entities
)
# Add relationships as edges
for rel in relations:
self.graph.add_edge(
rel['source'],
rel['target'],
relation_type=rel['type'],
confidence=rel['score'],
evidence=rel['text_span']
)
def enrich_graph(self):
"""Add derived relationships and metadata"""
# Compute node importance (PageRank, etc.)
self.graph.compute_centrality()
# Identify communities/clusters
self.graph.detect_communities()
# Add temporal ordering if timestamps available
self.graph.add_temporal_edges()
Processamento de Consultas com Grafos
Consultas do GraphRAG envolvem raciocínio multi-hop no grafo de conhecimento:
class GraphRAGRetriever:
def __init__(self, graph, embedder):
self.graph = graph
self.embedder = embedder
def retrieve_subgraph(self, query: str,
max_hops: int = 2,
max_nodes: int = 50):
"""Retrieve relevant subgraph for query"""
# Identify seed entities in query
query_entities = self.entity_extractor.extract(query)
# Find matching nodes in graph
seed_nodes = []
for entity in query_entities:
matches = self.graph.find_similar_nodes(
entity['text'],
similarity_threshold=0.85
)
seed_nodes.extend(matches)
# Expand subgraph via traversal
subgraph = self.graph.create_subgraph()
visited = set()
for seed in seed_nodes:
self._expand_from_node(
seed,
subgraph,
visited,
current_hop=0,
max_hops=max_hops
)
# Rank nodes by relevance
ranked_nodes = self._rank_subgraph_nodes(
subgraph, query
)
# Extract and format context
context = self._format_graph_context(
ranked_nodes[:max_nodes],
subgraph
)
return context
def _expand_from_node(self, node, subgraph, visited,
current_hop, max_hops):
"""Recursively expand subgraph"""
if current_hop >= max_hops or node in visited:
return
visited.add(node)
subgraph.add_node(node)
# Get neighbors
neighbors = self.graph.get_neighbors(node)
for neighbor, edge_data in neighbors:
# Add edge to subgraph
subgraph.add_edge(node, neighbor, edge_data)
# Recursively expand
self._expand_from_node(
neighbor,
subgraph,
visited,
current_hop + 1,
max_hops
)
def _format_graph_context(self, nodes, subgraph):
"""Convert subgraph to textual context"""
context_parts = []
for node in nodes:
# Add node context
context_parts.append(f"Entity: {node.text}")
context_parts.append(f"Type: {node.entity_type}")
# Add relationship information
edges = subgraph.get_edges(node)
for edge in edges:
context_parts.append(
f"- {edge.relation_type} -> {edge.target.text}"
)
return "\n".join(context_parts)
Implementação do GraphRAG da Microsoft
O GraphRAG da Microsoft adota uma abordagem única gerando resumos de comunidades:
- Construir o grafo inicial a partir de documentos usando extração de entidades/relações baseada em LLM
- Detectar comunidades usando o algoritmo de Leiden ou similar
- Gerar resumos para cada comunidade usando LLMs
- Estrutura hierárquica: Construir múltiplos níveis de abstrações de comunidades
- Tempo de consulta: Recuperar comunidades relevantes e traversar até entidades específicas
Essa abordagem é particularmente eficaz para:
- Consultas exploratórias (“Quais são os principais temas neste corpus?”)
- Raciocínio multi-hop (“Como A está conectado a C através de B?”)
- Análise temporal (“Como as relações desta entidade evoluíram?”)
Análise Comparativa
Quando Usar Cada Variante
Use LongRAG quando:
- Os documentos têm forte coerência interna
- As janelas de contexto do seu LLM suportam entradas grandes (32K+)
- As respostas às consultas requerem compreensão de dependências de longo alcance
- Você está trabalhando com documentos estruturados (relatórios, artigos, livros)
Use Self-RAG quando:
- A precisão e a confiabilidade são críticas
- Você precisa de decisões de recuperação explicáveis
- Falsos positivos da recuperação irrelevante são custosos
- A complexidade das consultas varia amplamente (algumas requerem recuperação, outras não)
Use GraphRAG quando:
- Seu domínio tem ricas relações entre entidades
- As consultas envolvem raciocínio multi-hop
- Relações temporais ou hierárquicas importam
- Você precisa entender conexões entre entidades
Comparação de Métricas de Desempenho
| Métrica | RAG Padrão | LongRAG | Self-RAG | GraphRAG |
|---|---|---|---|---|
| Tempo de Indexação | 1x | 0.8x | 1.1x | 3-5x |
| Latência de Consulta | 1x | 2-3x | 1.4x | 1.5-2x |
| Uso de Memória | 1x | 3-4x | 1.2x | 2-3x |
| Precisão (QA) | baseline | +15-25% | +20-30% | +25-40%* |
| Interpretabilidade | Baixa | Média | Alta | Alta |
*As melhorias do GraphRAG são altamente dependentes do domínio
Abordagens Híbridas
Os sistemas de produção mais poderosos frequentemente combinam múltiplas técnicas:
LongRAG + GraphRAG: Usar a estrutura do grafo para identificar clusters de documentos relevantes, recuperar documentos completos em vez de fragmentos
Self-RAG + GraphRAG: Aplicar mecanismos de reflexão às decisões de traversing de grafo (quais caminhos seguir, quando parar a expansão)
Pipeline de três etapas: Usar GraphRAG para recuperação inicial baseada em entidades → Self-RAG para filtragem de relevância → LongRAG para montagem de contexto
Considerações de Implementação
Modelos de Incorporação
Variantes diferentes de RAG têm requisitos diferentes de incorporação:
LongRAG: Necessita de incorporações que funcionem bem tanto a nível de documento quanto a nível de fragmento. Considere modelos treinados com aprendizado contrastivo em sequências longas.
Self-RAG: Beneficia-se de incorporações que captam nuances semânticas para avaliação fina de relevância.
GraphRAG: Requer incorporações conscientes de entidades. Modelos ajustados em tarefas de vínculo de entidades têm melhor desempenho.
A escolha do modelo de incorporação impacta significativamente o desempenho. Ao trabalhar com modelos locais, ferramentas como Ollama oferecem uma maneira direta de experimentar com diferentes modelos de incorporação antes de se comprometer com uma implantação de produção.
Estratégias de Fragmentação Revisitadas
A fragmentação de tamanho fixo tradicional é insuficiente para RAG avançado:
Fragmentação semântica: Dividir em fronteiras naturais (parágrafos, seções, mudanças de tópico) Fragmentação recursiva: Criar fragmentos hierárquicos com relações pai-filho Janela deslizante: Usar fragmentos sobrepostos para preservar contexto nas fronteiras Consciente da estrutura: Respeitar a estrutura do documento (cabeçalhos Markdown, tags XML, blocos de código)
Para implementações baseadas em Python, bibliotecas como LangChain e LlamaIndex oferecem suporte integrado para essas estratégias de fragmentação.
Integração de Resscoring
O resscoring melhora drasticamente a qualidade da recuperação em todas as variantes de RAG. Após a recuperação inicial, um modelo de resscoring especializado reavalia os resultados com base em características de interação consulta-documento. Isso proporciona um aumento significativo de precisão (10-20%) com impacto mínimo na latência quando integrado de forma ponderada.
Escala para Produção
Pipeline de indexação:
- Usar processamento distribuído (Ray, Dask) para grandes corpora de documentos
- Implementar indexação incremental para atualizações em tempo real
- Armazenar incorporações em bancos de dados vetoriais otimizados (Pinecone, Weaviate, Qdrant)
Otimização de consultas:
- Cache de consultas frequentes e seus resultados
- Implementar roteamento de consultas (variantes diferentes de RAG para diferentes tipos de consulta)
- Usar busca de vizinho mais próximo aproximada para escala sublinear
Monitoramento:
- Rastrear pontuações de relevância da recuperação
- Monitorar decisões de reflexão no Self-RAG
- Medir caminhos e profundidades de traversing de grafo
- Registrar pontuações de confiança e feedback do usuário
Aplicações do Mundo Real
Busca em Documentação Técnica
Um grande provedor de nuvem implementou GraphRAG para sua documentação:
- Entidades: Endpoints de API, parâmetros, códigos de erro, nomes de serviços
- Relações: Dependências, compatibilidades de versão, caminhos de migração
- Resultado: 35% de redução em tickets de suporte, 45% de resolução mais rápida
Descoberta Legal
Uma empresa de tecnologia legal combinou Self-RAG com LongRAG:
- Self-RAG filtra documentos irrelevantes precocemente
- LongRAG preserva contexto nos documentos retidos
- Advogados revisam 60% menos falsos positivos
- A preservação de contexto crítico melhorou de 71% para 94%
Revisão de Literatura de Pesquisa
Motor de busca acadêmico usando abordagem híbrida:
- GraphRAG identifica redes de citação e comunidades de pesquisa
- LongRAG recupera seções completas mantendo o contexto da metodologia
- 40% de melhoria na descoberta de artigos relevantes
- Redução do tempo para revisão de literatura de semanas para dias
Tópicos Avançados
RAG Multimodal
Estendendo essas variantes para lidar com imagens, tabelas e código:
- Fundamentação visual: Vincular entidades de texto a imagens em documentos
- Compreensão de tabelas: Analisar dados estruturados em formato de grafo
- Análise de código: Construir grafos de dependência a partir de bases de código
RAG Adaptativo
Seleção dinâmica da estratégia de RAG com base nas características da consulta:
- Classificador de complexidade de consulta
- Detector de tipo de documento
- Otimizador de custo-benefício para seleção de estratégia
RAG Preservador de Privacidade
Implementando essas variantes com restrições de privacidade:
- Recuperação federada entre silos de dados
- Privacidade diferencial em incorporações
- Busca de similaridade criptografada
Primeiros Passos
Início Rápido com Python
Para aqueles que desejam implementar essas técnicas, começar com uma base sólida em Python é essencial. O rico ecossistema de Python para aprendizado de máquina o torna a escolha natural para o desenvolvimento de RAG.
Aqui está um ponto de partida simples para experimentação:
# Install dependencies
# pip install sentence-transformers faiss-cpu langchain
from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
# Basic setup for experimenting with long chunks
model = SentenceTransformer('all-MiniLM-L6-v2')
documents = [
# Your long-form documents here
]
# Create embeddings
embeddings = model.encode(documents)
# Build FAISS index
dimension = embeddings.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(embeddings.astype('float32'))
# Query
query = "Your question here"
query_embedding = model.encode([query])
distances, indices = index.search(
query_embedding.astype('float32'), k=3
)
Seleção de Frameworks
LangChain: Melhor para prototipagem rápida, integrações extensas LlamaIndex: Otimizado para indexação e recuperação de documentos Haystack: Pronto para produção, fortes abstrações de pipeline Personalizado: Quando você precisa de controle total e otimização
Framework de Avaliação
Implementar avaliação rigorosa antes da implantação em produção:
Métricas de recuperação:
- Precision@K, Recall@K, MRR (Rank Recíproco Médio)
- NDCG (Ganho Cumulado Descontado Normalizado)
Métricas de geração:
- ROUGE, BLEU para similaridade de texto
- BERTScore para similaridade semântica
- Avaliação humana para avaliação de qualidade
Métricas ponta a ponta:
- Taxa de sucesso da tarefa
- Pontuações de satisfação do usuário
- Percentis de latência (p50, p95, p99)
Conclusão
A paisagem dos sistemas RAG amadureceu significativamente além da busca básica por similaridade vetorial. LongRAG, Self-RAG e GraphRAG abordam cada um limitações específicas das abordagens tradicionais:
LongRAG resolve o problema da fragmentação de contexto abraçando janelas de contexto estendidas e fragmentação mínima. É a escolha preferida quando a coerência do documento importa e você tem os recursos computacionais para lidar com grandes contextos.
Self-RAG adiciona autoconsciência crítica aos sistemas de recuperação. Ao refletir sobre suas próprias decisões, reduz falsos positivos e melhora a confiabilidade—essencial para aplicações de alto risco onde a precisão importa mais do que a velocidade.
GraphRAG desbloqueia o poder da representação estruturada de conhecimento. Quando seu domínio envolve relações complexas entre entidades, a recuperação baseada em grafos pode revelar conexões que a similaridade vetorial perde completamente. A pergunta mais profunda de como estruturar o conhecimento antes de ser recuperado — e por que a representação importa tanto quanto a recuperação — é explorada em Recuperação vs Representação em Sistemas de Conhecimento.
O futuro do RAG provavelmente envolve abordagens híbridas que combinam as forças dessas variantes. Um sistema de produção pode usar GraphRAG para identificar clusters de entidades relevantes, Self-RAG para filtrar e validar recuperações, e LongRAG para montar contexto coerente para o LLM.
À medida que os LLMs continuem a melhorar e as janelas de contexto se expandam, veremos variantes de RAG ainda mais sofisticadas surgirem. A chave é entender os requisitos específicos do seu caso de uso—estrutura do documento, padrões de consulta, demandas de precisão e restrições computacionais—e selecionar a técnica adequada ou combinação delas.
O ecossistema de ferramentas está amadurecendo rapidamente, com frameworks como LangChain, LlamaIndex e Haystack oferecendo suporte cada vez mais sofisticado para esses padrões avançados. Combinado com runtimes de LLM locais poderosos e modelos de incorporação, nunca foi tão fácil experimentar e implantar sistemas RAG de qualidade de produção.
Comece pelos básicos, meça o desempenho rigorosamente e evolua sua arquitetura conforme os requisitos determinarem. As variantes avançadas de RAG cobertas aqui fornecem um mapa da rota para essa evolução.
Links Úteis
- Resscoring com modelos de incorporação
- LLMs e Saída Estruturada: Ollama, Qwen3 & Python ou Go
- Provedores de LLM em Nuvem
- Comparação de LLMs: Qwen3:30b vs GPT-OSS:20b
- Tutorial passo a passo de RAG
- Comparação de fragmentação em RAG
- Comparação de bancos de dados vetoriais para RAG
Referências Externas
- Microsoft GraphRAG: Um Sistema Modular de Geração Aumentada por Recuperação Baseado em Grafos
- Self-RAG: Aprendendo a Recuperar, Gerar e Criticar através da Auto-Reflexão
- LongRAG: Aprimorando a Geração Aumentada por Recuperação com LLMs de Contexto Longo
- Geração Aumentada por Recuperação para Modelos de Linguagem Grandes: Uma Revisão
- FAISS: Uma Biblioteca para Busca Eficiente de Similaridade
- Documentação do LangChain: Técnicas Avançadas de RAG
- HuggingFace: Sentence Transformers para Modelos de Incorporação
- Revisão de RAG: Uma Análise Abrangente da Geração Aumentada por Recuperação