Seif-aber
document q&a assistant with Gemini & RAG
355fe19
import streamlit as st
import os
from utils import load_data, get_gemini_embedding
def process_document(doc, question):
"""Process document and return response to question."""
temp_path = os.path.join("data", doc.name)
try:
with open(temp_path, "wb") as f:
f.write(doc.getbuffer())
documents = load_data("data")
query_engine = get_gemini_embedding(documents)
return query_engine.query(question)
finally:
if os.path.exists(temp_path):
os.remove(temp_path)
def main():
st.set_page_config(page_title="Document Q&A Assistant")
st.title("Smart Document Question-Answering")
# Create data directory if not exists
os.makedirs("data", exist_ok=True)
doc = st.file_uploader(
"Upload your document (PDF, CSV, or TXT)", type=["pdf", "csv", "txt"]
)
question = st.text_input(
"What would you like to know about your document?",
placeholder="Enter your question here...",
)
if st.button("Get Answer"):
if not doc:
st.error("Please upload a document first.")
return
if not question:
st.error("Please enter a question.")
return
with st.spinner("Analyzing your document..."):
response = process_document(doc, question)
st.write(response.response)
if __name__ == "__main__":
main()