CoolFace
Apppublic

TRaw/grterm

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
app.py46 linesDownload Raw Back to root
1import gradio as gr2import bs43from langchain.text_splitter import RecursiveCharacterTextSplitter4from langchain_community.document_loaders import WebBaseLoader5from langchain_community.vectorstores import Chroma6from langchain_community.embeddings import OllamaEmbeddings7import ollama8 9# Function to load, split, and retrieve documents10def load_and_retrieve_docs(url):11    loader = WebBaseLoader(12        web_paths=(url,),13        bs_kwargs=dict() 14    )15    docs = loader.load()16    text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)17    splits = text_splitter.split_documents(docs)18    embeddings = OllamaEmbeddings(model="mistral")19    vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings)20    return vectorstore.as_retriever()21 22# Function to format documents23def format_docs(docs):24    return "\n\n".join(doc.page_content for doc in docs)25 26# Function that defines the RAG chain27def rag_chain(url, question):28    retriever = load_and_retrieve_docs(url)29    retrieved_docs = retriever.invoke(question)30    formatted_context = format_docs(retrieved_docs)31    formatted_prompt = f"Question: {question}\n\nContext: {formatted_context}"32    response = ollama.chat(model='mistral', messages=[{'role': 'user', 'content': formatted_prompt}])33    return response['message']['content']34 35# Gradio interface36iface = gr.Interface(37    fn=rag_chain,38    inputs=["text", "text"],39    outputs="text",40    title="RAG Chain Question Answering",41    description="Enter a URL and a query to get answers from the RAG chain."42)43 44# Launch the app45iface.launch()46