buildfastwithai
GenAI Bootcamp
Daily GenAI Quiz
BuildFast Studio
Resources
buildfastwithai
BuildFast Bot
Ask to

BuildFast Bot

BuildFast Bot

Hey! Wanna know about Generative AI Crash Course?

BuildFastwithAI
satvik@buildfastwithai.com

Koramangala, Bengaluru, 560034

Support

  • Consulting
  • GenAI Course
  • BuildFast Studio

Company

  • Resources
  • Events

Legal

  • Privacy
  • Terms
  • Refund

Our Products

Educhain

Educhain

AI-powered education platform for teachers

BuildFast Studio

BuildFast Studio

The Indian version of CharacterAI but even more varieties.

LinkedInInstagramTwitterGitHub

© 2025 Intellify Edventures Private Limited All rights reserved.

Haystack: An Open-Source NLP Framework by deepset

December 19, 2024
5 min read
Published
Haystack: An Open-Source NLP Framework by deepset
Haystack: An Open-Source NLP Framework by deepset - BuildFast with AI

Tomorrow’s leaders are building AI today. Are you one of them?

Sign up for Gen AI Launch Pad 2024 and begin your journey to shaping the future. Be a builder, not a bystander.

Introduction to Haystack

Haystack is an open-source NLP framework designed for developers and researchers to build search systems, question-answering systems, and other language-based applications efficiently. Its modular architecture allows seamless integration of various NLP models and tools, making it ideal for a range of use cases, from information retrieval to conversational AI.

Key Features of Haystack:

  • Open-Source Flexibility: Access and customize the codebase to suit specific needs.
  • End-to-End Pipelines: Build pipelines that include document retrieval, question answering, and summarization.
  • Model Agnosticism: Integrate models from various platforms like Hugging Face, ONNX, or custom-trained ones.
  • Scalability: Supports scalable deployments with backends like Elasticsearch, OpenSearch, and FAISS.
  • Multi-Language Support: Process data in multiple languages, expanding the reach of your NLP applications.
  • Interactive Debugging: Utilize visualization tools and logs to debug and optimize pipeline performance effectively.

Haystack’s flexibility makes it suitable for both academic research and production-level applications. With support for dense embeddings and transformers, it is equipped for modern NLP challenges.

Setting Up Haystack

Before diving into practical applications, let’s set up Haystack and its dependencies.

Prerequisites

Ensure you have Python 3.7 or above installed along with tools like pip for managing Python packages. For this demonstration, install Haystack as follows:

!pip install farm-haystack[all]

The [all] tag installs all optional dependencies for advanced functionalities, including database and vector search backends. Additionally, you might need tools like Docker if you plan to use Elasticsearch or other external components.

Core Components of Haystack

Haystack’s modular structure revolves around the following key components:

1. Document Stores

A database layer that stores and retrieves documents for NLP tasks. Popular options include:

  • Elasticsearch: A distributed search engine.
  • FAISS: A vector database for dense embeddings.
  • SQL Databases: For lightweight storage needs.
  • Weaviate and Milvus: Advanced vector search engines for large-scale deployments.

Document stores can handle unstructured data, making it easier to process articles, research papers, or other text-heavy datasets.

Example:

from haystack.document_stores import InMemoryDocumentStore

document_store = InMemoryDocumentStore()

2. Retrievers

Retrieve relevant documents from the document store. Haystack supports:

  • SparseRetrievers: Traditional term-based methods (TF-IDF, BM25).
  • DenseRetrievers: Embedding-based techniques using vector similarity.

Sparse retrievers excel in traditional keyword search scenarios, while dense retrievers are suitable for semantic search.

Example:

from haystack.nodes import BM25Retriever

retriever = BM25Retriever(document_store=document_store)

3. Readers

Extract answers or summaries from retrieved documents. Most readers are based on Transformer models like BERT or RoBERTa.

Readers can extract short answers to questions or generate concise summaries for documents, enhancing the user experience.

Example:

from haystack.nodes import FARMReader

reader = FARMReader(model_name_or_path="deepset/roberta-base-squad2")

4. Pipelines

Orchestrate components to form end-to-end workflows. Haystack provides pre-built and customizable pipelines. These pipelines streamline the integration of document stores, retrievers, and readers into a cohesive application.

Example:

from haystack.pipelines import ExtractiveQAPipeline

pipeline = ExtractiveQAPipeline(reader, retriever)

Visualization of the Pipeline

Below is a high-level visualization of how a typical Haystack pipeline works:

Diagram:

Hands-On Example: Building a Question-Answering System

Let’s build a QA system step-by-step using Haystack:

Step 1: Initialize Document Store

We’ll use the in-memory document store for simplicity.

from haystack.document_stores import InMemoryDocumentStore

document_store = InMemoryDocumentStore()

Step 2: Add Documents

Add documents to the store for retrieval.

documents = [
    {"content": "Haystack is an NLP framework developed by deepset."},
    {"content": "It supports building pipelines for search and question answering."}
]
document_store.write_documents(documents)

Step 3: Configure Retriever

Use BM25 as the retriever.

from haystack.nodes import BM25Retriever

retriever = BM25Retriever(document_store=document_store)

Step 4: Initialize Reader

Use a pre-trained model for extracting answers.

from haystack.nodes import FARMReader

reader = FARMReader(model_name_or_path="deepset/roberta-base-squad2")

Step 5: Create Pipeline

Combine the retriever and reader into a pipeline.

from haystack.pipelines import ExtractiveQAPipeline

pipeline = ExtractiveQAPipeline(reader=reader, retriever=retriever)

Step 6: Ask Questions

Query the pipeline for answers.

result = pipeline.run(query="Who developed Haystack?", params={"Retriever": {"top_k": 10}, "Reader": {"top_k": 5}})
print(result)

Expected Output:

The system identifies relevant documents and extracts the answer:

{'answers': [{'answer': 'deepset', 'score': 0.95, ...}]}

Advanced Features

1. Semantic Search with Dense Embeddings

Enhance retrieval performance using dense retrievers with embedding models like Sentence Transformers or DPR (Dense Passage Retrieval).

Example:

from haystack.nodes import DensePassageRetriever

retriever = DensePassageRetriever(
    document_store=document_store,
    query_embedding_model="facebook/dpr-question_encoder-single-nq-base",
    passage_embedding_model="facebook/dpr-ctx_encoder-single-nq-base"
)
document_store.update_embeddings(retriever)

2. Querying a SQL Database with Natural Language

Haystack allows querying SQL databases using natural language by treating tables as documents.

Steps:

  1. Configure the SQL database as a document store.
  2. Use a retriever and reader to process user queries and fetch relevant results.
  3. Translate natural language queries into SQL.

Example:

from haystack.document_stores import SQLDocumentStore

sql_store = SQLDocumentStore(url="sqlite:///mydb.sqlite")
documents = [{"content": "Revenue in October was $50,000."}]
sql_store.write_documents(documents)

Conclusion

Haystack offers a powerful toolkit for building sophisticated NLP applications, whether you’re creating a semantic search engine, a QA system, or a document summarization tool. Its modularity, combined with support for state-of-the-art models, makes it an invaluable resource for developers and researchers alike.

By following this guide, you’ve seen how to set up and utilize Haystack to create a functional QA system. With its rich ecosystem and growing community, Haystack is poised to remain a cornerstone of open-source NLP innovation.

Ready to dive deeper? Explore the official documentation and take your NLP projects to the next level!

Resources

Here are some valuable resources to expand your knowledge and get hands-on experience with Haystack:

  • Official Haystack Documentation: Comprehensive guides and API references for using Haystack. Visit here
  • Haystack GitHub Repository: Access the source code, report issues, or contribute to the project. GitHub
  • DeepSet Blog: Insights, tutorials, and updates from the creators of Haystack. Read more
  • Haystack Build Fast with AI: NoteBook

---------------------------------

Stay Updated:- Follow Build Fast with AI pages for all the latest AI updates and resources.

Experts predict 2025 will be the defining year for Gen AI implementation.Want to be ahead of the curve?

Join Build Fast with AI’s Gen AI Launch Pad 2025 - your accelerated path to mastering AI tools and building revolutionary applications.