nutrimate-ai-chatbot / rag_with_palm.py
dulnethbuilds's picture
Upload 14 files
e756020 verified
raw history blame
No virus
1.46 kB
from llama_index import SimpleDirectoryReader, VectorStoreIndex
from llama_index.embeddings import HuggingFaceEmbedding
from llama_index.llms.palm import PaLM
from llama_index import ServiceContext
from llama_index import StorageContext
import os
class RAGPaLMQuery:
def __init__(self):
# Create a folder for data if it doesn't exist
if not os.path.exists("data"):
os.makedirs("data")
# Load documents from the data folder
self.documents = SimpleDirectoryReader("./data").load_data()
# Set up API key for PaLM
os.environ['GOOGLE_API_KEY'] = 'AIzaSyArwk-niWs169xz6YcIv96BwwMXGhq62YE'
# Initialize PaLM and Hugging Face embedding model
self.llm = PaLM()
self.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en")
# Set up service context
self.service_context = ServiceContext.from_defaults(llm=self.llm, embed_model=self.embed_model, chunk_size=800, chunk_overlap=20)
# Create a VectorStoreIndex from the documents
self.index = VectorStoreIndex.from_documents(self.documents, service_context=self.service_context)
# Persist the index to storage
self.index.storage_context.persist()
# Create a query engine
self.query_engine = self.index.as_chat_engine()
def query_response(self, query):
# Perform a query
response = self.query_engine.chat(query)
return response