
Une application RAG basée sur Langchain a été créée qui fonctionne en utilisant des incorporations vectorielles et du modèle Google Gemini Pro LLM.
export GOOGLE_API_KEY= " your api key "UnstructuredExcelloader a été utilisé à partir de Langchain.Document-chargeurs qui est utilisé pour charger des données de feuille de calcul Excel dans des documents.
Le modèle Google Gemini Pro a été utilisé pour obtenir l'achèvement du chat contextuel.
llm = ChatGoogleGenerativeAI ( model = "gemini-pro" , google_api_key = os . environ [ "GOOGLE_API_KEY" ])
embeddings = GoogleGenerativeAIEmbeddings ( model = "models/embedding-001" )Le magasin vectoriel FAISS (Facebook AI Simility Search) a été utilisé pour créer et stocker des incorporations sémantiques pour les documents chargés. Le magasin vectoriel peut ensuite être interrogé plus tard avec une recherche de similitude pour obtenir les informations les plus pertinentes.
vectordb = FAISS . from_documents ( documents = docs , embedding = embeddings )
# save db as pickle file
with open ( "vectorstore.pkl" , "wb" ) as f :
pickle . dump ( vectordb , f )
#load db from pickle file
with open ( "vectorstore.pkl" , "rb" ) as f :
my_vector_database = pickle . load ( f )
# get 5 most relevant similar results
retriever = my_vector_database . as_retriever ( search_kwargs = { "k" : 5 })PromptTemplate a été utilisée à partir de Langchain pour élaborer des invites efficaces qui seraient plus tard transmises au modèle. L'invite contient également des variables d'entrée qui indiquent au modèle que certaines informations seront transmises par l'utilisateur.
template = """
You are a very helpful AI assistant.
You answer every question and apologize polietly if you dont know the answer.
The context contains information about a person,
title of their thesis,
the abstract of their thesis
and a link to their thesis.
Your task is to answer based on that information.
context: {context}
input: {input}
answer:
"""
prompt = PromptTemplate . from_template ( template )La chaîne de rétréivale a été utilisée pour transmettre des documents / intégres au modèle comme contexte pour la génération augmentée de rétréivale.
combine_docs_chain = create_stuff_documents_chain ( llm , prompt )
retrieval_chain = create_retrieval_chain ( retriever , combine_docs_chain )