Pular para o conteúdo principal
PromptQuorumFeito para humanos. Estruturado para IA.
Início/LLMs locais avançados
RAG & Document Chat

Haystack da deepset: framework Python para RAG e busca em produção

·12 min de leituraPor Hans Kuepper · Fundador do PromptQuorum · Mecanismo de descoberta de IA de pesos abertos e código aberto

Haystack é um framework Python gratuito e de código aberto (Apache 2.0) da empresa alemã deepset, para construir pipelines de busca e RAG em produção a partir de blocos Component e Pipeline explícitos e tipados — não é um produto hospedado.

Principais conclusões

  • Licença Apache 2.0, gratuito para auto-hospedagem — pip install haystack-ai, código-fonte em github.com/deepset-ai/haystack
  • Desenvolvido pela deepset, empresa sediada na Alemanha, desde 2019, inicialmente como framework de resposta extrativa a perguntas e busca — antes de a geração aumentada por recuperação virar um termo comum
  • Dois blocos: Component (uma etapa de processamento: retriever, embedder, gerador, conversor) e Pipeline (um grafo conectado de components com chamadas .add_component() e .connect() explícitas)
  • Document Store é uma abstração de backend intercambiável — o Haystack traz um store em memória para testes e se integra com Elasticsearch, Weaviate, Pinecone e outros bancos vetoriais
  • O Hayhooks, ferramenta própria da deepset, implanta um pipeline do Haystack como servidor de API REST e MCP local, rodando sobre Uvicorn (padrão http://localhost:1416)
  • Independente de provedor de modelo: integra-se com OpenAI, Anthropic, Mistral, Cohere, Hugging Face, Google, Azure OpenAI e AWS Bedrock
  • A deepset também vende Haystack Enterprise Platform e Haystack Enterprise Starter — camadas comerciais com construtor visual de pipeline e implantação gerenciada sobre o mesmo núcleo open source

📍 Em uma frase

Haystack é o framework Python de código aberto (Apache 2.0) da deepset para construir pipelines de busca e RAG em produção a partir de abstrações explícitas e tipadas de Component e Pipeline, atualmente na versão 3.2.0.

💬 Em termos simples

Em vez de encadear chamadas de função como a maioria das bibliotecas de LLM, o Haystack exige conectar components nomeadas — um retriever, um construtor de prompt, um gerador — em um objeto Pipeline com chamadas .connect() explícitas, deixando o fluxo de dados visível e testável em vez de escondido dentro de uma cadeia.

📌Nota: O framework open source e os produtos comerciais da deepset são separados: esta análise cobre apenas o código gratuito e auto-hospedado sob Apache 2.0, salvo quando uma seção mencionar explicitamente "Enterprise Platform".

O Haystack é anterior ao termo "RAG" — a deepset o criou em 2019 como framework de resposta extrativa a perguntas, anos antes de a geração aumentada por recuperação virar a abordagem padrão para ancorar um LLM nos próprios documentos. Essa origem no mundo dos motores de busca ainda molda a arquitetura hoje: cada etapa é uma Component tipada, conectada em um Pipeline explícito — não uma cadeia de chamadas implícitas.

Haystack da deepset: framework Python para RAG e busca em produção

O que é o Haystack?

Haystack é um framework Python de código aberto (Apache 2.0, github.com/deepset-ai/haystack) para construir aplicações de busca, perguntas e respostas, e geração aumentada por recuperação (RAG). É mantido pela deepset, empresa sediada na Alemanha, e instalado via pip install haystack-ai.

  • Iniciado em 2019 como framework de resposta extrativa a perguntas — encontrar o trecho exato da resposta dentro de um documento — antes de os LLMs generativos tornarem o RAG o padrão dominante
  • Reescrito profundamente em torno do Haystack 2.0 rumo à arquitetura Component/Pipeline atual, agora na versão 3.2.0 (publicada em 24/09/2026)
  • Traz components para conversão de documentos (PDF, HTML, DOCX), divisão de texto, embedding, retrieval (por palavra-chave BM25 e vetorial/semântico), geração e avaliação
  • A abstração Document Store desacopla a lógica do pipeline do backend de armazenamento — trocar o store em memória por Elasticsearch, Weaviate ou Pinecone sem reescrever o pipeline
  • Traz um document store em memória pronto para uso em desenvolvimento local e testes, sem exigir banco de dados externo para começar
  • Suporta retrieval por palavra-chave (BM25) e vetorial/semântico no mesmo pipeline, além de retrieval híbrido combinando os dois

Como funciona a arquitetura Pipeline/Component do Haystack?

Uma Component é uma única etapa de processamento (um retriever, um embedder, um gerador), e um Pipeline é um grafo direcionado de components conectadas por chamadas explícitas .add_component() e .connect(), deixando o fluxo de dados entre etapas visível no código em vez de escondido em um objeto de cadeia.

  • Pipelines são serializáveis em YAML — um pipeline construído em Python pode ser salvo, versionado e recarregado sem reexecutar o código que o construiu
  • Ramificação e fusão são nativas do modelo de grafo — a saída de um retriever pode alimentar dois geradores diferentes, ou dois retrievers podem alimentar um ranker, sem código de ligação extra
  • Como as conexões são explícitas, um pipeline quebrado (tipos incompatíveis, conexão ausente) falha no momento de construir o pipeline com um erro claro, em vez de falhar em tempo de execução no fundo de uma pilha de chamadas

Component

Uma Component encapsula uma unidade de trabalho — recuperar documentos, gerar embeddings de texto, construir um prompt, chamar um LLM, converter um arquivo. Cada component declara entradas e saídas tipadas, então uma component que produz uma lista de objetos Document só pode se conectar a uma entrada que aceite esse tipo. Components personalizadas podem ser escritas herdando da classe base Component e definindo run().

Pipeline

Uma instância Pipeline contém as components e as conexões entre elas. pipeline.add_component("nome", instancia_component) registra cada etapa, e pipeline.connect("origem.saida", "destino.entrada") as conecta. Chamar pipeline.run(...) executa o grafo na ordem de dependências e retorna as saídas de cada component que não foi consumida adiante.

Qual é a diferença entre Haystack e LangChain/LlamaIndex?

Haystack, LangChain e LlamaIndex são frameworks Python code-first, sem construtor visual em seu núcleo open source — a diferença está na abstração central. O Haystack organiza tudo em torno de grafos Pipeline explícitos de Components tipadas; o LlamaIndex organiza em torno de um Index construído sobre seus dados, com objetos Retriever e QueryEngine por cima; o LangChain organiza em torno de chains e, em sua extensão LangGraph, um state graph para agentes.

O modelo Pipeline/Component do Haystack

Cada etapa — retrieval, prompting, geração — é uma Component nomeada conectada em um Pipeline por chamadas .connect() explícitas. Nada é implícito: se duas components não estiverem conectadas, nenhum dado flui entre elas. Isso torna os pipelines fáceis de inspecionar, testáveis component por component e serializáveis em YAML para controle de versão.

O modelo centrado em índice do LlamaIndex

O LlamaIndex se concentra em construir um Index (vetorial, de lista, de árvore ou por palavra-chave) sobre uma coleção de documentos, consultado depois por um Retriever e um QueryEngine. É otimizado para conveniência de ingestão e indexação de dados — poucas linhas indexam uma pasta de arquivos e já permitem consultá-la — com menos da conexão explícita passo a passo do Haystack.

O que isso significa na prática

O grafo explícito do Haystack costuma compensar em sistemas de produção onde é preciso saber exatamente o que roda, em que ordem, e substituir uma etapa (outro retriever, outro gerador) sem mexer no resto. A abstração de índice do LlamaIndex costuma ser mais rápida para prototipar quando a tarefa é "indexar estes dados e me deixar consultá-los".

Como construir um primeiro pipeline do Haystack?

Um pipeline RAG mínimo precisa de três components conectadas: um retriever, um construtor de prompt e um gerador, conectados em um objeto Pipeline e executados com uma consulta.

  1. 1
    Instalar o pacote: pip install haystack-ai.
  2. 2
    Importar as peças necessárias: from haystack import Pipeline, Document; from haystack.components.generators.chat import OpenAIChatGenerator; from haystack.components.retrievers import InMemoryBM25Retriever; from haystack.document_stores.in_memory import InMemoryDocumentStore; from haystack.components.builders import ChatPromptBuilder; from haystack.utils import Secret.
  3. 3
    Criar um document store e gravar documentos nele: document_store = InMemoryDocumentStore(), depois document_store.write_documents([Document(content="...")​, ...]).
  4. 4
    Criar as components: retriever = InMemoryBM25Retriever(document_store=document_store), prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*") e llm = OpenAIChatGenerator(api_key=Secret.from_env_var("OPENAI_API_KEY"), model="gpt-4o-mini").
  5. 5
    Montar o pipeline: rag_pipeline = Pipeline(), depois rag_pipeline.add_component("retriever", retriever), rag_pipeline.add_component("prompt_builder", prompt_builder) e rag_pipeline.add_component("llm", llm).
  6. 6
    Conectar as ligações: rag_pipeline.connect("retriever", "prompt_builder.documents") e rag_pipeline.connect("prompt_builder", "llm").
  7. 7
    Executar: results = rag_pipeline.run({"retriever": {"query": question}, "prompt_builder": {"question": question}}).
python
from haystack import Pipeline, Document
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.components.retrievers import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.builders import ChatPromptBuilder
from haystack.utils import Secret

document_store = InMemoryDocumentStore()
document_store.write_documents([
    Document(content="My name is Jean and I live in Paris."),
    Document(content="My name is Mark and I live in Berlin."),
    Document(content="My name is Giorgio and I live in Rome."),
])

retriever = InMemoryBM25Retriever(document_store=document_store)
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables="*")
llm = OpenAIChatGenerator(api_key=Secret.from_env_var("OPENAI_API_KEY"), model="gpt-4o-mini")

rag_pipeline = Pipeline()
rag_pipeline.add_component("retriever", retriever)
rag_pipeline.add_component("prompt_builder", prompt_builder)
rag_pipeline.add_component("llm", llm)
rag_pipeline.connect("retriever", "prompt_builder.documents")
rag_pipeline.connect("prompt_builder", "llm")

results = rag_pipeline.run({"retriever": {"query": question}, "prompt_builder": {"question": question}})

Preciso de uma chave de API da OpenAI para testar o Haystack?

O exemplo acima usa OpenAIChatGenerator, mas o Haystack também tem components geradoras para Hugging Face, Anthropic, Mistral, Cohere, Google, Azure OpenAI e AWS Bedrock, além de integrações com modelos locais — você não fica preso a um único provedor de modelo.

Preciso de um banco de dados vetorial para começar?

Não. O InMemoryDocumentStore não exige nenhum serviço externo e já é suficiente para construir e testar um pipeline localmente. Troque por Elasticsearch, Weaviate ou Pinecone só ao migrar para escala de produção.

Para quem o Haystack é indicado?

O Haystack encaixa em equipes que precisam de controle explícito sobre um pipeline de busca ou RAG em produção e estão confortáveis escrevendo Python — em seu núcleo open source, não é uma ferramenta no-code ou visual.

Use o Haystack se

  • Você está construindo um sistema de busca, perguntas e respostas ou RAG em produção onde a qualidade do retrieval precisa ser medida e ajustada, não apenas conectada
  • Você quer um grafo de pipeline explícito e inspecionável, testável component por component, em vez de uma cadeia implícita
  • Você precisa trocar retrievers, document stores ou provedores de modelo sem reescrever o resto do pipeline
  • Você está confortável com Python e quer um framework, não um produto hospedado — o Haystack é auto-hospedado, code-first e gratuito sob Apache 2.0

Evite o Haystack se

  • Você quer um construtor no-code ou visual como interface principal — o framework open source é code-first; uma camada visual só existe na Enterprise Platform paga da deepset
  • Sua tarefa é mais "indexar esta pasta de arquivos e me deixar consultá-la" com configuração mínima — a API centrada em índice do LlamaIndex costuma chegar mais rápido a uma primeira resposta para esse tipo específico de tarefa
  • Você precisa de um framework nativo JavaScript/TypeScript — o SDK open source do Haystack é somente Python
  • Você não tem interesse em métricas de qualidade de busca (BM25 vs. vetorial vs. híbrido, avaliação de retrieval) e só quer que um LLM responda perguntas sobre alguns documentos sem ajustes

Haystack vs. alternativas

Os três frameworks abaixo são open source, orientados a Python e com manutenção ativa — a escolha depende de qual abstração central combina com a forma como sua equipe quer raciocinar sobre um pipeline.

Ferramenta
Abstração central
Licença
Melhor para
HaystackPipeline de Components tipadasApache 2.0Busca em produção / RAG mensurável
LlamaIndexIndex + Retriever + QueryEngineMITIngestão e indexação rápidas
LangChainChains / state graph LangGraphMITCódigo de ligação de LLM e agentes generalista

Comparar no diretório

Erros comuns ao avaliar o Haystack

Esses erros vêm de tratar o Haystack como um produto SaaS hospedado, ou como um substituto direto da abstração de outro framework.

Erro 1: presumir que o Haystack é um produto hospedado

O framework open source (pip install haystack-ai) é código auto-hospedado, não um SaaS por assinatura. As ofertas comerciais da deepset — Haystack Enterprise Platform e Haystack Enterprise Starter — são camadas pagas separadas sobre o mesmo núcleo open source, não um requisito para usá-lo.

Erro 2: esperar a conveniência "indexar uma pasta em três linhas" do LlamaIndex

O modelo Pipeline/Component explícito do Haystack troca parte dessa conveniência de início rápido por visibilidade e controle. Se a tarefa é puramente "apontar para uma pasta e começar a consultar", espere mais configuração do que na API centrada em índice do LlamaIndex — o ganho aparece depois, quando é preciso trocar ou depurar uma etapa em produção.

Erro 3: ignorar a escolha do Document Store até a produção

O InMemoryDocumentStore é conveniente para desenvolvimento, mas não foi feito para escala ou persistência em produção. Decida o Document Store de produção (Elasticsearch, Weaviate, Pinecone ou outro backend suportado) cedo, já que o comportamento do retriever e a estratégia de indexação podem variar conforme o backend.

Perguntas frequentes

O que é o Haystack?

Haystack é um framework Python de código aberto da deepset, empresa sediada na Alemanha, para pipelines de busca, perguntas e respostas, e RAG. Tem licença Apache 2.0 e é instalado via pip install haystack-ai.

Quem desenvolve o Haystack?

A deepset, empresa sediada na Alemanha. A deepset iniciou o Haystack em 2019 como framework de resposta extrativa a perguntas, antes de a geração aumentada por recuperação virar um termo comum.

Sob qual licença o Haystack é publicado?

Apache License 2.0. O código-fonte está em github.com/deepset-ai/haystack e pode ser usado, modificado e auto-hospedado livremente.

Qual é a versão atual do Haystack?

Haystack 3.2.0, publicada em 24 de setembro de 2026. O framework foi profundamente reescrito em torno do Haystack 2.0 rumo à arquitetura Component/Pipeline atual.

Qual é a diferença entre uma Component e um Pipeline no Haystack?

Uma Component é uma única etapa de processamento — um retriever, um embedder, um construtor de prompt ou um gerador. Um Pipeline é um grafo de components conectadas por chamadas explícitas .add_component() e .connect(); executar o pipeline percorre o grafo na ordem de dependências.

Qual é a diferença entre Haystack e LlamaIndex?

O Haystack organiza pipelines em torno de Components explícitas e tipadas, conectadas em um grafo Pipeline. O LlamaIndex organiza em torno de construir um Index sobre seus dados e consultá-lo por um Retriever e um QueryEngine. O LlamaIndex costuma ser mais rápido para começar a indexar dados; o grafo explícito do Haystack oferece mais visibilidade e controle para pipelines em produção.

Qual é a diferença entre Haystack e LangChain?

Ambos são frameworks Python code-first sem construtor visual em seu núcleo open source. O LangChain gira em torno de chains e, via LangGraph, de um state graph para agentes. O Haystack gira em torno de um Pipeline de Components tipadas, tratando retrieval e busca como preocupações de primeira classe e mensuráveis, não como um elo de uma cadeia generalista.

O Haystack exige um banco de dados vetorial específico?

Não. O Haystack traz um Document Store em memória para desenvolvimento e se integra a vários bancos vetoriais e backends de busca, incluindo Elasticsearch, Weaviate e Pinecone, pela mesma interface Component — trocar de backend não exige reescrever o pipeline.

O que é a Haystack Enterprise Platform da deepset?

É a oferta comercial paga da deepset construída sobre o framework open source Haystack, adicionando um construtor visual de pipeline e opções de implantação gerenciada ou auto-hospedada. É separada do framework open source gratuito e auto-hospedado sob Apache 2.0 abordado nesta análise.

Fontes

← Voltar para LLMs locais avançados

MCP