Spaces:
Sleeping
Sleeping
File size: 1,868 Bytes
4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 625e3a9 4b72582 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import os
from groq import Groq
from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
import gradio as gr
# Initialize Groq
groq_client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
# Load documents and create vector DB
def load_documents_and_create_vectorstore():
docs = []
for file in ["documents/ASTM1.pdf", "documents/ASTM2.pdf"]:
loader = PyPDFLoader(file)
docs.extend(loader.load())
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
vectorstore = FAISS.from_documents(chunks, embeddings)
return vectorstore
# Load documents on startup
vectorstore = load_documents_and_create_vectorstore()
# RAG question answering function
def ask_question(question):
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
docs = retriever.get_relevant_documents(question)
context = "\n".join([doc.page_content for doc in docs])
prompt = f"""You are a helpful Civil Engineering assistant. Use the following ASTM standard context to answer:
Context:
{context}
Question: {question}
Answer:"""
completion = groq_client.chat.completions.create(
messages=[{"role": "user", "content": prompt}],
model="llama-3.3-70b-versatile"
)
return completion.choices[0].message.content
# Gradio UI
gr.Interface(
fn=ask_question,
inputs=gr.Textbox(label="Ask a Civil Engineering Question (based on ASTM)"),
outputs=gr.Textbox(label="Answer"),
title="Civil Engineering RAG Assistant",
description="Ask questions from uploaded ASTM PDFs"
).launch()
|