d221/Qdrant_Backend
0
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Oncology RAG App</title>
7 <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet">
8 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
9 <style>
10 body {
11 background-color: black;
12 font-family: 'Poppins', sans-serif;
13 color: white;
14 }
15 .chat-container {
16 max-width: 800px;
17 margin: 50px auto;
18 margin-top: 10%;
19 padding: 20px;
20 background-color: #333;
21 border-radius: 10px;
22 }
23 .chat-heading {
24 text-align: center;
25 font-size: 2.5em;
26 font-weight: 600;
27 margin-bottom: 30px;
28 color: #ffd700; /* Golden color for the heading */
29 }
30 .chat-input {
31 margin-top: 20px; /* Added margin */
32 margin-bottom: 20px;
33 height: 100px; /* Increased height */
34 }
35 .chat-button {
36 background-color: green;
37 color: white;
38 padding: 10px 20px;
39 font-size: 1.2em;
40 }
41 .chat-response {
42 background-color: #444;
43 padding: 15px;
44 border-radius: 5px;
45 min-height: 100px; /* Minimum height for the response box */
46 margin-top: 20px;
47 }
48 .accordion {
49 margin-top: 20px;
50 background-color: #444;
51 border-radius: 5px;
52 }
53 .accordion-button {
54 color: white;
55 background-color: #555;
56 }
57 .accordion-body {
58 color: white; /* Improved visibility of text */
59 }
60 pre {
61 white-space:pre-wrap;
62 }
63 </style>
64</head>
65<body>
66 <div class="container chat-container">
67 <h1 class="chat-heading">Medical RAG QA App</h1>
68
69 <div class="accordion" id="appDescriptionAccordion">
70 <div class="accordion-item">
71 <h2 class="accordion-header" id="descriptionHeading">
72 <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDescription" aria-expanded="true" aria-controls="collapseDescription">
73 About This App
74 </button>
75 </h2>
76 <div id="collapseDescription" class="accordion-collapse collapse" aria-labelledby="descriptionHeading" data-bs-parent="#appDescriptionAccordion">
77 <div class="accordion-body text-dark">
78 This is a RAG implementation using Open Source stack. Intel's Neural Chat has been used to build this app along with BGE Embeddings as an embedding model, Chroma DB as a vector store, and Langchain & CTransformers as an orchestration frameworks.
79 </div>
80 </div>
81 </div>
82 </div>
83
84 <div class="row">
85 <div class="col">
86 <textarea id="userInput" class="form-control chat-input" placeholder="Type your query here..."></textarea>
87 <button id="submitBtn" class="btn chat-button">Submit</button>
88 <div id="response" class="chat-response"></div>
89 </div>
90 </div>
91 </div>
92
93 <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
94 <script>
95 document.getElementById('submitBtn').addEventListener('click', async function() {
96 var userInput = document.getElementById('userInput').value;
97 document.getElementById('response').innerHTML = '<p>Processing...</p>';
98 const formData = new FormData();
99 formData.append('query', userInput);
100 try {
101 const response = await fetch('/get_response', {
102 method: 'POST',
103 body: formData
104 });
105
106 if (!response.ok) {
107 throw new Error('Network response was not ok');
108 }
109
110 const data = await response.json();
111 document.getElementById('response').innerHTML = `<p>${data.answer}</p><br><pre><b>Context: </b> ${data.source_document}</pre><br><pre><b>Source Document: </b> ${data.doc}</pre>`;
112 } catch (error) {
113 console.error('Error:', error);
114 document.getElementById('response').innerHTML = '<p>Error processing your request</p>';
115 }
116 });
117
118 </script>
119</body>
120</html>