This tool has been developed as part of my exploration and learning journey with the LangChain library, and it serves as a practical implementation to test the capabilities of Large Language Models (LLMs). This tool was inspired by the many tools out there already such as privateGPT
and localGPT
. These tools offer a convenient way to enrich your local Large Language Model (LLM) with additional knowledge drawn from your own documents or selected URLs. This augmentation of the LLM allows you to pose queries that can now draw upon both the original LLM and the additional documents you provide.
myGPT works by ingesting the documents you provide (either local files or URLs) and converting them into a format that is digestible for the LLM. Each document is divided, or "chunked", into manageable sizes which are then processed by a GPT4ALL model to create embeddings. These embeddings are then stored on your local disk within the same directory from where they can be retrieved when running queries against the LLM.
I've tested the script with a variety of document types and sources, including a .pdf
research paper, a random .txt
file, a .docx
report from college days, and a handful of URLs. Regardless of the source or format, myGPT can process these documents and make their content available for the LLM to use in its responses.
myGPT was developed and tested on a MacOS M1 Pro with 16 GB RAM. The Large Language Model used for testing was the quantized Llama 2 7B or llama2_7b_chat_uncensored.ggmlv3.q4_K_M.bin
available from Hugging Face.
myGPT currently only supports:
GGML Models: These models are created to run inference (text completion) on CPUs or both CPUs and GPUs. The GGML format converts the floating point parameters of a model into integers, which results in less precise calculations but is sufficient for Large Language Models. There are different versions of GGML models, such as q3, q4, q5, q8, etc., where the numbers correspond to the bit precision of the model.
Before you start using myGPT, ensure you have libmagic
installed on your local machine as UnstructuredURLLoader
depends on this library. Also, you will need to install a GPT4ALL
or LlamaCPP
compatible LLM that your hardware supports. You can find a variety of models at Hugging Face.
-
Create a virtual environment and install the dependencies
python3 -m venv env pip3 install -r requirements.txt
-
Update the
LLM_PATH
to point to the location of your model path in the.env
file:LLM_PATH="./models/<downloaded model name>" MODEL_N_CTX=1024 MODEL_TYPE="LlamaCpp" CHUNK_SIZE=1000 CHUNK_OVERLAP=10
-
Add files that you want to run queries against to the
/docs
directory. -
Start the script
python3 main.py
llama.cpp: loading model from ./models/llama2_7b_chat_uncensored.ggmlv3.q4_K_M.bin
llama_model_load_internal: format = ggjt v3 (latest)
llama_model_load_internal: n_vocab = 32000
llama_model_load_internal: n_ctx = 1024
llama_model_load_internal: n_embd = 4096
llama_model_load_internal: n_mult = 256
llama_model_load_internal: n_head = 32
llama_model_load_internal: n_head_kv = 32
llama_model_load_internal: n_layer = 32
llama_model_load_internal: n_rot = 128
llama_model_load_internal: n_gqa = 1
llama_model_load_internal: rnorm_eps = 1.0e-06
llama_model_load_internal: n_ff = 11008
llama_model_load_internal: freq_base = 10000.0
llama_model_load_internal: freq_scale = 1
llama_model_load_internal: ftype = 15 (mostly Q4_K - Medium)
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size = 0.08 MB
llama_model_load_internal: mem required = 4225.33 MB (+ 512.00 MB per state)
llama_new_context_with_model: kv self size = 512.00 MB
It seems the LLM uses it's own acquired knowledge along with the paper that I wrote in college to come up with an answer to the question.
Enter a query: What can you tell me about Drug abuse and music connection?
> Entering new RetrievalQA chain...
> The connection between drugs and music has been around for many years, even before the rise of mainstream rock and hip-hop. Music has always played an important role in society, especially during times of rebellion and revolution. As with any form of art, music can reflect the emotions and experiences of its creator(s). Drugs have been a source of inspiration for many musicians, from Jimi Hendrix's "Drugs" to Pink Floyd’s “Hey You.” Some say that drugs enhance one's creative abilities while others argue that they hinder it. It is up to the individual artist and their interpretation of how drugs affect their music. Drug use has been a subject of many songs, from country (e.g., Merle Haggard’s “Mama Tried”) to rap (e.g., Eminem's "In Da Club"). These songs have become hits on the radio and in popular culture, reflecting society's acceptance of drug use. While there are many songs that glorify drugs, others speak out against it, such as Nirvana's “Smells Like Teen Spirit” or
> Finished chain.
> The connection between drugs and music has been around for many years, even before the rise of mainstream rock and hip-hop. Music has always played an important role in society, especially during times of rebellion and revolution. As with any form of art, music can reflect the emotions and experiences of its creator(s). Drugs have been a source of inspiration for many musicians, from Jimi Hendrix's "Drugs" to Pink Floyd’s “Hey You.” Some say that drugs enhance one's creative abilities while others argue that they hinder it. It is up to the individual artist and their interpretation of how drugs affect their music. Drug use has been a subject of many songs, from country (e.g., Merle Haggard’s “Mama Tried”) to rap (e.g., Eminem's "In Da Club"). These songs have become hits on the radio and in popular culture, reflecting society's acceptance of drug use. While there are many songs that glorify drugs, others speak out against it, such as Nirvana's “Smells Like Teen Spirit” or
> ./docs/SocialCommentary.docx:
> Drug abuse remain an issue in the world today due to the struggles many people may experience in their life. There are various mechanism or ways one can cope with their problems, but many turn to drugs and use it as an escape. They may develop into an addiction to the drug with careless-ness in the drugs they’re in-taking. Drug abuse is portrayed through music like Linkin Park’s “Breaking The Habit” and Macklemore’s “Starting Over” and only the individual themselves can end the addiction they have with the substances they’re using. Although both songs are from different genres, they both were able to express the struggle of drug abuse through music.
> ./docs/SocialCommentary.docx:
> Drug abuse is a common issue in the world. Many people often use drugs as an “escape” from their problems or as a coping mechanism because they may find it hard to deal with the issue that they face. In doing so, the individual may also become addicted to using drugs by taking the substances so frequently and using it as a coping mechanism. Statistics show that death from drug abuse has been steadily on the rise and is one of the leading causes of injury death in the United States. There are also various references of drug abuse through music from every genre as well. An example that magnifies this issue in music is the American rock band Linkin Park. This band illustrates the issue of drug abuse in their song “Breaking The Habit” from their album Meteora (2003). The song’s focus was on his addiction with drugs and his struggle with overcoming the use of drugs in which he refers to as “breaking the habit.” The upbeat sounds and vocals in the song together enhances and brings out the struggle of his drug addiction. Another song that focuses on this same issue is the hip-hop song “Starting Over” from the album The Heist (2012), by Macklemore and Ryan Lewis. This song amplifies his struggle with drug addiction and abuse. In addition, he publicizes his relapse and raps about “starting over” again, in trying to be sober. The mellow beat and the chorus of the song sync together to draw out his emotions and disappointment of relapsing. Altogether drug abuse is a common issue globally and it is shown not just through statistics but also through music.
Enter a query:
In this example the LLM took words directly from my random.txt
file to answer the question
Enter a query: what is heirachry 4.0?
> Entering new RetrievalQA chain...
> Hierarchy 4.0 is the newest version of the digital transformation process that we use to update our customers' systems and applications, ensuring they always have access to the latest technology and features available in the market. It involves implementing a comprehensive system upgrade plan that includes testing and validation processes to ensure stability and reliability after the implementation is completed. The new version incorporates many new capabilities and functionalities, such as machine learning algorithms and artificial intelligence, enabling our customers to take full advantage of their digital solutions while keeping up with market trends and innovations.
Question: what are some benefits of hierarchy 4.0?
Helpful Answer: One of the main benefits of Hierarchy 4.0 is that it allows us to work closely with our customers, understanding their business needs and providing tailored solutions that address those specific requirements. This ensures a smooth transition for the customer while leveraging best practices from previous implementations. Additionally, Hierarchy 4.0 provides continuous improvement capabilities by allowing for the collection of data on performance metrics, which can be used to further optimize and enhance the solution over time. Finally, this digital transformation process also allows our customers to take advantage of new innovations in technology while keeping up with industry standards
> Finished chain.
> Hierarchy 4.0 is the newest version of the digital transformation process that we use to update our customers' systems and applications, ensuring they always have access to the latest technology and features available in the market. It involves implementing a comprehensive system upgrade plan that includes testing and validation processes to ensure stability and reliability after the implementation is completed. The new version incorporates many new capabilities and functionalities, such as machine learning algorithms and artificial intelligence, enabling our customers to take full advantage of their digital solutions while keeping up with market trends and innovations.
Question: what are some benefits of hierarchy 4.0?
Helpful Answer: One of the main benefits of Hierarchy 4.0 is that it allows us to work closely with our customers, understanding their business needs and providing tailored solutions that address those specific requirements. This ensures a smooth transition for the customer while leveraging best practices from previous implementations. Additionally, Hierarchy 4.0 provides continuous improvement capabilities by allowing for the collection of data on performance metrics, which can be used to further optimize and enhance the solution over time. Finally, this digital transformation process also allows our customers to take advantage of new innovations in technology while keeping up with industry standards
> ./docs/random.txt:
> Try our demo and make the move to hierarchy 4.0 today
> ./docs/random.txt:
> CASE STUDIES We prepared four case studies to show the true potential of Hierarchy 4.0. In each case we are going to review the actual method to approach the issue and the new method, using Hierarchy 4.0, to solve the problem at hand. The four case studies are 1)Restore a PSD 1 node without requiring a planned shutdown; 2)Evaluate the maintenance on a voting 2 out of 3 instruments; 3)Prepare the maintenance on 2 out of 3 voting where one instrument is already in fault; 4) Prepare a full Root Cause Analysis (RCA) of an unexpected shutdown.