RAG-Chatbot-Interface / initialize.py
Logeswaransr's picture
Create initialize.py
1995a08 verified
raw
history blame
2.03 kB
from haystack import Document
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.components.builders import PromptBuilder
from haystack.components.generators.hugging_face_local import HuggingFaceLocalGenerator
from haystack.pipeline import Pipeline
def init_doc_store(path, files):
docs = []
for file in files:
with open(path + '/' + file, 'r') as f:
content = f.read()
docs.append(Document(content=content, meta={'name':file}))
document_store = InMemoryDocumentStore()
document_store.write_documents(docs)
return document_store
def define_components(document_store):
retriever = InMemoryBM25Retriever(document_store, top_k=3)
template = """
Given the following information, answer the question.
Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}
Question: {{question}}
Answer:
"""
prompt_builder = PromptBuilder(template=template)
generator = HuggingFaceLocalGenerator(model="gpt2",
task="text-generation",
# device='cuda',
generation_kwargs={
"max_new_tokens": 100,
"temperature": 0.9,
})
generator.warm_up()
return retreiver, prompt_builder, generator
def define_pipeline(retreiver, prompt_builder, generator):
basic_rag_pipeline = Pipeline()
basic_rag_pipeline.add_component("retriever", retriever)
basic_rag_pipeline.add_component("prompt_builder", prompt_builder)
basic_rag_pipeline.add_component("llm", generator)
basic_rag_pipeline.connect("retriever", "prompt_builder.documents")
basic_rag_pipeline.connect("prompt_builder", "llm")
return basic_rag_pipeline