|
import streamlit as st |
|
import tempfile |
|
|
|
|
|
import chromadb |
|
from chromadb.config import Settings |
|
|
|
from rag import build_chroma_store, pre_processing_csv, ask_query |
|
from sentence_transformers import SentenceTransformer |
|
|
|
|
|
temp_dir = tempfile.TemporaryDirectory() |
|
|
|
@st.cache_resource |
|
def load_data(csv_path): |
|
"""Load and process data, caching the results.""" |
|
docs, metas = pre_processing_csv(csv_path) |
|
|
|
|
|
client = chromadb.Client(Settings( |
|
persist_directory=temp_dir.name |
|
)) |
|
|
|
collection, model = build_chroma_store(docs, metas, client=client) |
|
return collection, model |
|
|
|
|
|
csv_path = "shl_products.csv" |
|
collection, model = load_data(csv_path) |
|
|
|
|
|
st.title("π§ RAG Model Query Interface") |
|
st.write("Enter a query to get relevant SHL test assessments.") |
|
|
|
|
|
user_query = st.text_input("Enter your query:") |
|
|
|
if st.button("Submit"): |
|
if user_query: |
|
results = ask_query(user_query, model, collection) |
|
if results: |
|
st.write(f"π Results for query: {user_query}") |
|
st.write("=" * 80) |
|
for i, (doc, meta) in enumerate(results, 1): |
|
st.markdown(f"πΉ **Result {i}**") |
|
st.markdown(f"π§ͺ **Test Name:** {meta['Test Name']}") |
|
st.markdown(f"π **Link:** [https://www.shl.com{meta['Test Link']}]") |
|
st.markdown(f"π **Chunk:** {doc}") |
|
st.write("-" * 80) |
|
else: |
|
st.warning("No results found.") |
|
else: |
|
st.warning("Please enter a query.") |
|
|