Pash1986 commited on
Commit
b241b67
1 Parent(s): f2a37e9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -11
app.py CHANGED
@@ -34,23 +34,33 @@ try:
34
  Document(content="Victor, a retired astronaut in Houston, is contacted by an alien intelligence through a mysterious transmission. As he seeks to uncover the truth, he is drawn into an interstellar adventure that reveals the universe's greatest mysteries and humanity's place among the stars.")
35
  ]
36
 
 
37
  document_store = MongoDBAtlasDocumentStore(
38
- database_name="sample_mflix",
39
- collection_name="haystack_embedded_movies",
40
- vector_search_index="default",
41
  )
 
 
42
  doc_writer = DocumentWriter(document_store=document_store, policy=DuplicatePolicy.SKIP)
 
 
43
  doc_embedder = OpenAIDocumentEmbedder()
44
-
 
45
  indexing_pipe = Pipeline()
46
  indexing_pipe.add_component(instance=doc_embedder, name="doc_embedder")
47
  indexing_pipe.add_component(instance=doc_writer, name="doc_writer")
48
 
 
49
  indexing_pipe.connect("doc_embedder.documents", "doc_writer.documents")
 
 
50
  indexing_pipe.run({"doc_embedder": {"documents": documents}})
51
-
 
52
  prompt_template = """
53
- You are a movie recommendation engine use the following cotext documents.\nDocuments:
54
  {% for doc in documents %}
55
  {{ doc.content }}
56
  {% endfor %}
@@ -58,20 +68,28 @@ try:
58
  \Query: {{query}}
59
  \nAnswer:
60
  """
61
-
 
62
  rag_pipeline = Pipeline()
63
  rag_pipeline.add_component("text_embedder", OpenAITextEmbedder())
64
-
65
 
 
66
  rag_pipeline.add_component(instance=MongoDBAtlasEmbeddingRetriever(document_store=document_store,top_k=15), name="retriever")
 
 
67
  rag_pipeline.add_component(instance=PromptBuilder(template=prompt_template), name="prompt_builder")
 
 
68
  rag_pipeline.add_component(instance=OpenAIGenerator(), name="llm")
 
 
69
  rag_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
70
  rag_pipeline.connect("retriever", "prompt_builder.documents")
71
  rag_pipeline.connect("prompt_builder", "llm")
72
-
73
- except Exception as e:
74
- print("An error occurred: \n" + error_message)
 
75
 
76
 
77
  def get_movies(message, history):
 
34
  Document(content="Victor, a retired astronaut in Houston, is contacted by an alien intelligence through a mysterious transmission. As he seeks to uncover the truth, he is drawn into an interstellar adventure that reveals the universe's greatest mysteries and humanity's place among the stars.")
35
  ]
36
 
37
+ # Initializing a document store in MongoDB Atlas to store the narrative documents.
38
  document_store = MongoDBAtlasDocumentStore(
39
+ database_name="sample_mflix", # Specifies the database name.
40
+ collection_name="haystack_embedded_movies", # Specifies the collection name where documents will be stored.
41
+ vector_search_index="default", # The search index for vectorized content.
42
  )
43
+
44
+ # Setting up a document writer to handle the insertion of documents into the MongoDB collection.
45
  doc_writer = DocumentWriter(document_store=document_store, policy=DuplicatePolicy.SKIP)
46
+
47
+ # Initializing a document embedder to convert text content into vectorized form.
48
  doc_embedder = OpenAIDocumentEmbedder()
49
+
50
+ # Creating a pipeline for indexing documents. The pipeline includes embedding and writing documents.
51
  indexing_pipe = Pipeline()
52
  indexing_pipe.add_component(instance=doc_embedder, name="doc_embedder")
53
  indexing_pipe.add_component(instance=doc_writer, name="doc_writer")
54
 
55
+ # Connecting the components of the pipeline for document flow.
56
  indexing_pipe.connect("doc_embedder.documents", "doc_writer.documents")
57
+
58
+ # Running the pipeline with the list of documents to index them in MongoDB.
59
  indexing_pipe.run({"doc_embedder": {"documents": documents}})
60
+
61
+ # Template for generating prompts for a movie recommendation engine.
62
  prompt_template = """
63
+ You are a movie recommendation engine use the following context documents.\nDocuments:
64
  {% for doc in documents %}
65
  {{ doc.content }}
66
  {% endfor %}
 
68
  \Query: {{query}}
69
  \nAnswer:
70
  """
71
+
72
+ # Setting up a retrieval-augmented generation (RAG) pipeline for generating responses.
73
  rag_pipeline = Pipeline()
74
  rag_pipeline.add_component("text_embedder", OpenAITextEmbedder())
 
75
 
76
+ # Adding a component for retrieving related documents from MongoDB based on the query embedding.
77
  rag_pipeline.add_component(instance=MongoDBAtlasEmbeddingRetriever(document_store=document_store,top_k=15), name="retriever")
78
+
79
+ # Building prompts based on retrieved documents to be used for generating responses.
80
  rag_pipeline.add_component(instance=PromptBuilder(template=prompt_template), name="prompt_builder")
81
+
82
+ # Adding a language model generator to produce the final text output.
83
  rag_pipeline.add_component(instance=OpenAIGenerator(), name="llm")
84
+
85
+ # Connecting the components of the RAG pipeline to ensure proper data flow.
86
  rag_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
87
  rag_pipeline.connect("retriever", "prompt_builder.documents")
88
  rag_pipeline.connect("prompt_builder", "llm")
89
+
90
+ # Exception handling to catch and display errors during the pipeline execution.
91
+ except Exception as e:
92
+ print("An error occurred: \n" + error_message)
93
 
94
 
95
  def get_movies(message, history):