
Es wurde eine Langchain -basierte Rag -App erstellt, die mit Vektor -Einbettungen und Google Gemini Pro LLM -Modell funktioniert.
export GOOGLE_API_KEY= " your api key "UnsterturedExcelloader wurde von Langchain.dokumentladern verwendet, mit denen Excel-Tabellenkalkulationsdaten in Dokumente geladen werden.
Das Google Gemini Pro -Modell wurde verwendet, um einen Kontext -Chat -Abschluss zu erhalten.
llm = ChatGoogleGenerativeAI ( model = "gemini-pro" , google_api_key = os . environ [ "GOOGLE_API_KEY" ])
embeddings = GoogleGenerativeAIEmbeddings ( model = "models/embedding-001" )Der Vector Store (Facebook AI Ähnlichkeitssuche) wurde verwendet, um semantische Einbettungen für die geladenen Dokumente zu erstellen und zu speichern. Der Vector Store kann später mit einer Ähnlichkeitssuche befragt werden, um die relevantesten Informationen zu erhalten.
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 wurde von Langchain verwendet, um effiziente Eingabeaufforderungen zu erstellen, die später an das Modell weitergegeben werden. Die Eingabeaufforderung enthält auch Eingabevariablen, die dem Modell anzeigen, dass einige Informationen vom Benutzer übergeben werden.
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 )Die Relivale -Kette wurde verwendet, um Dokumente/Einbettungen an das Modell als Kontext für die längere Augmented -Generation weiterzugeben.
combine_docs_chain = create_stuff_documents_chain ( llm , prompt )
retrieval_chain = create_retrieval_chain ( retriever , combine_docs_chain )