Project Title: ChatGroq RAG Chatbot
Overview
ChatGroq is a Retrieval-Augmented Generation (RAG) chatbot leveraging Groq’s Mixtral model, LangChain, and FAISS to provide accurate, context-aware responses. This project was developed using Streamlit for an interactive UI and is designed to scrape and retrieve relevant information from LangSmith documentation.
Tech Stack
Implementation Details:-
import streamlit as st
import os
from langchain_groq import ChatGroq
from langchain_community.document_loaders import WebBaseLoader
from langchain.embeddings import OllamaEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate
from langchain_chains import create_retrieval_chain
from langchain_community.vectorstores import FAISS
import time
Set the API key
os.environ["GROQ_API_KEY"] = "your_groq_api_key_here"
if "vector" not in st.session_state:
st.session_state.embeddings = OllamaEmbeddings()
st.session_state.loader = WebBaseLoader("https://docs.smith.langchain.com/")
st.session_state.docs = st.session_state.loader.load()
st.session_state.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
st.session_state.final_documents = st.session_state.text_splitter.split_documents(st.session_state.docs[:50])
st.session_state.vectors = FAISS.from_documents(st.session_state.final_documents, st.session_state.embeddings)
st.title("ChatGroq Demo")
llm = ChatGroq(groq_api_key=os.environ.get("GROQ_API_KEY"), model_name="mixtral-8x7b-32768")
prompt = ChatPromptTemplate.from_template(
"""
Answer the questions based on the provided context only.
Please provide the most accurate response based on the question
<context>
{context}
<context>
Questions:{input}
"""
)
document_chain = create_stuff_documents_chain(llm, prompt)
retriever = st.session_state.vectors.as_retriever()
retrieval_chain = create_retrieval_chain(retriever, document_chain)
prompt = st.text_input("Input your prompt here")
if prompt:
start = time.process_time()
response = retrieval_chain.invoke({"input": prompt})
print("Response time:", time.process_time() - start)
st.write(response['answer'])
with st.expander("Document Similarity Search"):
for i, doc in enumerate(response["context"]):
st.write(doc.page_content)
st.write("--------------------------------")
Key Features
Potential Improvements
Impact
This project showcases a powerful application of Agentic AI by combining LLMs with retrieval mechanisms, making it suitable for various real-world applications such as customer support, research assistants, and knowledge management systems.
There are no datasets linked
There are no models linked
There are no models linked
There are no datasets linked