
Se ha realizado una aplicación RAG basada en Langchain que funciona utilizando Vector Increddings y Google Gemini Pro LLM Model.
export GOOGLE_API_KEY= " your api key "Se ha utilizado UnstructureDExCelloader en Langchain. Cargadores dedocumentos que se utiliza para cargar datos de hoja de cálculo de Excel en documentos.
El modelo Google Gemini Pro se ha utilizado para completar el chat contextual.
llm = ChatGoogleGenerativeAI ( model = "gemini-pro" , google_api_key = os . environ [ "GOOGLE_API_KEY" ])
embeddings = GoogleGenerativeAIEmbeddings ( model = "models/embedding-001" )La tienda vectorial FAISS (Facebook AI Simility Search) se ha utilizado para crear y almacenar integridades semánticas para los documentos cargados. La tienda Vector se puede consultar más tarde con una búsqueda de similitud para obtener información más relevante.
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 })PractTeMplate se ha utilizado desde Langchain para crear indicaciones eficientes que luego se transmitirían al modelo. El aviso también contiene variables de entrada que indican al modelo que el usuario pasará alguna información.
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 cadena de retreival se ha utilizado para aprobar documentos/incrustaciones al modelo como contexto para la generación aumentada de retreival.
combine_docs_chain = create_stuff_documents_chain ( llm , prompt )
retrieval_chain = create_retrieval_chain ( retriever , combine_docs_chain )