Metadata-Version: 2.1
Name: needle-haystack-ai
Version: 0.1.0
Summary: Needle RAG tools for Haystack
License: MIT
Keywords: needle,api,retrieval-augmented generation,rag,information-retrieval,artificial intelligence,ai
Author: Onur Eken
Author-email: m.onureken@gmail.com
Requires-Python: >=3.9,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: haystack-ai (>=2.4.0,<3.0.0)
Requires-Dist: needle-python (>=0.3.0,<0.4.0)
Project-URL: documentation, https://docs.needle-ai.com
Project-URL: homepage, https://needle-ai.com
Project-URL: issues, https://github.com/JANHMS/needle-haystack/issues
Project-URL: repository, https://github.com/JANHMS/needle-haystack
Description-Content-Type: text/markdown

# Needle RAG tools for Haystack

[![PyPI - Version](https://img.shields.io/pypi/v/needle-haystack.svg)](https://pypi.org/project/needle-haystack)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/needle-haystack.svg)](https://pypi.org/project/needle-haystack)

This package provides `NeedleDocumentStore` and `NeedleEmbeddingRetriever` component for use in Haystack projects.

## Usage ⚡️

Get started by installing the package via `pip`.

```bash
pip install needle-haystack
```

### API Keys

We will show you building a common RAG pipeline using Needle tools and OpenAI generator.
For using these tools you must set your environment variables, `NEEDLE_API_KEY` and `OPENAI_API_KEY` respectively.

You can get your Needle API key from from [Developer settings](https://needle-ai.com/dashboard/settings).

### Example Pipeline 🧱

In Needle document stores are called collections. For detailed information, see our [docs](https://docs.needle-ai.com).
You can create a reference to your Needle collection using `NeedleDocumentStore` and use `NeedleEmbeddingRetriever` to retrieve documents from it.

```python
from needle_haystack import NeedleDocumentStore, NeedleEmbeddingRetriever

document_store = NeedleDocumentStore(collection_id="<your-collection-id>")
retriever = NeedleEmbeddingRetriever(document_store=document_store)
```

Use the retriever in a Haystack pipeline. Example:

```python
from haystack import Pipeline
from haystack.components.generators import OpenAIGenerator
from haystack.components.builders import PromptBuilder

prompt_template = """
Given the following retrieved documents, generate a concise and informative answer to the query:

Query: {{query}}
Documents:
{% for doc in documents %}
    {{ doc.content }}
{% endfor %}

Answer:
"""

prompt_builder = PromptBuilder(template=prompt_template)
llm = OpenAIGenerator()

# Add components to pipeline
pipeline = Pipeline()
pipeline.add_component("retriever", retriever)
pipeline.add_component("prompt_builder", prompt_builder)
pipeline.add_component("llm", llm)

# Connect the components
pipeline.connect("retriever", "prompt_builder.documents")
pipeline.connect("prompt_builder", "llm")
```

Run your RAG pipeline:

```python
prompt = "What is the topic of the news?"

result = basic_rag_pipeline.run({
    "retriever": {"text": prompt},
    "prompt_builder": {"query": prompt}
})

# Print final answer
print(result['llm']['replies'][0])
```

# Support 📞

For detailed guides, take a look at our [docs](https://docs.needle-ai.com). If you have questions or requests you can contact us in our [Discord channel](https://discord.gg/JzJcHgTyZx). 

# License

`needle-haystack` is distributed under the terms of the MIT license.

