RAG

Inicialmente el proyecto quería consultarlo desde la base datos con lenguaje natural, pero cambie de opinión porque quiero que sea una respuesta lo más acertada posible y decidí hacer una página web con el tabulador de infracciones para que lea y consulte la información desde un archivo html a este tipo de aplicaciones se le llama RAG la página se encuentra en la siguiente dirección https://tutosoftware.com/tutoriales/react/reglamento.html
Abrimos el IDE PyCharm y creamos el proyecto llamado AseroriaVial
Instalamos la siguientes bibliotecas
  • langchain
  • langchain-community
  • langchain-ollama
  • ollama
  • beautifulsoup4
  • html2text
  • Creamos el archivo rag.py y escribimos el siguiente código
     
      
        
        
    from langchain_community.document_loaders import WebBaseLoader
    from langchain_community.document_transformers import Html2TextTransformer
    from langchain_text_splitters import RecursiveCharacterTextSplitter
    from langchain_ollama import ChatOllama
    from langchain_core.prompts import ChatPromptTemplate
    from langchain_core.output_parsers import StrOutputParser
    
    urls = ["https://tutosoftware.com/tutoriales/react/reglamento.html"]
    
    loader = WebBaseLoader(urls)
    docs = loader.load()
    
    html2text_transformer = Html2TextTransformer()
    transformed_docs = html2text_transformer.transform_documents(docs)
    
    
    #print(transformed_docs[0].page_content[:5000])
    
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=5000, chunk_overlap=100)
    chunked_docs = text_splitter.split_documents(transformed_docs)
    
    llm = ChatOllama(model="llama3.1", temperature=0.2)
    
    prompt_template = ChatPromptTemplate.from_messages([
        ("system", "En que te puedo ayudar."),
        ("user", "Dime la multa por estacionarme en doble fila  {document}"),
    ])
    
    chain = prompt_template | llm | StrOutputParser()
    
    response = chain.invoke({"document": chunked_docs[0].page_content})
    print(response)
        
        
        
             
       
           
       

    Probando primero para probar tenemos que correr ollama con el siguiente comando ollama run llama3.1

    llm project
    Tarda en ejecutarse ya que mi máquina cuenta con 16gigas en ram pero tengo oracle y mysql instalados entre otros programas por eso tarda en responder. La respuesta fue la siguiente:
    llm project
    llm project