Skip to content

charlesdwright/charlie-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Recap of the Milestone Workflow:

  1. Initialize the retriever to access the vector store and fetch relevant documents.
  2. Set up an LLM (using Hugging Face models) to process the retrieved context and generate a response.
  3. Run queries that involve retrieving documents and using the LLM to answer questions based on those documents.

No need to re-run Steps 3.1 and 3.2 for every query, as long as the retriever and LLM setup remain unchanged.


Retriever Initialization (Step 3.1):

Once you initialize the retriever, which loads the vector store and prepares the embeddings for querying, you do not need to reinitialize it each time a query is made.

The retriever only needs to be initialized once when the program starts or when the vector store is updated. It pulls relevant documents based on the similarity of the query to the stored embeddings. As long as the vector store structure (e.g., Chroma) and its contents do not change, the retriever can be reused for subsequent queries without reinitialization.


LLM and Retrieval QA Chain Setup (Step 3.2):

Similarly, after setting up the RetrievalQA chain, which integrates the retriever with the LLM for answering queries, you can reuse the same setup for multiple queries. The LLM processes the documents retrieved by the retriever and generates answers based on that context.

Unless you change the model or switch to a different vector store, the LLM and RetrievalQA chain can remain initialized throughout the application's lifecycle. This allows you to avoid redundant setup work for each individual query.


When Do You Need to Re-run Steps 3.1 and 3.2?

There are a few cases where re-running Steps 3.1 and 3.2 would be necessary:

  • Modifying the Vector Store: If you update or change the documents in your vector store (e.g., adding new content or restructuring how the data is stored), you will need to reinitialize the retriever to accommodate these changes.
  • Changing the LLM: If you switch to a different Hugging Face model or alter the LLM configuration, you will need to reinitialize the RetrievalQA chain.
  • Configuration Changes: If you adjust any parameters in the retriever (such as similarity thresholds) or modify the LLM setup, the retriever and LLM may need to be re-initialized to reflect those changes.

Typical Workflow:

In normal operation, you only need to initialize the retriever (Step 3.1) and set up the LLM and RetrievalQA chain (Step 3.2) once, when the application starts or when changes are made to the system. After that, for each query (Step 3.3), you simply use the qa_chain.run(query) method to generate a response without the need to re-initialize the retriever or LLM setup.


Conclusion:

  • No, you do not need to re-run Steps 3.1 and 3.2 for every query.
  • Yes, re-running these steps is only required if you modify the vector store or change the LLM setup (e.g., switching models or updating the retriever configuration).

This allows for efficient querying, where the retriever and LLM setups are done once and can be reused for subsequent queries without unnecessary overhead.

🛠️ Running the Ingestion Pipeline

# Fresh run: load, chunk, embed
python ingest.py

# Debug logging enabled
python ingest.py --debug

# Resume from previously saved chunks
python ingest.py --from-disk

# Resume + debug logging
python ingest.py --from-disk --debug

About

useful nlp

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages